今回は、AMDのAlchemy搭載ボードでフラッシュROM書き換えを実践します。
(結構苦労しました。)
実験に用いたターゲットボードは、AMDの純正Alchemy評価ボード「CABERNET DBAu1550」です。
このボードは、CPUにMIPS互換の高性能な組み込みCPUである、AU1550を搭載しており、1GbitものフラッシュROMが搭載されている凄いものです。
フラッシュROMは、正副の2バンク構成で、スイッチで切り替えられます。
両方のメモリにモニタが書き込まれており、片方のメモリの内容を誤って書き換えてしまっても、もう片方のメモリに書き込まれたモニタから復活できるというものです。
メモリの構成としては、16MWordで16bit幅のフラッシュROM「Am29LV256」が2個並列に32ビットのメモリを構成し、それが2バンクあります。
MITOUJTAGで、デバイスを自動検出すると、AU1550が検出されます。パッケージの形状がMITOUJTAGに登録されていないので、少し大きめのBGA676を読み込ませています。
フラッシュROMライタを起動し、CPUとフラッシュROMのピンの接続を入力します。
・フラッシュROMのOEは、CPUのH1番ピンのR_OE
・フラッシュROMのCEは、CPUのD1番ピンのR_CS0
・フラッシュROMのWEは、CPUのH2番ピンのR_WE
・フラッシュROMのアドレスには、CPUの[R_A_25..R_A_2]
・フラッシュROMのデータは、CPUの[R_D_31..R_D_0]
・CPUの[R_CS3..R_CS1]はPULLUP指定
・CPUの[R_A_26..R_A_28]はPULLUP指定
こうすると、MITOUJTAGからフラッシュROMの中身が読み出せるようになりました。次の画面はCFIコードを読み出している図です。
また、開発中のMITOUJTAGには、広大なフラッシュROMのメモリ領域から、データが格納されている領域をすばやくスキャンするための機能も付け加えました。この機能は1024バイトごとにメモリの内容を読み出して、FFではない値が格納されている連続する領域を探してくれるというものです。フラッシュROMの解析に役に立ちます。
さて、実験中にこのボードのフラッシュメモリを誤って消してしまいました。表裏のバンクを両方とも消してしまったので、どこからも起動しません。
(ちなみに、サイズの大きいメモリだからでしょうか、メモリ全域を消去するのに、250秒くらいかかります。)
データを復活させようにも、もとのバックアップを取っておかなかったのでとても困りましたが、評価ボードのCD-ROMには、MIPS用高機能モニタ「YAMON」のバイナリイメージがモトローラ形式のHEXファイルとして入っていたのでこれを利用することにしました。
ところが、objcopyでHEXファイルをバイナリに変換して書き込んでも、YAMONは起動しません。いろいろ悩んだ挙句、なんとかフラッシュROMを復活させることができました。
YAMONのHEXファイル「yamon-02.24DB1550.rec.m」には下記のように3つの領域に分かれてプログラムが入っています。
領域1 0xa0100000-0xa0100d00
領域2 0xa0110000-0xa014a988
領域3 0xa0190000-0xa01cacc0
これは、CPUが動作している状態でMMUを通してメインメモリ上に展開するためのアドレスなので、フラッシュROMにじかに書き込むには、物理アドレスに変換してやらなければなりません。
このプログラムはフラッシュROMの0x00F00000番地から格納するので、上記のアドレスからA0100000を減じて4で割り、0x00F00000を足したアドレスに変換します。4で割るのは、32bitでアクセスするフラッシュROMの物理アドレスに対応させるためです。すると、
領域1 00F00000-00F00340
領域2 00F04000-00F12A62
領域3 00F24000-00F32B30
となります。
どうやら、objcopyでHEXからバイナリに変換すると各領域間が00で埋められてしまうことや、各領域の開始アドレスが正しくデコードされないかもしれないことが原因と考え、HEXファイルの変換ツールを自作しました。
3つの領域のデータを書き戻してやると、見事にYAMONが復活しました。(実際には領域3は書き戻さなくても動作しました。
書き込みは数分で終了します。
バイナリを少し編集して書き込むと、起動画面とプロンプトを変更することができました。
まだ、すべての問題が解決しているわけではありませんが、おおむねフラッシュROMの読み書き消去機能は完成に近づいたといえるでしょう。
これまでに検証してきた結果を反映させ、そろそろMITOUJTAGの新版をリリースいたします。ご期待ください。
最近のコメント