« Interface誌のRX62N用拡張基板(3) | トップページ | Interface付録RX62N用拡張基板のプランについてアンケートのお願い »

2011.05.26

MITOUJTAGとICEの統合(4)

今日もMITOUJTAGにICEを統合する作業を進めています。
とりあえずターゲットはRX62Nのみですが、MITOUJTAG上のJTAG-ICEから、内蔵フラッシュROMへの書き込みができるようになりました。

Mjice_romprog

RX62Nの内蔵フラッシュROMに書き込む方法は、ユーザマニュアルの第37章に書かれているのですが、理解するまでが意外としんどいです。

RX62NにはFCUというフラッシュコントローラが入っています。こいつを動作させるにはファームウェアが必要とのことなので、おそらく小さなCPUなのではないかと推測されます。実際にファームウェアを見てみると複雑なマシン語のように見えます。
CPUからはROMのアドレスにE8 80 ・・・・ D0などのコマンドやデータを書き込んでいけばROMに書き込まれるというわけなのですが、実際にはFCUがこのコマンドを解釈して動いているのでしょう。マニアにはたまらない仕様です。

RX62Nの中の内蔵ROMのある領域(FEFFE000h~)にFCU用のファームウェアが書かれていて、これをFCU RAMという隠れたRAM(007F8000h~)に転送します。FCU RAMは2kBのサイズがあるのですが、通常はこれは見えなくなっていて、ROM書き込みモードに移行してはじめて見えるようになります。

内蔵ROMを書き換えるモードにすると、CPUからは内蔵ROMが参照できなくなってしまいます。そのため、内蔵ROMを書き換えるプログラムはRAM上で実行しなければなりません。

書き込みや消去といった動作はソフトウェアで動作させたほうがいいので、JTAG ICE上で実行する場合は小さなサブルーチン集をあらかじめRAM上に転送しておいて、JTAG ICEからそのサブルーチンを呼び出して操作することになります。

内蔵フラッシュROMは256バイト単位で書き込む仕様になっていますが、実際には256バイト単位でJTAG ICEからサブルーチンを呼び出していると、CPUリスタート→停止のオーバーヘッドが大きすぎるので、消去ブロック単位(4KBまたは16KB)で書き込むとちょうどよくなります。
FFFF8000~FFFFFFFFの32kBの消去と書き換えに要した時間は、2~3秒でした。

RAMに転送する場合とROMに書き込む場合とで、だいぶん動作が違ってくるので、MITOUJTAGでは書き込みの際にダイアログを1つ入れることにしました。

Mjice_romprog2

このダイアログで、ROMに書き込むか、RAMに書き込むかを選択して、アルゴリズムを切り替えるようにしました。

今日の夜か明日の朝くらいにはリリースできるようになると思います。
これが出来れば、もうFDT(Flash Development Toolkit)はいらなくなりますし、MD0やMD1を操作しなくても良くなるでしょう。
開発はGCCで行い、ROMへの書き込みは、MITOUJTAG/ICEとなるわけです。

|

« Interface誌のRX62N用拡張基板(3) | トップページ | Interface付録RX62N用拡張基板のプランについてアンケートのお願い »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Interface誌のRX62N用拡張基板(3) | トップページ | Interface付録RX62N用拡張基板のプランについてアンケートのお願い »