NORTiのサンプルでRAMに配置されたサンプルプログラムをボードのフラッシュ・メモリに書き込む手順を紹介します。今回、例としてSH-4A開発キットに含まれているSH-2007でご説明いたします。
SH-2007用サンプルのアドレスマップ
サンプルのワークスペースファイル(SH2007.hws)をHEWで開いて「ビルド(B)」「SuperH RISC engine Standard Toolchain」メニューからのダイアログにて「最適化リンク」内のカテゴリ「セクション」で確認できます。
SDRAMの領域の0x88000000番地からVECTセクション、0x88001000番地からその他のセクションが配置されています。このプログラムをフラッシュのエリアに書き込む場合、アドレスをこのダイアログ内で直接変更しないで、デバッガで読み込む時に配置をずらして書き込むようにします。フラッシュに書き込まれたプログラムは起動後、SDRAMにプログラム及びデータをコピーしてから動作するように作られています。アドレスを直接フラッシュメモリのエリアに変更した場合は、動作しなくなったり、性能が出なくなったりしますのでご注意ください。
フラッシュメモリへの書き込み操作
Code Stageデバッガを立ち上げます。まずはエリアの設定でフラッシュを設定してください。

以下はフラッシュを指定した時のダイアログです。

フラッシュの設定が終わったら「ファイル」「ダウンロード」メニューから「ダウンロード」ダイアログを開いて書き込むファイルを選択します。
この時に「アドレスを加算する」をチェックして「78000000」と入力します。
「開く」ボタンでダウンロードを開始します。
コマンドウィンドウに以下のようなログが出たら正常に書き込めました。
後は、リセット&実行でフラッシュからプログラムが実行するようになります。
アドレスの加算値について
今回0x88000000番地から割り当てられたプログラムに0x78000000を加算するることにより折り返して0x00000000番地になりフラッシュの先頭から書き込まれました。
0x88000000番地に対して0x02000000を加算した場合は0x8a000000になります。
0x88000000番地に対して0x88000000を加算した場合は0x10000000になります。
この加算はシンボル情報には影響いたしません。また加算してフラッシュに書き込んだ場合、当然ですがNORTiのサンプルのように、あらかじめ動作するように考慮して作成されていないと、きちんと動作しませんのでご注意ください。