2013/01/08(火)22:56
SPIPGM で書き損じ PC BIOS 復旧 - UUID 多分消えちゃったかな
BIOS Update に失敗して、書き損じてしまったマザーボード ASUS P8H67-M PRO をもらった。起動しない事を確認した後暫く放置していた。
SPI ROM は MXIC MX25L3206EPI だった。探してみると SPIPGM で書き込めることが分かった。LPT ポート接続の簡易書き込みツールだ。
回路も出ているのでこれを組み立てることにした。
PDF と BschV3 回路図
元の回路でも十分に動作する。3.3V 電源周りを USB の VBUS から取る事にする。電源 ON/OFF スイッチ、入出力端子のラッチアップ保護ダイオードを付けることにした。電源スイッチは無くても USB ケーブルの抜き挿して十分に代りになる。
2012.1.8 基板画像追加
TA48033F は使いづらいレギュレータだ。発振を押さえるため、試行錯誤した。負荷側のコンデンサが多い。何回か使ってみして経験的に 470uF の電解コンデンサ(一般用途)を負荷しないとダメなことは分かっていたけれど、ついつい少なめにしてしまった。
USB 電源を断ってしまうと、一時的に TA48033F の負荷側の方が電圧が高い状態になる。3.3V なので「多分」内部トランジスタやダイオードのブレークダウン電圧以下だろう。保護しなくても平気かな...
書き込みを実施する PC のプリンタポートを BIOS 設定で Enable にする。どのモードでも動作すると思われる。自分は EPP モードにしておいた。
始め Linux で ROM のダンプを取ってみる。4MiByte の読み出しに 1 日程掛かった。遅すぎる。ツールが Linux に最適化されていない。Windows Xp ならば 3~5 分ほどもあれば ROM ダンプは完了する。
Windows Xp 上で SPI Flash ROM に書き込む手順は次の様にした。
SPI flash memory が認識できるかテスト
SPIPGMW /i
元のイメージを読みだす 1 回目
SPIPGMW /d before0.bin
元のイメージを読みだす 2 回目
SPIPGMW /d before1.bin
何かのツールで before0.bin before1.bin を比較(違いが無ければ上手く動作している)
書き込みプロテクト解除
SPIPGMW /u
消去
SPIPGMW /e
書き込み
SPIPGMW /p P8H67-M-PRO-ASUS-3806.ROM
照合
SPIPGMW /v P8H67-M-PRO-ASUS-3806.ROM
他のマザーボードに応用する場合、ダンプした ROM イメージと比較してみて、良く似ているか確かめた方が良いだろう。
memtest を実施、問題なし。ROM イメージの照合中に UUID など固有番号と思われるバイト列を消してしまう可能性に気付く。ダウンロードした BIOS イメージは固有番号部分と思われる個所が 0xff になっていて上書きしない様になっている。元のイメージは保存してある。困った場合は、編集して書き直すことになるだろう。
ケース探さないとなぁ。