ふるた技工所(てっこうしょ)

2013/01/08(火)22:56

SPIPGM で書き損じ PC BIOS 復旧 - UUID 多分消えちゃったかな

電子工作(729)

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 になっていて上書きしない様になっている。元のイメージは保存してある。困った場合は、編集して書き直すことになるだろう。 ケース探さないとなぁ。

続きを読む

このブログでよく読まれている記事

もっと見る

総合記事ランキング

もっと見る