ローダプログラムに対応したアプリケーションの作成方法とシリアルＦｌａｓｈＲＯＭへの登録方法（ブートモード１／３用)
Ｒｅｖ１．３０ ２０１２／１０／４
ＤＥＦバージョン１１．００Ａより
ＤＥＦバージョン１２．１０Ａ変更
ＤＥＦバージョン１２．２０Ａ変更【対象ＣＰＵ】
１．ＲＯＭレス品種が対象になります。
（ＳＨ７２６２／４／６／７）【ローダとアプリケーションの関係】
１．ブートモード１／３の場合、電源オン時にＲＳＰＩ０に接続されているシリアルＦｌａｓｈＲＯＭの「０～０ｘ１ＦＦＦ」番地に格納されたローダプログラムを内蔵ＲＡＭ「０ｘＦＦＦ８００００～０ｘＦＦＦ８１ＦＦＦ」番地にロードし、「０ｘＦＦＦ８００００」番地から実行する仕様になっています。
ローダプログラムは、シリアルＦｌａｓｈＲＯＭの「０ｘ２０００」番地に格納されているアプリケーションのロード用管理テーブル情報に元づき指定アドレスに転送後、指定エントリーアドレスから実行させます。
＜関係図＞
０ｘ０
ローダプログラム（８ＫＢ）

０ｘ１ＦＦＦ０ｘ２００００ｘ２００４０ｘ２００８０ｘ２００Ｃ

アプリケーション転送開始アドレス（ＳＡ）
アプリケーション転送終了アドレス（ＥＡ）
アプリケーションエントリアドレス（ベクタ０）
アプリケーションのＳＰ初期値（ベクタ１）

アプリケーションプログラム

ローダプログラム実行①シリアルＦｌａｓｈＲＯＭの「0x2000」から 8 バイト読み出す。
②読み出した情報を元にアプリケーションプログラムをメモリーに展開する。
③「0x200C」番地に登録された SP 値をスタックポインタに設定する。
④「0x2008」番地に登録されたエントリ値に PC を進める。
＜ターゲット側ＲＡＭ＞

０ｘＦＦＦ８００００

アプリケーション転送開始アドレス
アプリケーション転送終了アドレス
アプリケーションエントリ（ベクタ０）
アプリケーションのＳＰ （ベクタ１）

ＳＡ＋０
ＳＡ＋４
ＳＡ＋８
ＳＡ＋Ｃ

０ｘＦＦＦ８１ＦＦＦ

アプリケーションプログラム

0x2000+(EA-SA-1)

アプリケーションのプログラムサイズは、（ＥＡ－ＳＡ）の関係になります。

＜シリアルフラッシュＲＯＭ＞＜ターゲット側ＲＡＭ＞

ＥＡ

【アプリケーションの作成】
１．ローダ対応のアプリケーションを作成する場合、上図のＳＡ／ＥＡの情報をアプリケーションの先頭に追加する必要があります。追加方法として一例を記述します。
１）アプリケーション情報用のソースファイル［appinfo.c]を準備します。
//**********************************************************//
appinfo.c//**********************************************************#pragma section APPINFO//**********************************************************
typedef struct {void *app_top;// アプリケーション開始アドレス
void *app_end; // アプリケーション終了アドレス} APPINFO;//**********************************************************APPINFO appinfo = {__sectop("DAPPINFO"),__secend("D")};//**********************************************************

２）Ｈｅｗメニュの＜プロジェクト＞－＜ファイルの追加＞で「appinfo.c」を追加します。

３）＜セクション設定＞で、ロケーション指定をします。
[1-1]
アプリケーション情報セクション名を先頭で定義する。
__sectop("DAPPINFO")

ローダにより、転送させ実行する先頭アドレスを指定する。

このロケーション指定ですと、セクション"D"がシリアルＦａｌｓｈＲＯＭに書き込む最終セクションになります。
__secend("D")４）サンプルソフト「"sample¥Hew4_SH2_Sflash"」フォルダに、北斗製基板「HSB7264」に対応したサンプルを用意してありますので、詳細はサンプルをご覧下さい。

【アプリケーションのデバッグ】
１．ローダ対応のアプリケーションを単独でデバッグする場合、下記のＣＰＵ設定が必要になります。
[2-1]

ポイント
ローダ対応のアプリケーションプログラムは、通常のＲＯＭ対応プログラムのリセットベクターアドレスが「TOP+８」された位置になります。よって、今回の例ですと開始
は、「0x1C00_0008」になります。

ポイント
アプリケーションプログラムの実行可能な RAM サイズを指定します。
「TOP+８」の「+８」は無視して「TOP」からのサイズになります。よって、今回の例ですとサイズ「0x10_0000」になります。

作成したアプリケーションプログラムのデバッグにＢＳＣ設定が必要な場合は、スクリプトファイルを指定します。
ＳＨ７２６４の場合
インストールディレクトリ
"c:¥Program Files¥Aone¥DEF¥rom-custom¥SH7264"に、例として「SH7264-BSC-HSB.log」が用意してありますので、目的ハードにカスタマイズして下さい。

２．サンプルソフトのダウンロード終了画面[3-2]

PC 値が「0x1C000800」になっているのが確認できます。

SP 値が「0xFFF90000」になっているのが確認できます。

0x1C000008: 1C,00,08.00 エントリアドレス
0x1C00000C:FF,F9,00,00 初期ＳＰ値の確認ができます。

デバッグ操作に関しては、標準仕様と同じ操作になります。
デバッグ中は、「ブートモ－ド０」にするか、もしくは「ブートモ－ド０」に出来ない回路構成（アドレス・データバ
スを汎用Ｉ／Ｏに使用）の場合は、シリアルフラッシュＲＯＭの内容を全消去した状態でデバッグして下さい。
「ブートモード１・３」のままですとリセット解除後、内蔵高速ＲＡＭの先頭から「0x2000」エリアは常時「0xFF」になります。

【シリアルフラッシュＲＯＭに登録】
１．デバッグが完了し、シリアルＦｌａｓｈＲＯＭに書き込む手順を説明します。なお、ＣＰＵ設定は、デバッグ時と同じ状態にしておいて下さい。
１）ＤＥＦメニュー ＜オプション＞－＜ローダとアプリケーションの登録＞をクリックします。
[4-1]
各プログラムを登録します。
（１）フラッシュＲＯＭライタープログラム（*.mot）（２）ローダプログラム（*.mot）（３）アプリケーションプログラム（*.mot）
上記３プログラムファイルは、必ず指定して下さい。

２）フラッシュＲＯＭライタープログラム（*.mot）を指定します。
[4-2]「開始」ライタープログラムの開始アドレス「最終 adr」ライタープログラムの終了アドレス「RomMaxSize」ROM の最大有効サイズ「sector」ライタープログラム内部に登録されたセクター数＜操作＞「参照」ボタンをクリックします。
[4-2-1]

インストールディレクトリ
"c:¥Program
Files¥Aone¥DEF¥rom-custom¥SH7264"
下の"$(ProjectName)¥Debug"に作成したヘキサファイルがありますので指定します。
例）$(ProjectName):AT25DF041A_Writer＜操作１＞
アプリケーションのサイズに応じて消去するセクター数を指定することができます。必要な場合は、ここにセクター数を指定して下さい。
【1~ｎ】

＜操作２＞
「全消去開始」ボタンをクリックしますとシリアルフラッシュ ROM を消去します。
＜状態＞
メッセージＢＯＸが表示され処理が推移します。
[4-6-1](1)エミュレーションモードの遷移(2)書込みプログラムの転送(3)セクターイレーズ(4)正常終了（ＢＯＸ消去）

３）ローダプログラム（*.mot）を指定します。
[4-3]「開始」ローダープログラムの開始アドレス「最終 adr」ローダープログラムの終了アドレス「LoaderSize」ローダープログラムの最大有効サイズ＜操作＞「参照」ボタンをクリックします。
[4-2-1]

ローダプログラムの開始アドレスは、MPU 品種によって固定になっていますので、仕様通りのアドレスにする必要があります。

インストールディレクトリ
"c:¥Program Files¥Aone¥DEF¥rom-custom¥SH7264"
下の"$(ProjectName)¥Debug"に作成したヘキサファイルがありますので指定します。
例）$(ProjectName):AT25DF041A_Loader「AT25DF041A_Loader.mot」

４）アプリケーションプログラム（*.mot）を指定します。
[4-4]「開始」 アプリケーションプログラムの開始アドレス「AppSize」アプリケーションプログラムのサイズ「RamMaxSize」CPU 設定に登録した最大有効 RAM サイズ＜操作１＞「参照」ボタンをクリックします。
[4-2-1]＜操作２＞「情報」ボタンをクリックします。
ライター／ローダ／アプリケーションプログラムの内部情報を表示します。

$(WorkSpace)¥$(Project)¥Debug 下のヘキサファイルを指定します。

＜操作３＞「情報 CLR」ボタンをクリックしますと「情報」で表示した内部情報画面を消去します。

５）「情報」画面の説明[4-5]
ライタープログラム内部に登録した「セクター別」
開始／終了／サイズを表示します。

ローダプログラムのシリアルフラッシュＲＯＭに格納するアドレスを表示します。

アプリケーションプログラムのシリアルフラッシュＲＯＭに格納するアドレスを表示します。

(ForwardStart)--「ローダに転送させる開始アドレス」(ForwardEnd)----「ローダに転送させる終了アドレス」(ProgramEntry)--「アプリケーションの開始アドレス」(StackPoint)-------「アプリケーションの初期ＳＰ値」

６）シリアルＦｌａｓｈＲＯＭに書き込みます。
[4-6]

＜操作＞
「書込み開始」ボタンをクリックします。
＜状態＞
メッセージＢＯＸが表示され処理が推移します。
[4-6-1]

正常終了しますと、メッセージが表示され、「書込み個数」が＋１されます。

(1)エミュレーションモードの遷移(2)書込みプログラムの転送(3)セクターイレーズ(4)ユーザモードでダウンロード(5)正常終了（ＢＯＸ消去）

７）動作確認をします。
（１）ターゲット基板の電源をオフにします。
（２）ターゲット基板のブートモードを「１ｏｒ３」にします。
（３）ターゲット基板のＡＳＥＭＤを「１：Ｈｉｇｈ」側に設定します。
（４）ターゲット基板の電源をオンにします。
（５）アプリケーションプログラムの動作確認が出来ましたら正常にシリアルＦｌａｓｈＲＯＭに書き込めたことになります。
８）プログラムコードのベリファイ方法（１）ターゲット基板の電源をオフにします。
（２）ターゲット基板のブートモードを「１ｏｒ３」にします。
（３）ターゲット基板のＡＳＥＭＤを「１：Ｈｉｇｈ」側に設定します。
（４）ターゲット基板の電源をオンにします。
（５）ローダーによる転送終了を待ちます。
（６）ターゲット基板のＡＳＥＭＤを「０：Ｌｏｗ」側にします。(エミュレーション遷移可能状態）（７）ＤＥＦを起動して左下隅の「Start」をクリックします。
（８）ＤＥＦメニューの＜ファイル＞－＜ベリファイ＞でＲＡＭに転送されたプログラムと登録したプログラムとベリファイします。
以上で、アプリケーションの作成方法とシリアルＦｌａｓｈＲＯＭへの登録方法の説明が終了です。