MLD 文件中使用的关键字如下所述:
BEGIN
BEGIN
关键字表示以下任一操作开始:os
、library
、driver
、block
、category
、interface
和 array
。
END
END
关键字表示定义块结束。
PSF_VERSION
指定库的 PSF 版本。
DRC
指定 DRC 函数名称。这是全局 DRC 函数,由 Vitis IDE 配置工具或命令行工具来调用。当您输入所有参数,并且 MLD 或 MDD 写程序可验证使用给定参数可以生成有效的操作系统、库或驱动程序时,就会调用一次该 DRC 函数。
选项
指定紧接在 option
关键字之后的名称是一个 Vitis IDE 工具的选项。
OS
指定操作系统类型。如不指定,则假定操作系统为独立类型的操作系统。
COPYFILES
指定要为操作系统、库或驱动程序复制的文件。如果使用 ALL
,那么该工具会复制所有操作系统、库或驱动程序文件。
DEPENDS
指定在构建操作系统或库之前需要编译的目录列表。
SUPPORTED_PERIPHERALS
指定操作系统支持的外设列表。该选项的值可以指定为列表或者正则表达式。例如:
option supported_peripherals = (microblaze)
指示操作系统支持所有版本的 MicroBlaze。可使用正则表达式来指定外设和版本。正则表达式 (RE) 构造如下:
- 单字符 RE:
- 与自身匹配的任意字符,不得使用特殊字符(待定义)。
- 反斜杠(后接任意特殊字符)即表示与文字字符本身相匹配。即,对特殊字符进行“转义”。
- 特殊字符包括:+ * ? 。[ ] ^ $
- 句点 (.) 与除换行外的任意字符相匹配。例如,.umpty 与 Humpty 和 Dumpty 均匹配。
- 一组以括号 ([]) 括起的字符表示一个单字符 RE,与该组合中的任意字符相匹配。例如,[akm] 与单个“a”、“k”或“m”相匹配。
- 可使用短划线来表示字符范围。例如,[a-z] 与任意小写字母相匹配。但如果字符集的第一个字符为插入符号 (^),则表示 RE 与除该字符集内的字符之外的任意字符相匹配。它与空字符串不匹配。例如:[^akm] 与除“a”、“k”或“m”之外的任意字符相匹配。如果插入符号并非字符集的首个字符,则会丢失其特殊意义。
- 多字符 RE:
- 单字符 RE 后接星号 (*) 表示与此 RE 出现 0(零)次或多次相匹配。因此,[a-z]* 与无小写字母或多个小写字符相匹配。
- 单字符 RE 后接星号 (+) 表示与此 RE 出现 1 次或多次相匹配。因此,[a-z]+ 与 1 个小写字母或多个小写字符相匹配。
- 问号 (?) 表示可选元素。在字符串中,前置 RE 最多只可能出现零次或一次。因此,xy?z 匹配 xyz 或 xz。
- RE 并置表示 RE 与字符串的对应并置相匹配。例如,[A-Z][a-z]* 与任意大写词相匹配。
- 例如,以下 RE 与 axidma 版本相匹配:
option supported_peripherals = (axi_dma_v[3-9]_[0-9][0-9]_[a-z] axi_dma_v[3-9]_[0-9]);
LIBRARY_STATE
指定库的状态。以下是可分配给 LIBRARY_STATE 的值列表:
- ACTIVE
- 处于活动状态的库。默认情况下,LIBRARY_STATE 的值为 ACTIVE。
- DEPRECATED
- 该库已不推荐使用
- OBSOLETE
- 该库已弃用,任何工具都无法识别该库。工具在已弃用的库上输出错误,应改用新的库。
APP_COMPILER_FLAGS
该选项指定使用此库时,必须添加到应用的编译器标志。例如:
option APP_COMPILER_FLAGS = “-D MYLIBRARY”
Vitis IDE 工具可以使用该选项值来为应用自动设置编译器标志。
APP_LINKER_FLAGS
该选项指定使用特定库或操作系统时,必须添加到应用的连接器标志。例如:
option APP_LINKER_FLAGS = “-lxilkernel”
Vitis IDE 工具可以使用该值来为应用自动设置连接器标志。
BSP
指定在 MLD 文件中可提供的布尔值关键字选项,用于识别何时将操作系统组件作为第三方 BSP 来处理。例如:
option BSP = true;
这表示 Vitis 工具将把该操作系统组件作为板级支持包来提供。如果设为 false,那么该组件将作为本机嵌入式软件平台来处理。
OS_STATE
- ACTIVE
- 表示这是处于活动状态的操作系统。默认情况下,OS_STATE 的值为 ACTIVE。
- DEPRECATED
- 表示该操作系统已不推荐使用。
- OBSOLETE
- 该操作系统已弃用,任何工具都无法识别。工具在已弃用的操作系统上输出错误,必须指定新的操作系统。
- OS_TYPE
- 指定操作系统类型。该值与 MDD 驱动程序文件的 SUPPORTED_OS_TYPES 相匹配,用于分配驱动程序。默认值为 standalone。
- REQUIRES_INTERFACE
- 指定必须由系统内的其他操作系统、库或驱动程序提供的接口。
- REQUIRES_OS
- 指定操作系统列表,指定的库将适用于该列表中的操作系统。例如:
option REQUIRES_OS = (standalone xilkernel_v4_[0-9][0-9])
Vitis IDE 工具可使用该选项值来判定为给定操作系统提供哪些库。列表中的值可以是正则表达式,如下示例所示。
注释: 该选项仅限用于库。 - HELP
- 指定 HELP 文件,此文件用于描述操作系统、库或驱动程序。
- DEP
- 指定处理实体前必须满足的条件。例如,如果要包含的参数从属于另一个参数(定义为 DEP 条件,此处 DEP 表示从属),就应满足 DEP 条件。仅支持如下格式的条件:operand1 OP operand2。
- INTERFACE
- 指定由该操作系统、库或驱动程序实现的接口。它描述了库/驱动程序所使用的接口函数和头文件。
BEGIN INTERFACE <interface name> option DEP=;<list of dependencies>; PROPERTY HEADER=<name of header file where the function is declared>; FUNCTION NAME=<name of the interface function>, VALUE=<function name of library/driver implementation> ; END INTERFACE
- HEADER
- 指定 HEADER 文件,此文件中包含的接口函数将予以定义。
- FUNCTION
- 指定由接口实现的 FUNCTION。这是名称/值对,其中名称即接口函数名称,值则是操作系统、库或驱动程序实现的函数的名称。
- CATEGORY
- 定义无条件块。此块将根据类别的默认值包含在该类别内,或者如果此块包含在 MSS 文件中,则也会包含在该类别内。
BEGIN CATEGORY <category name> PARAM name = <category name>, DESC=<param description>, TYPE=<category type>, DEFAULT=<default>, GUI_PERMIT=<value>, DEP = <condition> option DEPENDS=<list of dependencies>, DRC=<drc name>, HELP=<help file>; <parameters or categories description> END CATEGORY
不支持通过指定类别的语法来嵌套这些类别。在 MSS 文件中,通过使用布尔值
TRUE
将类别名称指定为参数来选中该类别。类别必须包含带有类别名称的 PARAM。 - PARAM
- 对于大部分语句,MLD 文件采用简单的 <name = value> 格式。在每个
NAME
和VALUE
对之前,都需要 PARAM 关键字。将值分配给参数的格式为param name = <name>, default = value
。PARAM
关键字用于指定在 MSS 文件中可以覆盖该参数。 - PROPERTY
- 指定使用
BEGIN
语句定义的实体的各项属性。 - NAME
- 指定定义该库的实体的名称。(示例:
param
和property
。)搭配选项还可用于指定库的名称。 - VERSION
- 指定库的版本。
- DESC
- 描述定义该库的实体。(示例:
param
和property
。) - TYPE
- 指定定义该库的实体的类型。(示例:param)支持以下类型:
- bool
- 布尔值(true 或 false)
- int
- integer
- string
- 引号 " " 中的字符串值
- enum
- 参数可取的值的列表
- library
- 指定构建库/驱动程序所需的其他库
- peripheral_instance
- 指定构建库所需的其他硬件驱动程序
- DEFAULT
- 指定定义该库的实体的默认值。
- GUI_PERMIT
- 指定用于修改值的权限。存在以下权限:
- NONE
- 完全不允许修改值。
- ADVANCED_USER
- 所有人都能修改值。默认情况下,Vitis IDE 不显示该值。仅对 Vitis IDE 中的高级选项才显示该选项。
- ALL_USERS
- 所有人都能修改值。默认情况下,Vitis IDE 显示该值。这是适用于所有值的默认值。如果 GUI_PERMIT = NONE,那么该类别始终处于活动状态。
- ARRAY
- ARRAY 可包含任意数量的 PARAM,且只能包含 PARAM。阵列不能包含
CATEGORY
作为阵列元素字段之一。阵列大小可以定义为阵列属性之一。阵列的默认属性中指定默认值会使其大小属性初始化为所含值的数量。如未定义大小 (size) 属性,那么会先创建一个大小属性,然后再使用默认元素数量来对其进行初始化。阵列中的每个元素都能包含一个默认值。如果大小定义为整数值,则会创建一个阵列,它由大小元素组成,且每个元素的值将是每个参数的默认值。BEGIN ARRAY <array name> PROPERTY desc = <array description> ; PROPERTY size = <size of the array>; PROPERTY default = <List of Values for each element based on the size of the array> # array field description as parameters PARAM name = <name of parameter>, desc = "description of param”, type = <type of param>, default = <default value> ..... END ARRAY