8.4.1 概  要

プログラム中で,グローバル,またはstaticな変数を宣言すると,初期値を持つ変数ならばdata属性のセクションへ,初期値を持たない変数ならばbss属性のセクションへというように,RAM上のセクションに配置されます。特に初期値を持つ変数ならば,その初期値自体がRAM上に配置されます。その他,セルフ・プログラミングのために,プログラム・コードを内蔵RAM領域へ配置する場合もあります。

組み込みシステムの場合,デバッグ時にインサーキット・エミュレータなどを使用する場合,実行可能なロード・モジュール・ファイルを配置イメージのままダウンロードして実行できます。しかし,実際にプログラムをターゲット・システムのROM領域に書き込んで実行する場合,data属性のセクションにある初期値情報や,RAM領域に配置するプログラム・コードは,実行前にRAM上に展開されていなければなりません。つまり,RAMに展開するデータをROM上に持たせておき,それをアプリケーション実行前にROMからRAMへコピーする作業が必要になります。

ROM化は,data属性セクションの変数の初期値情報や,RAM上に配置するプログラムを,1つのセクションにパッキングすることです。このセクションをROM上に配置し,スタートアップにてRAM にコピーすることによって,初期値情報やプログラムを容易にRAM上へ展開することができます。コピー処理については「8.2.6 RAM領域セクションの初期化処理」を参照してください。

ROM化用オブジェクトを作成する流れの概要は,次図のようになります。

図 8.1

ROM化用オブジェクトの作成

 

図 8.1 ROM化用オブジェクトの作成」のようにROM化用オブジェクト・ファイルを作成すると,スタートアップ内で,RAMに配置するデータを,パッキングされたROMからコピーします。

 

また,リロケーション解決したオブジェクト・ファイルにシンボル情報,デバッグ情報が含まれる場合,それらを削除することなくROM化用のオブジェクト・ファイルを生成します。そのため,ROM化後のオブジェクト・ファイルでもデバッガによるソース・デバッグができます。