ビルドしたROMを起動させるには、どうにかして、基板にBIOSを焼く必要があります。
考えられる手としては、以下のような手段があります。
- BIOSチップを外して、ROMライタで焼いて付け直す
- インサーキットで焼けるROMライタを接続して書き込む
- 現在のBIOSで起動して、ソフトで書き換える
前者2つが、本来は理想的ですが、ライタの機器が別途必要になってきます。そして、それらの機器は買うと結構高価で、おいそれとは買えないっす。(貧乏なのです)
ライタを自作すると安価にできる可能性もありますが、それなりに手間暇かかるので、さしあたって、
ソフトでなんとかできないか考えます。
幸いBLKDには「SpiUpdate.efi」というEFIシェル上で動作するBIOS書き換えツールが付属しているので、これを使ってみようと思います。
(ソースツリーのCrownBayPlatformPkg\Application\に入ってます。)
なのですが、BLDKのデフォルト設定でビルドしたBIOSがまともに起動する保障はまったく無く、
いきなり書き込んで起動しないと、成仏してしまうので、BIOSチップにソケットをつけて、元々の
BIOSは取っておいて、別のチップをとっかえひっかえできるようにします。
ROMライタが手に入った時もこのほうが便利です。
で、ヒートシンクを外して、どれがBIOSチップかなーと眺めてみて、それっぽいのが乗っかってたのでこれを外して、ソケットをつけます。確証はないです。経験則ですが、まず間違いないでしょう。
で、ここで、問題が生じます。ここにソケットつけると、ヒートシンクと干渉してしまいます。
これは困ったなー。策としては、ソケットを直付けせず、リード線を引っ張ってソケットを付けるか、
小さいヒートシンクを手に入れる。前者の方法はかっちょ悪いし、強度的に不安な感じなので、
後者で行きます。ただ、元々ついてたヒートシンクの大きさだからこそ、ファンレスが実現できてた
んだと思われるので、小さいヒートシンクでは、発熱がやばそうです。なので、ファンを付けることを
考えます。
で、いいのないかなーとAmazonを物色してみました。CPUのサイズを計ってみたところ、22x22mmです。このサイズの汎用ヒートシンクってあんまりないですねー。そしてそのサイズのファンも無いっす。(Amazonで探すのが間違いかもしれませんが。)で、以下の物を注文してみました。
Amazonで買える22x22mmの汎用ヒートシンクはこれしかなかったっす。形状は心もとない感じですが、レッツトライです。そして、ファンはヒートシンクに直接つけられないので、困ってたんですが、クリップ式のやつをみつけたので、これにします。あと、ファンの電源をHDDの電源から分岐して取るためのケーブルです。
後から気づいたんですが、クリップ式のファンを基板の淵にでも付ければいいや位に思ってたんですが、甘かったっす。基板にそんなスペースは無かったっす。ですが、奇跡的にクリップの位置と
ヒートシンクを取り付けるためのネジ部分の突起の寸法が一致してたので、ネジが半分くらい飛び出るようにして、うまいこと固定できました。
で、以下のような感じになりました。
BIOSのソケットは半田ごて的にかなりシンドイ隙間しかないですが、鉄の精神力で何とか付けました。にしても、ヒートシンクが心細いです。コンシューマ向けとはいえ、ヒートシンクの肝である表面積を犠牲にしてまで、なんでこんな形状にしてしまったのか、理解に苦しみます。そのうちいいのが見つかったら交換したいですねー。
一応、元のBIOSをソケットに入れて、起動してみたところ、動いてくれました。EFIShellでしばらく放置しててもサーマルシャットダウンしなかったので、なんとかいけそうです。(OS起動して重い処理させたら落ちるかも)
本題のBIOS書き換えです。作戦としては、元のBIOSでEFIShellを起動して、電源入ったまま別のチップに交換してSpiUpdate.efiを実行してしまおうという、少々荒っぽい方法です。
で、手持ちの適当なSPIチップでやってみたんですが、なんと、このコマンドSSTの25VF016BというSPIチップしかサポートしてないよ的なメッセージがでて、書き換えできませんでした。
うーん。これはコマンドの制約なのか、元のBIOSの制約なのかわかりませんが、困ったちゃんです。
せめてコマンドのソースがあれば別のチップもサポートできるように書き換えできたかもしれませんが、これバイナリのみの提供のようです。
しばらく他の策を考えてたんですが、現状では25VF016Bを手に入れるのが最も安価で手っ取り早そうなので、その方向で考えます。
というわけで、今週はここまでです。また来週がんばります。
0 件のコメント:
コメントを投稿