このセクションでは、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
文で使用されたコンストラクト名に使用されます。ここでは、END
を BLOCK
および 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"
}