# CARD_ReadRom

## 構文

  `#include <nitro/card.h>`
  `void CARD_ReadRom(u32 dma, const void *src, void *dst, u32 len);`

## 引数

dma | 転送に使用するDMAチャンネルを0からMI_DMA_MAX_NUMの範囲で指定します。 TWLモードで動作していれば、新規DMAチャンネルを(MI_DMA_USING_NEW+0)から(MI_DMA_USING_NEW+MI_DMA_MAX_NUM)の範囲で指定することも可能です。 範囲外のチャンネルまたは明示的にMI_DMA_NOT_USEを指定するとDMA転送は使用せずCPUによって直接処理されます。
src | 転送元の CARD ROM アドレス
dst | 転送先のメモリアドレス
len | 読み出すデータのバイト長

## 返り値

なし。

## 説明

ROM の配置されたデバイスからデータを同期的に読み込みます。
この関数は、CARD_ReadRomAsync( )をコールバックの指定なしで呼び出してその完了を無条件に待つことと等価です。

関数の内部動作に関してはCARD_ReadRomAsync( )の説明を参照ください。

## 注意

- この関数を使用する場合、事前にCARD_LockRom( )を呼び出してアクセスバスをロックしている必要があります。
- この関数で有効なDMAチャンネルを指定した場合、転送が完了するまでこのDMAチャンネルを使用できません。
- カードアクセスの転送元はIOレジスタなので、TWLモード動作時でかつ`SCFG_IsDmacFixed( )`がTRUEを返す状況でない限りDMAチャンネル0を指定することはできません。
- この関数は内部で割り込みを使用しますので、割り込みを禁止にしたまま待ち続けると処理が完了しないという点に注意してください。

## 参照

`CARD_LockRom, CARD_ReadRomAsync`

## 履歴

2008/11/19 DMAチャンネルの指定範囲について動作モードとの関連を追記
2008/01/24 DMAチャンネルの指定範囲について追記
2005/04/28 DMAチャンネル0が指定できない旨を追記
2004/11/02 引数名をヘッダファイルと同一に訂正
2004/07/13 DMAの使用における注意の追加
2004/07/09 関数形式の変更による記述の修正
2004/07/05 初版