インテルのみ表示可能 — GUID: ijm1642636262029
Ixiasoft
インテルのみ表示可能 — GUID: ijm1642636262029
Ixiasoft
7.9.1. DMA 送信チャネル
DMA 送信デバイス dma_0 のファイルハンドルの取得
#include <stddef.h> #include "sys/alt_dma.h" int main(void) { alt_dma_txchan tx; tx = alt_dma_txchan_open("/dev/dma_0"); if (tx == NULL) { /* Error */ } else { /* Success */ } return 0; }
このハンドルを使用して、alt_dma_txchan_send() を使って送信要求をポストすることができます。プロトタイプは次のとおりです。
typedef void(alt_txchan_done)(void * handle); int alt_dma_txchan_send(alt_dma_txchan dma, const void * from, alt_u32 length, alt_txchan_done * done, void * handle);
alt_dma_txchan_send() を呼び出すと、送信要求がチャネル dma にポストされます。引数 length は送信するデータのバイト数を指定し、引数 from は送信元アドレスを指定します。この関数は、完全な DMA トランザクションが完了する前に戻ります。戻り値は、要求が正常にキューに入れられたかどうかを示します。負の戻り値は、要求が失敗したことを示します。トランザクションが完了すると、ユーザーが提供する関数 done が引数 handle を使用して呼び出され、通知が行われます。
DMA 送信チャネルを操作する目的で、alt_dma_txchan_space() および alt_dma_txchan_ioctl() の 2 つの関数が追加で提供されています。alt_dma_txchan_space() 関数は、デバイスのキューに入れることができる追加の送信要求の数を返します。alt_dma_txchan_ioctl() 関数は、送信デバイスのデバイス固有の操作を実行します。