がじぇるね、GR-SAKURAのファームウェアは非常によくできています。リセット後にRX63NがUSBマスストレージに見えて、その中にユーザプログラムの.BINをコピーすれば、CPUの内蔵フラッシュに書き込まれて動作するという素晴らしいしくみです。
このファームウェアは、VIDやPIDが変更できるようにプロジェクトが公開されています。
http://www.renesasrulz.com/docs/DOC-2365
上のURLで公開されたプロジェクトをビルドすれば、基本的にはVIDとPIDの変更はできます。しかし、問題が2つあります。
1つ目は、変更できるのはVIDやPIDだけであって、マスストレージとして開いたときに見える最初のファイル名や、ボリューム名、そしてファイルの中身が変更できないことです。
2つ目は、ファームウェアを書き換えるときに点滅するLEDが、GR-SAKURAのポート(PORTA.0,PORTA.1,PORTA.2,PORTA.6)に固定されてしまっているので、異なるボードに移植したときにはLEDが点滅しないことです。
これらの問題の解決方法を探りました。
まず、マスストレージとして見たときの問題を解決します。
がじぇるねGR-SAKURAの初期ファームウェアはMOTファイルで与えられます。これをFDTなどのツールを使って開いてみてください。
最初に見えるのが0xffff1c08番地※あたりに、<html>~で始まるテキストが見えます。これが、最初からマスストレージに入っているファイルの中身です。このままだと、http://sakuraboard.net/にジャンプしてしまいます。
※ビルドするときの条件で多少前後する
この部分を書き換えなければなりません。それから、もう少し下を見ていくと、0xffff2246番地あたりに"GR-SAKURA"から始まるデータの塊が見えます。Gadget Renesasと書いているのでしょうが、文字列が入れ替わったりぶつぶつ切れたりしています。
実は、この部分はディレクトリです。まずは、この部分の見方から説明します。
47 52 2D 53 41 4B 55 52 41 20 20 08 00 00 00 00 GR-SAKURA .....
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
44 20 00 48 00 6F 00 6D 00 65 00 0F 00 01 2E 00 D .H.o.m.e......
68 00 74 00 6D 00 6C 00 00 00 00 00 FF FF FF FF h.t.m.l.........
03 6E 00 65 00 73 00 61 00 73 00 0F 00 01 20 00 .n.e.s.a.s.... .
50 00 72 00 6F 00 6A 00 65 00 00 00 63 00 74 00 P.r.o.j.e...c.t.
02 66 00 6F 00 72 00 20 00 47 00 0F 00 01 61 00 .f.o.r. .G......
64 00 67 00 65 00 74 00 20 00 00 00 52 00 65 00 d.g.e.t. ...R.e.
01 53 00 41 00 4B 00 55 00 52 00 0F 00 01 41 00 .S.A.K.U.R....A.
20 00 42 00 4F 00 41 00 52 00 00 00 44 00 20 00 .B.O.A.R...D. .
53 41 4B 55 52 41 7E 31 48 54 4D 21 00 00 00 08 SAKURA~1HTM!....
EA 40 EA 40 00 00 00 08 EA 40 02 00 6A 00 00 00 .@.@.....@..j...
これは、32バイトごとに区切られたデータになっていて、その中の最初の11バイトが8.3ファイル型式のファイル名になっています。その後ろがファイルのアトリビュートです。ここが08ならば、ボリュームとなります。
つまり、この部分の青い字がファイル名で、赤で書いた08がボリュームを示すアトリビュートです。ここを書きかえれば、ディスクを開いたときのタイトルバーが返られます。
47 52 2D 53 41 4B 55 52 41 20 20 08 00 00 00 00 GR-SAKURA .....
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
とりあえず、MOEMOE-KYUNにでもしておきましょう。余った領域は20(空白)を詰めておきます。
次のD. H.o.m.e.・・・と書いた部分の16×8バイトは、ロングファイル名が格納されています。このロングファイル名は、32ブロックの先頭の文字がインデックスになっていて、01→02→03→44の順に読むことになります。なお、44というのは、ファイル名のエントリの終了を表します。
44 20 00 48 00 6F 00 6D 00 65 00 0F 00 01 2E 00 D .H.o.m.e......
68 00 74 00 6D 00 6C 00 00 00 00 00 FF FF FF FF h.t.m.l.........
03 6E 00 65 00 73 00 61 00 73 00 0F 00 01 20 00 .n.e.s.a.s.... .
50 00 72 00 6F 00 6A 00 65 00 00 00 63 00 74 00 P.r.o.j.e...c.t.
02 66 00 6F 00 72 00 20 00 47 00 0F 00 01 61 00 .f.o.r. .G......
64 00 67 00 65 00 74 00 20 00 00 00 52 00 65 00 d.g.e.t. ...R.e.
01 53 00 41 00 4B 00 55 00 52 00 0F 00 01 41 00 .S.A.K.U.R....A.
20 00 42 00 4F 00 41 00 52 00 00 00 44 00 20 00 .B.O.A.R...D. .
このエントリは基本的にUNICODEになっているので、ASCII文字の後に00が付いています。そして10バイト + 12バイト + 4バイトに切られて32バイトのブロックの中に埋め込まれています。(つまり1つのブロックに13文字入る)
しかし、これを自分で書くとなると大変です。わけがわからなくなります。そこで、先頭の1バイトを0xE5で書き換えてしまいましょう。そのブロックは無効になるので、面倒だからそうしてしまいましょう。
そして、最後の
53 41 4B 55 52 41 7E 31 48 54 4D 21 00 00 00 08 SAKURA~1HTM!....
EA 40 EA 40 00 00 00 08 EA 40 02 00 6A 00 00 00 .@.@.....@..j...
のブロックはショートファイル名です。~1というのは、ロングファイル名が別にある場合にこういうファイル名になります。次の21は、アーカイブ属性と読み込み専用の属性を表しています。
注意しなければならないのは、小文字を使ってはいけないということです。DOSの8.3型式のファイル名ではすべて大文字なのです。小文字を使ってindex.htmなんてファイルを作ると、そのファイルは開くことができません。
このファイル名を書きかえれば、任意のファイルをUSBディスク中に作ることができます。ここでは、4D 4F 45 4D 4F 45 20 20 54 58 54 に書き換えます。
そのあとの、0800はファイルのタイムスタンプで「1:00:00」を、EA40は「2012/7/10」を表しています。一番重要なのが最後の6A000000です。これは、ファイルの長さを表わしていて、つまり0x0000006aバイト(106)バイトのサイズがあることを示しています。

次に、ファイルの中身本体を書き換えることにします。ファイルの内容は、0xffff1c08番地あたりに書かれているので、この部分を書きかえればよいことになります。HTMLファイルのようなものが書かれていた場所を置き換えましょう。
で、実際に書き換えたのが上の図です。後ろの部分を0x20(空白)で埋めているほか、ディレクトリエントリ中のファイルサイズも0x00000042に直しておきました。
こうやって修正したMOTファイルを書き込んでGR-SAKURAをつないでみましょう。
すると、リセット後に何やらUSBが認識されて・・・

このようになりました。
ファイルを開くと、
中身はこうなっています。これで、USBマスストレージの中に任意のファイルを中にいれておくことができますね。この情報が皆様の何かのお役に立てれば幸いです。
書き換えたファームウェアは、Renesas Rulzにアップロードしました。
http://www.renesasrulz.com/community/demoboards/gr/japanese/gr_showcase_j/blog/2012/10/31/%E3%81%8C%E3%81%98%E3%81%87%E3%82%8B%E3%81%AD%E3%81%AE%E5%88%9D%E6%9C%9F%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E5%86%85%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA
このファームウェアを試してみたい方は、上のURLをご覧ください。
余談:なお、このルネサスのファームウェアは、GR-SAKURAに使用許諾しているとのことなので、RaXino-iのファームウェアとしては採用しません。
余談2:GR-SAKURAのファームウェアのディレクトリエントリが示しているファイルサイズは0x0000006a(106バイト)だけど、実際のHTMLファイルの中身は0x62(98バイト)しかない。それゆえ、"SAKURA BOARD for Gadget Renesas Project Home.html"の最後には8バイトのゴミがついてしまっていることに気がついた。
(クリックで拡大)
最近のコメント