MDD 文件中使用的关键字如下所述:
Begin
BEGIN 关键字表示以下任一对象开始:库、驱动程序、块、类别或接口。
END
END 关键字表示定义块结束。
PSF_VERSION
指定库的 PSF 版本。
DRC
指定 DRC 函数名称。这是全局 DRC 函数,由 Vitis IDE 配置工具或命令行工具来调用。当您输入所有参数,并且 MLD 或 MDD 写程序可验证使用给定参数可以生成有效的库或驱动程序时,就会调用一次该 DRC 函数。
option
指定紧接在关键字 option 之后的名称是一个工具选项。以下五个
选项受支持:COPYFILES、DEPENDS、SUPPORTED_PERIPHERALS 和
DRIVER_STATE。
SUPPORTED_OS_TYPES
指定受支持的操作系统类型列表。如不指定,则假定驱动程序为独立驱动程序。
COPYFILES
指定要为驱动程序复制的文件列表。如果指定的值为 ALL,那么该工具会复制所有驱动程序文件。
DEPENDS
指定目录列表,驱动程序依赖其中的目录来执行编译。
SUPPORTED_PERIPHERALS
指定驱动程序支持的外设列表。该选项的值可以指定为列表或者正则表达式。以下示例指示驱动程序支持 opb_jtag_uart 的所有版本和 opb_uartlte_v1_00_b 版本:
option supported_peripherals = (xps_uartlite_v1_0, xps_uart16550)
可使用正则表达式来指定外设和版本。正则表达式 (RE) 构造如下所述。
单字符 RE
- 与自身匹配的任意字符,不得使用特殊字符(待定义)。
- 反斜杠(后接任意特殊字符)即表示与文字字符本身相匹配。即,对特殊字符进行转义。
- 特殊字符包括:+ * ? 。[ ] ^ $
- 句点与除换行外的任意字符相匹配。例如,.umpty 与 Humpty 和 Dumpty 均匹配。
- 一组以括号 ([]) 括起的字符表示一个单字符 RE,与该组合中的任意字符相匹配。例如,[akm] 与 a、k 或 m 匹配。可使用短划线来表示字符范围。例如,[a-z] 与任意小写字母相匹配。
多字符 RE
- 单字符 RE 后接星号 (*) 表示与此 RE 出现 0(零)次或多次相匹配。因此,[a-z]* 与无小写字母或多个小写字符相匹配。
- 单字符 RE 后接星号 (+) 表示与此 RE 出现 1 次或多次相匹配。因此,[a-z]+ 与 1 个小写字母或多个小写字符相匹配。
- 问号 (?) 表示可选元素。在字符串中,前置 RE 可能不出现或者只能出现一次。例如,xy?z 匹配 xyz 或 xz。
- RE 并置表示 RE 与字符串的对应并置相匹配。例如,[A-Z][a-z]* 与任意大写词相匹配。
以下示例与任意版本的 xps_uartlite、xps_uart16550 和 mdm 相匹配。
option supported_peripherals = (xps_uartlite_v[0-9]+_[1-9][0-9]_[a-z]
xps_uart16550 mdm);
DRIVER_STATE
指定驱动程序的状态。以下是可分配给 DRIVER_STATE 的值列表:
- ACTIVE
- 表示这是处于活动状态的驱动程序。默认情况下,DRIVER_STATE 的值为 ACTIVE。
- DEPRECATED
- 表示此驱动程序已不推荐使用,按计划将被移除。
- OBSOLETE
- 该驱动程序已弃用,任何工具都无法识别。工具在已弃用的驱动程序上输出错误,应改为使用新的驱动程序。
REQUIRES_INTERFACE
指定必须由系统内的其他库或驱动程序提供的接口。
HELP
指定 help 文件,此文件用于描述库或驱动程序。
DEP
指定处理实体前需要满足的条件。例如,要进入 BLOCK,应满足 DEP 条件。支持如下格式:operand1 OP operand2。
BLOCK
指定满足 DEP 条件时,要进入的块。不支持嵌套块。
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 interface function>, VALUE=<function name
of library/driver implementation> ;
END INTERFACE
HEADER
指定头文件,此文件中包含的接口函数将予以定义。
FUNCTION
指定由接口实现的函数。这是名称/值对,其中名称即接口函数名称,值则是库或驱动程序实现的函数的名称。
PARAM
通常,对于大部分语句,MLD/MDD 文件都采用 name = value 格式。每个此类 NAME, VALUE 对之前都需要 PARAM 关键字。将值分配给参数的格式为 param name = <name>, default= value。PARAM 关键字用于指定在 MSS 文件中可以覆盖该参数。
DTGPARAM
DTGPARAM 关键字专用于特定于设备树的参数,这些参数均可配置。如果驱动程序需要在 Tool DTG 生成的 DTS 文件中转储任意参数,则会定义这些 DTGPARAM。
PROPERTY
指定使用 BEGIN 语句定义的实体的各种属性。
NAME
指定定义该驱动程序的实体的名称(例如,PARAM 或 PROPERTY)。搭配选项还可用于指定驱动程序的名称。
VERSION
指定驱动程序的版本。
DESC
描述定义该驱动程序的实体(例如:PARAM 或 PROPERTY)。
TYPE
指定定义该驱动程序的实体的类型(例如:PARAM)。支持以下类型:
-
bool:布尔值(true 或 false)
int:整数
string:引号 " " 中的字符串值。
enum:该参数可取的值的列表。
library:指定构建库或驱动程序所需的其他库。
peripheral_instance:指定构建库或驱动程序所需的其他硬件驱动程序。可使用正则表达式来指定外设实例。请参阅 MLD 关键字 中的 SUPPORTED_PERIPHERALS 以获取有关正则表达式的更多详细信息。
DEFAULT
指定定义该库的实体的默认值。
GUI_PERMIT
指定用于修改值的权限。存在以下权限:
- NONE
- 完全不允许修改值。
- ADVANCED_USER
- 所有人都能修改值。默认情况下,Vitis IDE 不显示该值。该选项仅在 Vitis IDE 中作为高级选项显示。
- ALL_USERS
- 所有人都能修改值。默认情况下,Vitis IDE 显示该值。这是适用于所有值的默认值。如果 GUI_PERMIT = NONE,那么该类别始终处于活动状态。