8.4.2 ROM化用ロード・モジュール・ファイルの作成

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

 

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

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

 

リンカでセクションの自動配置機能を指定しない場合は,初期値データセクション,初期化先セクションのアドレスをそれぞれ-startオプションで指定する必要があります。リンカでセクションの自動配置機能を指定する場合は,-startオプションでのアドレス指定は不要です。

-start=セクション名[,セクション名]/配置先アドレス

 

ユーザ・プログラム中にセクション.text,.textf,.RLIB,.SLIB,.const,.constf,.data,.sdata,.bss,.sbssがあるとします。実行時に.textを0x100番地に,.constを0x2000番地に,再配置属性DATA,BSSのセクションを0xfe000 番地に,再配置属性SDATA,SBSS のセクションを0xffe20 番地に配置したい場合,次のように記述します。

-start=.text/100
-start=.const,.RLIB,.SLIB,.textf,.constf,.data,.sdata/2000
-start=.dataR,.bss/FE000
-start=.sdataR,.sbss/FFE20
-rom=.data=.dataR,.sdata=.sdataR

 

コピー先のセクション名.dataR,.sdataRは別名でも構いませんが,スタートアップ内の記述と合わせる必要があります。実行時には,.dataから.dataR,.sdataから.sdataRにデータがコピーされ,.bss,.sbssを初期化して使用します。

 

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

図 8.2

コピー処理前後のイメージ