RAM領域セクションの初期値コピーとゼロ・クリアを行います。
[所属]
標準ライブラリ
[指定形式]
#include <_h_c_lib.h>
void _INITSCT_RH(void * datatbl_start, void * datatbl_end, void * bsstbl_start, void * bsstbl_end)
[引数/戻り値]
|
|
datatbl_start :
data属性セクション初期化テーブルの先頭アドレス
datatbl_end :
data属性セクション初期化テーブルの末尾アドレス
bsstbl_start:
bss属性セクション初期化テーブルの先頭アドレス
bsstbl_end :
bss属性セクション初期化テーブルの末尾アドレス
|
なし
|
[詳細説明]
RAM領域セクションのうち,data属性セクションの初期値をROM領域からコピーし,bss属性セクションのゼロ・クリアを行います。
第1,第2引数は,data属性セクションの初期化テーブルの先頭,末尾アドレスを渡します。
第3,第4引数は,bss属性セクションの初期化テーブルの先頭,末尾アドレスを渡します。
第1引数>=第2引数の場合,data属性セクションの初期化を行いません。
第3引数>=第4引数の場合,bss属性セクションのゼロ・クリアを行いません。
[使用例]
struct {
void *rom_s; //data属性セクションのROM上の先頭アドレス
void *rom_e; //data属性セクションのROM上の末尾アドレス
void *ram_s; //data属性セクションのRAM上の先頭アドレス
} _C_DSEC[M];
struct {
void *bss_s; //bss属性セクションのRAM上の先頭アドレス
void *bss_e; //bss属性セクションのRAM上の末尾アドレス
} _C_BSEC[N];
_INITSCT_RH(_C_DSEC, _C_DSEC + M, _C_BSEC, _C_BSEC + N);
|
備考 | .bssセクションの開始アドレスが0x100, サイズが0x50バイトであるとき,0クリアされるメモリは0x100,0x101,...,0x14e,0x14f番地ですが,初期化テーブルには0x100, 0x150と指定します。 |