8.5.2 ROM化用ロード・モジュールの作成

この項では,ROM化用ロード・モジュールの作成手順について説明します。

 

ROM化には最適化リンカの-romオプションを使用します。次のように記述します。

-rom=初期値データセクション名=初期化先セクション名[,初期値データセクション名=初期化先セクション名]...

また,初期値データセクション,初期化先セクションのアドレスをそれぞれ-startオプションで指定する必要があります。

-start=[(]セクション名[{:|,}セクション名]...[)][{:|,}セクション名]...[/配置先アドレス][,[(]セクション名[{:|,}セクション名]...[)][{:|,}セクション名]...[/配置先アドレス]]... 

たとえば,プログラム中に.text,.data,.zdata,.zbss,.bss,.sdata,.sbssの7つのセクションがあり,それぞれを実行時に.textセクションは0x0番地,r0相対セクションは0xFE000000番地,r4相対セクションは0xFE001000番地に配置したい場合,次のように記述します。

-start=.text,.data,.zdata,.sdata/0
-start=.data.R,.zdata.R,.zbss,.bss/fe000000
-start=.sdata.R,.sbss/fe001000
-rom=.data=.data.R,.zdata=.zdata.R,.sdata=.sdata.R

このように記述すると,.data,.zdataは0x0番地の.textセクションの次に配置されます。

実行時には,0xFE000000番地の.data.R,.zdata.R,.zbss,.bss,0xFE001000番地の.sdata.R,.bssを初期化して使用します。

 

イメージは次のようになります。

図 8.4

コピー関数呼び出し前後のイメージ