Renesas Synergy™

FAQ 1011640 : ROM化とは何ですか?

Q: 質問

ROM化とは何ですか?


A: 回答

リセット時のRAMは不定値のため、data属性のセクションにある初期値情報をROM上に持たせておき、それをアプリケーション実行前にROMからRAMへコピーする作業が必要になります。この一連の処理を「ROM化」と呼びます。

例:.sdataセクションをROM領域である0x100番地に持たせておき、実行時にはRAM領域である0xFEDE0000番地にコピーして使用する場合

[リンク・オプション]
-rom=.sdata=.sdata.R
CS+では[リンク・オプション]タブ -> [セクション]カテゴリ -> [ROMからRAMへマップするセクション]で指定

-start=.sdata/100,.sdata.R/FEDE0000
CS+では[リンク・オプション]タブ -> [セクション]カテゴリ -> [セクションの開始アドレス]で指定

[スタートアップルーチン]
スタートアップルーチンで定義しているセクション初期化テーブルに、.sdata/.sdata.Rセクションのアドレス情報を追加します。セクション名 に”#__s”を付けると、そのセクションの先頭アドレス、”#__e”を付けると、そのセクションの終端アドレスとなります。

  .section ".INIT_DSEC.const", const
.align 4
.dw #__s.data, #__e.data, #__s.data.R
.dw #__s.sdata, #__e.sdata, #__s.sdata.R

最後にコピー関数"_INITSCT_RH"を使用してdata属性セクションの初期値情報をRAMに展開します。"_INITSCT_RH"によりbss属性セクションのゼロ初期化も同時に実行可能です。

  mov #__s.INIT_DSEC.const, r6
mov #__e.INIT_DSEC.const, r7
mov #__s.INIT_BSEC.const, r8
mov #__e.INIT_BSEC.const, r9
jarl32 __INITSCT_RH, lp

 

 

適用製品

RH850ファミリ用Cコンパイラパッケージ

 

 

他にご質問がございましたら、リクエストを送信してください