PC ファームウェアプログラミングでは、マザーボード決め打ちでプログラムする必要があります。ハードルは高いですね。
最初に書いたとおり、マザーボードごとにプログラムを書くのは、かなりハードルが高い。
それでも、ある程度難易度の低いマザーボードはあるので、最初はできるだけ簡単なものを選びたいところだ。
(簡単なものではなく困難を追求する人はcoreboot未移植のボードを探して移植とかするといいのではないかな…)
簡単だと思う基準2点を書いておく
coreboot サポートがあるマザーボード
ファームウェアプログラミングにおいて一番苦労する点はドキュメントが無いという点である。マザーボード上のチップがどう接続されているか知ってないとどうしようもない問題が若干あるが、この情報は入手できないのが普通だ。
corebootが移植済みのマザーボードであれば、完全なドキュメントがなくても、実際に動くプログラムを参考にして実験することができる。
(私もかなりcorebootのコードを参考にしている)
今のcorebootがサポートするマザーボード一覧は https://github.com/coreboot/coreboot/tree/main/src/mainboard これを見るのが一番確実だと思う。全てが常にテストされてるわけではないかもしれないが、それでもゼロからプログラム書くよりは大分ラクなはずだ。
最近では、公式ファームウェアとしてcorebootを採用するPCも増えてきている。特に、Chromebookは極端に古い世代以外は全てcorebootを公式採用しており、日本でも入手しやすく、おすすめである。
(宣伝 : Chromebookにファームウェアを書く方法を Binary Hacks Rebooted https://www.amazon.co.jp/dp/4814400853 という本に書きました。みんな参考にしてね。)
他に、日本では入手が難しいかもしれないが、
- Purism 社の各種PC https://puri.sm/products/librem-14/
- Star Labs 社の各種PC https://jp.starlabs.systems/pages/starbook
- PC Engines 社のAPU https://pcengines.ch/apu2.htm
等が公式にcorebootをサポートしているようだ。(私はどれも使ったことない)
できるだけ古いマザーボード
新しいマザーボードは機能が多く、それだけで単純に難しい。
あと、CPU, North bridge, South bridge が分離していた頃のチップセットのドキュメントは情報量がちょうど良く、読みやすいという気がする。
例えば、前回紹介した、ich7 のデータシートは、IO のみが書かれていて、周辺IOについて知りたいときだけ読めばいいことが分かる。
https://www.intel.com/content/dam/doc/datasheet/i-o-controller-hub-7-datasheet.pdf
それに対してSoCになってしまったApolloLakeとかは
https://www.intel.com/content/www/us/en/content-details/334817/intel-pentium-and-celeron-processor-n-and-j-series-datasheet-v1.html
https://www.intel.com/content/www/us/en/content-details/334818/intel-pentium-and-celeron-processor-n-and-j-series-datasheet-volume-2.html
https://www.intel.com/content/www/us/en/content-details/334819/intel-pentium-and-celeron-processor-n-and-j-series-datasheet-v3.html
この3冊から目当ての箇所を探す必要があり、若干困難である。
(あと個人的な主観でいうと、ich7のデータシートのほうが、必要な情報がちゃんと書いてある…気がする)
あと、新しいマザーボードが難しい理由として、新しい(といっても10年前)マザーボードには、Intel Boot Guard という機能が有効になっている場合がある。
これは、署名されてないファームウェアを起動しないようにする機能で、これが有効になってるとそもそも自作ファームウェアを実行することができない。
これはマザーボードの製作者が有効無効を決められるはずだが、specに書いてないので、動かしてみないとわからない。買ってきたマザーボードがBoot Guard有効になってると最悪である。お店の人に聞いて確認しよう。お店の人も知らないと思う。