今回、日立系プロセッサの経験者であるという理由で、SH4A(R5F74504KBG)搭載ボード(特注の一点物)の出荷時検査用ソフトの開発を強引に任されました。
経験と言っても、現役であった前世紀末にH8/3048Fで開発を一度行っただけなのですが…。(苦笑…)
このプロセッサの内蔵Flashの書換えが100回迄とされております関係で、顧客からは当方での書換えを数回(出来れば1回)に抑える様要請されました。
おそらく、一度リセットベクタのみ内蔵Flashに書き込んで、それ以外のコード全てを内蔵RAM上に展開する事になると思われます。
この状態で開発し、完成後にはコードを全て内蔵Flashに収める様設定せねばなりません。最低でもリンカの設定変更が必要と思われます。
しかしながら、その様な記述や操作は可能なのでしょうか?何卒この浦島太郎に御指導頂きたく宜しく御願い申し上げます。
なお、当方の開発環境は以下の様になっております。(開発環境の変化に唖然と致しております)
統合環境:HEW V.4.09.01
C言語 :SHCC : V.9.04 Release 03
JTAG-ICE:コンピューテックス製PALMiCE3 SH & CSIDE Version6
SP-4010さん、こんにちは。NoMaYと申します。(日立系はトラ技の増刊でH8SX16550のサンプルプログラムを動かした程度ではありますが。)
ふと思ったのですが、1点物ということで(ゆくゆくは量産する予定であるにしても)現状その1枚しか無いということかと思いますが、そういうことであれば(少なくとも現状)デバッガでRAMにダウンロードした出荷検査プログラムでOKの結果が出れば、その時点でその基板の出荷検査結果はOKであり、それ以上しなくてもお客様に納品することが出来る、ということにならないでしょうか? (fumisさんアドバイスと同じ?) (ゆくゆくは量産時の出荷検査の為にデバッガなど使わずに内蔵フラッシュメモリから起動するプログラムにしなければならないとしても。また、試作から量産までの間に仕様追加が発生して基板改版/プログラム改造が必要になることは、しばしばあることですし。)
それから、内蔵フラッシュメモリから起動するにしても、なるべくトラブルを避けたい場合の手として、RAM上でデバッグしていた時のプログラムのバイナリイメージをそのまま使えるようにということで、内蔵フラッシュメモリに焼く内容を、イニシャルプログラムローダ(内蔵フラッシュメモリの特定番地以降の内容をRAMにコピーしてからRAMにジャンプするプログラム)とそのRAMにコピーされるプログラム(RAM上でデバッグしていたプログラムのバイナリイメージそのまま)を1つのMOT(またはHEX)に結合したものとする、といった手も考えられるかと思います。(RAM上で動作する出荷検査プログラムがRAMに収まっているのであれば、内蔵フラッシュメモリ上で動くように変更しなくても良いような気がしましたので。) また、こういうイニシャルプログラムローダの開発には(内蔵周辺シミュレーションが出来ない)命令セットシミュレータでも結構有効にデバッグ出来ると思います。(Fujitaさんアドバイスと同じ?)
あと、基板の設計/試作も請け負っているのであれば、検査冶具として外部シリアルフラッシュを繋げられるようにしておいて、量産時にはお客さまが作 られた出荷(本番)プログラムを1回だけ書くものとして、基板上のDIPSW(もしくはTPへの1とか0とかの出力)で外部シリアルフラッシュから出荷検査プログラムをRAM上にコピーして実行出来るようにするカラクリを出荷(本番)プログラムに組み込んでおいて貰う、といった手も考えられるかと思います。(ただ、そのカラクリを逆手にとって内蔵フラッシュメモリの内容(お客さまのプログラム)をダンプする不心得者が現れる可能性もありますので、お客様の考え方次第ではありますが。) でも、この手は凝ったことを考え過ぎているかもしれませんが。
SP-4010さんwrote: said:ちなみに、今回のボードは御客様にとっては試作品ですが、当方にとっては製品です。 少なくとも、ボード上の機能が正常である事は確認せねばなりません。 その為の、ボード出荷用ソフトウェアの開発を試みております。 [引用終]