はじめまして兎家と申します。
SH72531にてユーザブートプログラムを作成しようとしていますが、
ユーザーズマニュアル ハードウェア編に
組み込みプログラム格納マットのプログラムがRAM上にロードされ、実行されてから
ユーザブートマットのリセットベクタアドレスから実行とあります。
組み込みプログラム格納マットのプログラムが何をしているのかよくわかりません。
CAN を使用したユーザプログラムモードフラッシュ書き換え動作例
というのも見てみましたが、あまり参考にはなりませんでした。
おそらく、RAM上のサブルーチンをユーザブートマットから呼び出して使うような構造だと
推測していますが、参考になるようなユーザブートプログラムのサンプルプログラムなどはあるのでしょうか?
よろしくお願いします。
兎家さん <このRAMの内容使ってプログラムする> というのは、 1.SCIやLANやCANポートの初期化をする 2.フラッシュROMをイレーズする 3.SCIやLANやCANポートからデータをもらう 4.もらったデータをフラッシュROMにプログラムする 5.データをベリファイして3.から繰り返す のような処理ではないかと思います。
SH72531にこだわらなければ資料は見つかると思いますよ。
兎家さんが全体像をつかめていないような感じがします。
23.5 ブートモード の 23.5.1 システム構成 を読んでください。"ブートモードで起動すると、組み込みプログラム格納マット上のプログラムが実行されます"とあります。図23.5の制御コマンド解析実行ソフト(内蔵)が組み込みプログラム格納マット上のプログラムで良いと思います。"組み込みプログラム格納マット上のプログラムは、SCI のビットレートの自動調整と制御コマンド方式でのホスト⇔本LSI 間の通信を実現"とありますが、1.ホストから内臓RAMにブート書き込みツールをロード2.ブート書き込みツールを起動も実行していると予想されます。ブート書き込みツールは、FDTなどからのコマンド入力に従って、1.ROMのデータを消去2.ホストから書き込みデータを内臓RAM経由でROMに書き込み3.検証を実行していると思います。
23.4 ROM 関連モード概要に記載がありますが、ユーザブートモードでは任意のIFを使えます。ユーザブートマットに希望するIFの組み込みプログラム格納マット上のプログラムのようなものをブートモードで書き込んでおきます。ユーザブートモードで起動したときは組み込みプログラム格納マットではなくユーザブートマットが実行されるので、"のようなもの"で設定したIFでの通信が実現されます。
>自分で全て組んでユーザーブートマットに格納する方向で実装中です。なら釈迦に説法だとは思いますが、一応、他のメンバーのために書き込んでおきます。
マニュアルの23.5ブートモードの23.5.1システム構成に記載されている通り組み込みプログラム格納マットはRAMとは別物です。”組み込みプログラム格納マットのプログラム”はユーザーブートモードで起動してもRAMに展開されません。また、機能もSCI のビットレートの自動調整と制御コマンド方式でのホスト⇔本LSI 間の通信を実現と明確に書かれています。ビットレートの自動調整方法も記憶にあるので、ドキュメントやソースコードはどこかにあるのかもしれません。FCUが書き込み内容の検証などのプログラム”部品”と呼べそうですが、兎家さんは異なるイメージを持っていると予想されます。FCUに関しては私が使ったことのあるSHに無かったので私の勘違いかもしれません。
23.4ROM関連モード概要に記載がありますが、MDA~MDD端子の設定値でユーザモード/ユーザプログラムモード/ユーザブートモード/ブートモードの切り替えが行われます。表23.4にそれぞれのモードの比較があります。ユーザモードもユーザマットから起動されます。MAT切り替えとかMAT書き込みはMDA~MDD端子の設定で変わります。書き込み内容の検証などのプログラムはブートモードでFDTなど使う場合は、FDTのパッケージに含まれていて組み込みプログラム格納マットのプログラムでホスト(PC)からターゲットマイコンのRAMに展開されます。ユーザブートモードの場合はこれもホストとのIFや書き込みデータのフォーマットに合わせて自分で用意する必要があります。確かに、ユーザーブートマットは32Kもあるので、すべてをユーザーブートマットや組み込みプログラム格納マットのプログラムに入れた方がすっきりしそうですが、将来的な書き込みデータのフォーマットなどの拡張を考えるとユーザーブートマットや組み込みプログラム格納マットのプログラムは最小にしてその都度書き込みツールをRAMに展開する方が良さそうです。ユーザーブートマットを使う場合は、ホストや作業者などでユーザーブートマットにすべてを組み込むのも良いかもしれません。
一旦、ユーザーマットで開発しておいて、ユーザーブートマットに最適化したプログラムをロードする方がメモリーサイズの制限などから利点があるように感じます。私は通常のソフトウエア作成でもほとんどデバッガを使わないので、なんとなくですがユーザーブートマットはE10A-USBでデバッグできなくても困らないように感じます。