Rev 1.00.00

ROM レス品種にて、外付けシリアル FlashROM 対応のローダプログラムを追加する場合の説明
１．対象 MCU・ROM レス品種が対象です。(SH7262 / 7264 / 7266 / 7267 / 7268 /7269 )２．機能
・Hew4 にてシリアル FlashROM の品種追加が出来るよう対応する。
・FlashROM 仕様にあわせたバイトリードをプログラミングするだけで追加が可能になるよう対応する。
３．ローダー追加前の準備
３－１）AH8000 コントロールソフト(DEF8K)のインストール DIR にあるワークスペースを開く。
(SH7268 での追加例)<default directory>"c:¥Aone¥DEF8K¥rom-custom¥SH7268"

1３－２）プロジェクト名「_NewSF_Loader」をアクティブプロジェクトにする。

３－３）「プロジェクトタイプの作成」を指定する。

2３－４）追加 FlashROM の新プロジェクトタイプを作成する。

新プロジェクトタイプ名を指定
タイプ名に関しては必要に応じて自由に名前を付けて下さい。

3４．シリアル FlashROM 用ローダーの追加
４－１）新規プロジェクトの挿入

4新規プロジェクト名

新規作成したプロジェクトタイプ

5４－２）シリアル FlashROM 用ローダーの定義およびプログラムを作成する。
１）「sflashrom.c」を開く

２）「sflashrom.h」の#define を定義する。

「SFMAX_SIZE」にシリアル FlashROM の最大サイズ（バイト）を定義する。

３）を参照

6

３）
「sflashrom.h」の#define の定義説明。
シリアル FlashROM の各コマンドを定義します。
定義名
コマンド
機能
SF_QUAD_IO_READ
0xEB
QUAD I/O 高性能読み取り
SF_WRITE_ENABLE
0x06
Write 許可
SF_READ_STATUS
0x05
ステータスリード
SF_READ_CONFIG
0x35
コンフィグレーションリード
SF_WRITE_STATUS
0x01
ステータスライト
CFREG_QUAD_BIT
0x02
QUAD モードビット（Configuration）
この例は、Spansion の「S25FL032P」のコマンドです。コマンド仕様は各デバイスメーカーによって異なります。使用するデバイスのデータシートを参照して下さい。

４）「sFlashSetMode()」開数を確認または変更する。
【機能】QUAD モードに設定する。

５）「AppInfoRead」関数の確認または変更する。

関数「AppInfoRead(...)」は、アプリケーションのローダ情報をシリアル FlashROM の「APP_INFO_TOP(0x2000)」番地より読み出します。
＜引数の仕様＞
UCHAR *rdat; // 読み出したデータを格納する先頭アドレス
ULONG rsize; // 読み出しデータのサイズ（バイト）7

６）「AppProgRead」関数の確認または変更する。

関数「AppProgRead(...)」は、アプリケーションのローダ情報をシリアル FlashROM の「APP_PROG_TOP(0x2000)」番地より読み出します。
＜引数の仕様＞
UCHAR *rdat; // 読み出したデータを格納する先頭アドレス
ULONG rsize; // 読み出しデータのサイズ（バイト）７）「sFlashByteRead」関数の確認または変更する。

関数「sFlashByteRead(....)」は、シリアル FlashROM の指定アドレスから指定バイト数読み出しします。
＜引数の仕様＞
ULONG adr；// 読み出しするデバイス内の ROM の先頭アドレス
UCHAR *rdt; // 読み出したデータを格納する RAM の先頭アドレス
ULONG rsize; // 読み出しデータのサイズ（バイト）8４－３）シリアル FlashROM 用ローダープログラムをデバッグ用にビルドする。
１）セクションの設定＜ルール１＞
デバッグ中は、「DVECTTBL」セクションを内蔵 RAM の先頭にロケーションする。
＜ルール２＞
スタックまで含めたオブジェクトサイズは「0x2000」8KB までにする。
以上のルールは厳守して下さい。
２）ビルドの実施「0 Errors, 0 Warnings」を確認する。

9

５．シリアル FlashROM 用ローダープログラムのデバッグ方法
５－１）ターゲット基板側のモード設定
デバッグ中は、「ブートモ－ド０」（CS0 空間に接続されたメモリからブートする）にして下さい。理由は、「ブートモード３」（シリアルフラッシュメモリからブートする）のままですとリセット解除後、ブートプログラムが起動され内蔵 RAM の先頭から「0x2000」エリアにローダプログラムがロードされてしまうからです。
５－２）「DEF8K」の「CPU 設定」にデバッグ環境を設定する。

作成した「FlashROM」プログラム
は、ターゲットの内臓 RAM に転送して実行させますので「RAM」側を選択して先頭アドレスとサイズを設定する。
SH7268 の場合
開始 0xfff8_0000 サイズ 0x10000になる。
ターゲット側の基板構成による作成した「FlashROM」プロ
グラムのデバッグに BSC 設定が必要な場合は、スクリプトファイルを指定する。

デバッグ時は、「Sof-TAP」を指定する。

10

５－３）
「DEF8K」でデバッグを開始する。
【条件】デバッグできる条件は、シリアル FlashROM の 0x2000 番地から何らかのアプリケーションプグラムが書き込まれていることが必要です。
１）ターゲットと接続する。

②ターゲト基板をリセットする。

①「Start」をクリック

11２）シリアル FlashROM 用ローダープログラムをダウンロードする。

12３）「RstMon」をクリックする。

「RstMon」をクリック「_Loader_TOP」関数(0xFFF80100)の先頭の PC 値になっている事を確認する。

SP 値が内蔵 RAM のボトム位置になっていることを確認する。

「Reg」をクリック
13４）「Trace」をクリックして「LoaderMain()」まで PC を進める。

「Trace」をクリック「LoaderMain()」まで進んだことを確認する。

14

５）「AppInfoRead()」関数を確認するため準備する。

①「LoaderMain.c」の 68 行の「AppInfoRead(...)」に BP1 を設定する。

②「Go」をクリック「AppInfoRead(...)」の位置での停止を確認する。
（紫帯が停止している状態）

15【「評価／変更」を開く】「AppInfoRead()」関数によって、変数「AppProgInfo[2]」にアプリケーションのローダ情報がセットされる。

16６）「AppInfoRead()」関数を実行する。

「CStep」をクリック[0]は、アプリケーションプログラムを内蔵メモリへロードする先頭アドレスになる。
[1]は、アプリケーションプログラムを内蔵メモリへロードする終了アドレスになる。

17７）アプリケーションプログラムが「AppProgInfo[]」を元に内蔵 RAM にロードされるか確認する。

①「LoaderMain.c」の 79 行の「if (stat ==0) {」に BP1 を設定する。

②「Go」をクリック

BP1 位置での停止を確認する。
（紫帯が停止している状態）

18８）ダンプ窓で内蔵 RAM を確認する。

＜確認１＞
アプリケーションの転送先の開始ア
ドレス

＜確認２＞
アプリケーションの転送先の終了ア
ドレス

19

＜確認３＞
アプリケーションのエントリアドレ
ス（開始）

＜確認４＞
アプリケーションのスタックポイン
タ初期値９）アプリケーション側に PC が切り替わることを確認する。

「JmpAppProg」関数の指定位置まで「CTrac」クリック①「JmpAppProg」関数の「jmp @r0」のここまで「CTrac」をクリック②「Trace」を一回クリック20逆アセンブル表示でアドレス「0x3C00_0800」のニモニックは表示されたらアプリケーシ
ョン側に切り変わったことの確認になる。これ以上の実行は中止して下さい。
以上でシリアル FlashROM 用ローダープログラムの動作確認は終了です。

21

６．シリアル FlashROM 用ローダープログラムを正規リリース用にビルドする。
６－１）セクションの設定＜ルール１＞
正規リリースは、「PLoaderTip」セクションを内蔵 RAM の先頭にロケーションする。
＜ルール２＞
スタックまで含めたオブジェクトサイズは「0x2000」8KB までにする。
以上のルールは厳守して下さい。
６－２）ビルドの実施「0 Errors, 0 Warnings」を確認する。

22

６－３）
「DEF8K」の「CPU 設定」にリリース環境を設定する。
１）「RAM」を選択する。
「ローダとアプリケーションの登録」に登録した「シリアル FlashROM プログラム」がパケット通信対応の場合は選択が可能になる。(128 / 256 / 512byte)

開始： 内蔵 RAM の先頭アドレス＋８番地を設定する。
サイズ：内蔵 RAM の最大サイズを設定する。
＜備考＞
アプリケーションの開始アドレスが内蔵 RAM の先頭アドレスと終了アドレスがセットされているため。

23

６－４）
「DEF8K」の「ローダとアプリケーションの登録」に登録する。
１）ローダプログラムの「参照」をクリックする。

シリアル FlashROM 用ローダープログラムの開始アドレスと最終アドレスを表示する。

最大ローダープログラ
ムサイズを表示する。

24

７．シリアル FlashROM 用ローダープログラムの最終確認をする。
７－１）ターゲット基板側のモード設定「ブートモード３」（シリアルフラッシュメモリからブートする）に設定する。
７－２）「ローダとアプリケーションの登録」で確認する。
１）アプリケーションプログラムの「参照」をクリックする。

アプリケーションプログラムの開始アドレスとサイズを表示する。

「CPU 設定」に設定した内蔵RAM サイスを表示する。

25

２）「書込み開始」をクリックする。

① FROM 書き込みプログラムの転送② FROM のセクターイレーズ③ 拡張パケットでの FROM への書き込み

26

７－３）
「アプリケーションプログラム」が正常に書き込みされたかベリファイで確認する。
１）ターゲットの電源を再投入後、ロード時間を待ってから接続する。
（参考）1.0M バイトコードのロード時間は約 5 秒②ターゲト基板をリセットする。

①「Start」をクリック

シリアル FlashROM
からロード後のアプリケーションプログ
ラム

27２）内蔵 RAM とベリファイする。

28

【ベリファイ中】【ベリファイ結果】

この結果表示によりシリアル FlashROM にアプリケーションプログラムが正常に書かれローダも正常に動作したことになる。

29

８．注意事項
・本文書の著作権は、エーワン（株）が保有します。
・本文書を無断での転載は一切禁止します。
・本文書に記載されている内容についての質問やサポートはお受けすることが出来ません。
・本文章に関して、ルネサス エレクトロニクス社への問い合わせは御遠慮願います。
・本文書の内容に従い、使用した結果、損害が発生しても、弊社では一切の責任は負わないものとします。
・本文書の内容に関して、万全を期して作成しましたが、ご不審な点、誤りなどの点がありましたら弊社までご連絡くだされば幸いです。
・本文書の内容は、予告なしに変更されることがあります。

〒486-0852
愛知県春日井市下市場町 6-9-20
エーワン株式会社

https://www.aone.co.jp30