MI_DmaClear*

構文

#include <iris/mi.h>

void MI_DmaClear32( u32 dmaNo, void* dest, u32 size );
void MI_DmaClear16( u32 dmaNo, void* dest, u32 size );

void MI_DmaClear32Async( u32 dmaNo, void* dest, u32 size;
           MIDmaCallback callback, void* arg );
void MI_DmaClear16Async( u32 dmaNo, void* dest, u32 size,
           MIDmaCallback callback, void* arg );

引数

dmaNo 使用DMAチャンネル
dest クリア先アドレス
size クリアサイズ
callback DMA終了時のコールバック
arg DMA終了時のコールバック引数

返り値

なし。

説明

DMAを用いてメモリをゼロクリアします。

MI_DmaClear16() , MI_DmaClear16Async() は 16ビット単位でメモリを0で埋めます。クリア先アドレスは2バイトアラインメントする必要があります。
MI_DmaClear32() , MI_DmaClear32Async() は 32ビット単位でメモリを0で埋めます。クリア先アドレスは4バイトアラインメントする必要があります。

MI_DmaClear16(), MI_DmaClear32() はDMAの終了を関数内で待ちます。
MI_DmaClear16Async(), MI_DmaClear32Async() は、DMA終了時にコールバックを呼びます。コールバックは MIDmaCallback 型(void* 引数1つを取る void 型関数)です。

内部動作

IOレジスタのDMAnソースレジスタ(0x40000B0 + 12n)、DMAnデスティネーションレジスタ(0x40000B4 + 12n)、DMAnコントロールレジスタ(0x40000B8 + 12n)を使用します。( n は 使用するDMAチャンネルです。)
また、クリアのために HW_DMA_CLEAR_DATA_BUF 領域を使用しています。これは、TEG では Shared Memory に取られていますが、TSではIOレジスタにマッピングされます。

参照

MI_DmaCopy*, MI_DmaFill*, MI_CpuClear*

履歴

2003/12/01 初版