MI_AllocWram*

構文

#include <twl/mi.h>
 
u32 MI_AllocWram( MIWramPos wram, MIWramSize size, MIWramProc proc )
u32 MI_AllocWramSlot( MIWramPos wram, int slot, MIWramSize size, MIWramProc proc )
(define)
#define MI_AllocWram_A( size, proc );
#define MI_AllocWram_B( size, proc );
#define MI_AllocWram_C( size, proc );
#define MI_AllocWramSlot_A( slot, size, proc );
#define MI_AllocWramSlot_B( slot,.size, proc );
#define MI_AllocWramSlot_C( slot, size, proc );

引数

wram 確保する対象のWRAM
slot スロット番号
size 確保する領域の大きさ
proc 使用するプロセッサ

返り値

確保できたときは、その先頭アドレスを返します。
確保できなかったときは MI_WRAM_ALLOC_FAIL (0 に define されています) を返します。

説明

WRAM から領域を確保します。

wram は対象となる WRAM で、MIWramPos 型です。MI_WRAM_A, MI_WRAM_B, MI_WRAM_C のいずれかとなります。

size は、確保しようとする領域の大きさです。MIWramSize 型で、MI_WRAM_SIZE_xxxKB となります。xxx には 0 〜 256 の値が入りますが、WRAM-A の場合は確保できる大きさは64KB単位で、WRAM-B、WRAM-C の場合は 32KB 単位です。

proc は、その確保する領域をどこが使用するかを表します。MIWramProc 型で、MI_WRAM_ARM9, MI_WRAM_ARM7, MI_WRAM_DSP のいずれかとなります。

MI_AllocWram_AMI_AllocWram( MI_WRAM_A, ... ) の define です。
MI_AllocWram_BMI_AllocWram( MI_WRAM_B, ... ) の define です。
MI_AllocWram_CMI_AllocWram( MI_WRAM_C, ... ) の define です。
MI_AllocWramSlot_AMI_AllocWramSlot( MI_WRAM_A, ... ) の define です。
MI_AllocWramSlot_BMI_AllocWramSlot( MI_WRAM_B, ... ) の define です。
MI_AllocWramSlot_CMI_AllocWramSlot( MI_WRAM_C, ... ) の define です。

MI_AllocWram*() によって確保される領域は、

 ・その時点で使用されていない
 ・指定のプロセッサに予約されているか、どこからも予約されていない
 ・指定のサイズ分、連続領域を確保することが出来る

を満たしている中で、下位アドレス側から確保されます。

MI_AllocWramSlot*() の場合は、確保する場所を指定することが出来ます。ただしその領域が取得条件を満たさなければ、たとえそれ以外で確保できる場所があっても失敗となります。

(例) 以下のように WRAM-C が予約されている場合を考えます。但しまだどの領域も確保はされていないとします。



どこもまだ確保していない場合、
MI_AllocWram_C( MI_WRAM_SIZE_64KB, MI_WRAM_ARM7 )  
→ slot2 と slot3 を確保します。返り値は 0x03950000 です。

どこもまだ確保していない場合、
MI_AllocWram_C( MI_WRAM_SIZE_64KB, MI_WRAM_DSP )
→ slot3 と slot4 を確保します。返り値は 0x03958000 です。

どこもまだ確保していない場合、
MI_AllocWram_C( MI_WRAM_SIZE_96KB, MI_WRAM_ARM7 )
→ 確保できません。返り値は MI_WRAM_ALLOC_FAIL (=0) です。

参照

概要(ワークRAM)MI関連の定数

履歴

2007/08/22 初版