Blog posts by @retrage

mirror of https://retrage.github.io/

文鎮化したMinnowboardを復旧させる

MinnowboardIntel Atomを搭載した シングルボードコンピュータである. Minnowboardを使った実験で誤ったファームウェアを書き込んでしまい brick (文鎮化) させてしまったので SPI Flashを外部から書き換えることで復旧させる.

今回対象とするのは

である. 基本的にはこれらは同じ仕様であるが, 後述するような差異がSPI Flashに存在する.

SPI Flash Programmerを使った書き込み

Updating Firmware via SPI Flash Programmer を参考にする. このチュートリアルではDediProg SF100という 書き込み機を用いているが 手元にないため,他の書き込み機を利用する.

Minnowboardが搭載するSPI Flashには2種類存在する. Issue #98 によればMAXや一部のTurbotでは1.8VをVccとするが 大多数のTurbotではVccが3.3Vであるとのことである. これらの見分け方としてある抵抗が実装されているかで 調べることができるとされている.

  • 抵抗R152があり,抵抗R818がない場合: 3.3V
  • 抵抗R152がなく,抵抗R818がある場合: 1.8V

Minnowboard Turbot Domumentation によればそれぞれ次のようなSPI Flashが搭載されている.

  • 3.3V: WINBOND W25Q64BVSSIG, MICRON N25Q064A13
  • 1.8V: WINBOND W25Q64FWSSIG, MICRON N25Q064A11

Minnowboard MAX

MAXは以前にcorebootのバイナリイメージを書き込んだが 失敗したためbrickしていたものである. このボードでは1.8VのSPI Flashが搭載されていた. ここではEZP2010を用いて書き込みを行った.

Minnowboard Turbot Dual-Core

Turbotに対して Intel Architecture Firmware Resource Center のrelease noteにあるように UEFI Shell経由でファームウェアを書き換えた. これはIntelの配布するバイナリイメージでは問題なく動作した. 一方で手元でビルドしたファームウェアを書き込んだ場合, UEFI Shellに入る直前に次のようなAssertion Errorにより ハングするようになってしまった.

OSIndication Variable Value 0

ASSERT_EFI_ERROR (Status = Not Found)
ASSERT [ISPDxe] c:\minnowboard2closesource\Vlv2DeviceRefCodePkg\ValleyView2Soc\NorthCluster\ISPDxe\ISPDxe.c(273): !EFI_ERROR (Status)

ここに書かれているソースコードは公開されておらず, バイナリファイルのみが配布されている. このため原因の特定は容易ではない.

2019/08/05 追記

以上の記事について公開していたところ, Brian Delgadoさんから助言をいただき Assertion Errorについて解決できたので追記する. 問題はファームウェアのビルドに使うiaslである. 新しいiaslでは上記の問題が発生するため, VERSION 20160527 を利用してビルドする. 手元ではこれでDebug, Relaseどちらも動作することを確認した. Brian Delgadoさん,情報をどうもありがとうございました.