初期値を持つ領域である“data属性”領域へ初期値のコピーと,初期値を持たない領域である“bss属性”領域のゼロ・クリアを行います。プログラム実行前に初期化するべき領域がない場合,本処理は必要ありません。
最初に,最適化リンカの-romオプションで初期値データの生成を指示し,コピー先のRAM領域セクションを定義します。詳細は「8.4 ROM化」を参照してください。
定義したRAM領域セクションを,スタートアップ・ルーチン内に次のように記述します。
次に,スタートアップ・ルーチン内で,bss 属性の領域を初期化するコードを記述します。
セクション.bss,.sbss を0 初期化する場合,次のように記述します。
次に,スタートアップ・ルーチン内で,data属性の領域をRAM領域セクションにコピーするコードを記述します。
セクション.data,.sdataをそれぞれ.dataR,.sdataRにコピーする場合,次のように記述します。このコピールーチンは,64Kbyte境界をまたぐセクションについては対応していないので注意してください。
RAM領域セクションへの0初期化,およびコピー処理は,C言語で作成しスタートアップ・ルーチンから呼ぶこともできます。
C言語でのRAM領域セクション初期化関数の例を以下に示します。