2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PCファームウェアプログラミングをはじめよう (とりあえずHello World編)

Last updated at Posted at 2024-09-20

これをビルドします https://github.com/tanakamura/my_firmware/blob/main/d945gclf_helloworld/

できた rom というファイルがファームウェアです。

これを焼きます。

このCH341Aとかいうのを用意します。

(本当はよくないです。CH341A は 5Vかけますが、SPI Flashに5Vかけるのは間違いらしいです。参考 : https://libreboot.org/docs/install/spi.html#do-not-use-ch341a 壊れたら困るマザボを使うときはやめましょう。raspi の spi などを使うとよいらしいです)

対応するマザーボードを用意します。ここで使っているプログラムは、D945GCLF(D945GCLF2でも可)とかいう今は売ってないマザーボードでしか動かないです。

PC ファームウェアプログラミングでは、マザーボード決め打ちでプログラムする必要があります。ハードルは高いですね。

(まあまだこれは特殊なことはしてないので、ich7 + smsc のsuperio積んでるマザボなら動く可能性ある)

CH341A のクリップで、SPI Flash をはさみます。D945GCLF2 の場合はここです。
image.png

この写真でいう、1番と、
image.png

この写真でいう、丸が付いてる部分(左上)を繋ぐようにします。(線が赤く塗ってあるのでそれを目印にします)
image.png

うまく接続できていれば、 flashrom というプログラムで、SPI Flash ROM の中身にアクセスできます。

必ずバックアップをとります。

$ # original.rom というファイルに保存されます
$ sudo flashrom -p ch341a_spi -r original.rom
$ # D945GCLFの場合はチップ認識が自動でできないので指定がいる
$ # sudo flashrom -p ch341a_spi -r original.rom -c SST25LF040A

CH341Aのクリップはスーパー不安定なので、難易度は高いです。成功するまでクリップの接続をためしましょう。(CH341Aのクリップというかはんだ付けしてあるチップを外から挟もうというのがよくないです)

さっきビルドしたromを焼きます。

 $ sudo flashrom -p ch341a_spi -w -c SST25LF040A -l init.layout -i init:rom

(最後の64KiBに書けばいいだけなので、範囲を書いたinit.layoutというファイルを使って書く時間を短縮してます)

シリアルケーブルを繋ぎます。え?シリアルケーブル持ってない?ファームウェア開発では必須なので必ず用意してください。USB-シリアル変換でも可。

minicom などのシリアルが見れるプログラムでシリアルを見ます

 $ LANG=C sudo minicom -D /dev/ttyS0

電源ON。

Hello, World!

Hello, World! の文字が見れましたね!

https://qiita.com/tanakmura/items/2a631a3b81bf583bf4b3 解説

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?