MDD 格式示例 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文

本节通过一个 MDD 文件示例及其对应的 Tcl 文件来详解 MDD 格式。

MDD 文件示例

以下是 uartlite 驱动程序的 MDD 文件示例。

option psf_version = 2.1;

option 是该工具识别的关键字。option 关键字后的选项名称是发送给工具的一条指令,以指示工具执行特定操作。此处 MDD 文件的 psf_version 定义为 2.1。这是唯一可在 BEGIN DRIVER 构造之前发生的选项。

BEGIN DRIVER uartlite

BEGIN DRIVER 构造用于定义名为 uartlite 的驱动程序的起始位置。

option supported_peripherals = (mdm axi_uartlite);
option driver_state = ACTIVE;
option copyfiles = all;
option VERSION = 3.0;
option NAME = uartlite;

NAME 选项用于指示驱动程序的名称。VERSION 选项用于指示驱动程序的版本。COPYFILES 选项用于指示要为“level”为 0 的 uartlite 驱动程序复制的文件。

BEGIN INTERFACE stdin

BEGIN INTERFACE 用于定义此驱动程序支持的接口。此接口名为 stdin

PROPERTY header = xuartlite_l.h;
FUNCTION name = inbyte, value = XUartLite_RecvByte;
END INTERFACE

每个接口都包含一份标准函数列表。定义接口的驱动程序应包含标准函数列表的对应值。它还必须指定头文件以供在其中定义所有函数原型。

PROPERTY 用于定义与 BEGIN 构造中定义的构造相关联的属性。头文件是值为 xuartlite_l.h 的属性,由 stdin 接口来定义。FUNCTION 用于定义接口所支持的函数。stdin 接口的 inbyte 函数值为 XUartLite_RecvByte。此函数在头文件 xuartlite_l.h 中进行定义。

BEGIN INTERFACE stdout
PROPERTY header = xuartlite_l.h;
FUNCTION name = outbyte, value = XUartLite_SendByte;
END INTERFACE
BEGIN INTERFACE stdio
PROPERTY header = xuartlite_l.h;
FUNCTION name = inbyte, value = XUartLite_RecvByte;
FUNCTION name = outbyte, value = XUartLite_SendByte;
END INTERFACE

END 搭配 BEGIN 语句中所使用的构造名称一起使用。此处 END 搭配 BLOCKDRIVER 构造一起用于指示每个 BLOCKDRIVER 构造的结束位置。

示例:Tcl 文件

以下 uartlite.tcl 文件对应于上一节中所描述的 uartlite.mdd 文件。为 uartlite 驱动程序运行 DRC 时,应为该驱动程序调用“uartlite_drc”过程。generate 例程会根据 MSS 文件中的驱动程序定义段,在头文件或 c 语言文件中为 uartlite 驱动程序生成常量。

proc generate {drv_handle} {
::hsi::utils::define_include_file $drv_handle "xparameters.h"
"XUartLite" "NUM_INSTANCES" "C_BASEADDR"
"C_HIGHADDR" "DEVICE_ID" "C_BAUDRATE" "C_USE_PARITY" "C_ODD_PARITY"
"C_DATA_BITS"
::hsi::utils::define_config_file $drv_handle "xuartlite_g.c"
"XUartLite" "DEVICE_ID" "C_BASEADDR"
"C_BAUDRATE" "C_USE_PARITY" "C_ODD_PARITY" "C_DATA_BITS"
::hsi::utils::define_canonical_xpars $drv_handle "xparameters.h"
"UartLite" "DEVICE_ID" "C_BASEADDR"
"C_HIGHADDR" "C_BAUDRATE" "C_USE_PARITY" "C_ODD_PARITY" "C_DATA_BITS"
}