MDD フォーマットの例 - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発 (UG1400)

Document ID
UG1400
Release Date
2022-04-26
Version
2022.1 日本語

このセクションでは、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 オプションは、レベル 0 uartlite ドライバー用にコピーするファイルを示します。

BEGIN INTERFACE stdin

BEGIN INTERFACE は、ドライバーがサポートするインターフェイスを定義します。インターフェイス名は stdin です。

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

インターフェイスには、標準関数のリストが含まれます。インターフェイスを定義するドライバーには、標準関数のリストの値が含まれている必要があります。また、すべての関数プロトタイプを定義するヘッダー ファイルも指定する必要があります。

PROPERTY は、BEGIN コンストラクトで定義されているコンストラクトに関連付けられているプロパティを定義します。ヘッダーは、stdin インターフェイスで定義された xuartlite_l.h を値として含むプロパティです。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 文で使用されたコンストラクト名に使用されます。ここでは、ENDBLOCK および DRIVER コンストラクトと使用して、BLOCK および DRIVER コンストラクトの終了を示しています。

例: Tcl ファイル

次に、前のセクションで説明した uartlite.mdd ファイルに対応する uartlite.tcl ファイルを示します。ドライバーの DRC の実行中、uartlite ドライバーに対して uartlite_drc プロシージャが呼び出されます。generate ルーチンは、MSS ファイルのドライバー定義セグメントに基づいて、ヘッダー ファイルに定数および uartlite ドライバーの C ファイルを生成します。

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"
}