構文
int X<DUT>_Initialize(X<DUT> *InstancePtr, uintptr BaseAddress);
int X<DUT>_Initialize(X<DUT> *InstancePtr, u16 DeviceId);
int X<DUT>_Initialize(X<DUT> *InstancePtr, const char* InstanceName);
説明
int X<DUT>_Initialize(X<DUT>
*InstancePtr, uintptr BaseAddress): スタンドアロン システムで使用する場合に、デバイスの BaseAddress を初期化します。この API は InstancePtr に適切な値を書き込みます。この後、ほかの API で使用できます。
注記:
DeviceId は、ドライバー コンフィギュレーション構造体には含まれなくなりました。ドライバー インスタンスの識別には BaseAddress が使用されるようになっています。DeviceId は xparameters.h ファイルにも入力されません。従来のクラシック Vitis または Vitis HLS ツールで開発されたこれらのドライバーを使用するソフトウェア アプリケーションは、次の例に示すように、#ifdef
SDT でこの変更を反映するように更新する必要があります。#ifndef SDT
#define GPIO_EXAMPLE_DEVICE_ID XPAR_GPIO_0_DEVICE_ID
#else
#define XGPIO_AXI_BASEADDRESS XPAR_XGPIO_0_BASEADDR
#endif
int X<DUT>_Initialize(X<DUT>
*InstancePtr, u16 DeviceId): スタンドアロン システムで使用する場合に、デバイスを初期化します。この API は InstancePtr に適切な値を書き込みます。この後、ほかの API で使用できます。AMDでは、この API を呼び出してデバイスを初期化することをお勧めします。ただし、システムで MMU が使用されている場合は、X<DUT>_CfgInitialize を使用してください。
int X<DUT>_Initialize(X<DUT>
*InstancePtr, const char* InstanceName): Linux システムで使用する場合に、指定した uio デバイスを初期化します。最大で 5 つのメモリ マップを作成して、sysfs で uio デバイス情報を使用して mmap でスレーブ ベース アドレスを割り当てます。
さまざまな引数が次のように定義されています。
-
InstancePtr - デバイス インスタンスへのポインター。
-
DeviceId - xparameters.h で定義されたデバイス ID。
-
BaseAddress - xparameters.h で定義されたベース アドレス。
-
InstanceName -
uioデバイスの名前。
戻り値
問題がなかった場合は XST_SUCCESS、それ以外の場合はエラーあり。