# MI_VBlankNDmaCopy*

## 構文

  `#include <twl/mi.h>`
  `void MI_VBlankNDmaCopy( u32 ndmaNo,`
  `const void *src,
  void *dest,`
  `u32 size );`
  `void MI_VBlankNDmaCopyAsync( u32 ndmaNo,`
  `const void *src,
  void *dest,`
  `u32 size,
  MINDmaCallback calback,
  void* arg );`

## 引数

ndmaNo | 使用DMAチャンネル
src | 転送元アドレス
dest | 転送先アドレス
size | 転送サイズ
callback | DMA終了時のコールバック
arg | DMA終了時のコールバック引数

## 返り値

なし。

## 説明

新規DMAを用いてVブランクコピーを行います。Vブランクが発生したときにDMAが起動します。

新規DMAを用いてワード(4byte)単位でコピーを行います。転送元アドレス src、転送先アドレスdest は4バイトアラインメントする必要があります。転送サイズ size も4の倍数である必要があります。

`MI_VBlankNDmaCopy()` は Vブランク発生時にDMAを起動して終了します。`MI_VBlankNDmaCopyAsync()` は、Vブランク発生時にDMAを起動して、DMA終了時にコールバック callback を呼びます。コールバックは `MINDmaCallback`型 (void*引数１つを取る void型関数 ) です。callback はシステムの DMA割り込みハンドラ内から呼び出されますので、割り込み禁止状態で呼び出されます。

Async型のAPIの機能を引き出すにはその使用法を十分に理解する必要があります。

## 内部動作

新規DMAレジスタにアクセスします。

## 参照

`MI_NDmaCopy
`

## 履歴

2007/10/04 初版