備忘録

趣味に生きるオタクの備忘録

vcgencmdで、Raspberry Pi4B+のEEPROMの中身確認

UARTを出したい件の続き。
ここ >> https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
にかいてある、EEPROMの中身チェックをやってみることに。

Raspi4B+をRaspbian OS(2020/Feb/13)で起動して、サクっとコマンドを打ってみます。

pi@raspberrypi:~$ vcgencmd bootloader_config
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0













pi@raspberrypi:~$ vcgencmd bootloader_version
Sep 10 2019 10:41:50
version f626c772b15ba1b7e0532a8d50a761b3ccbdf3bb (release)
timestamp 1568112110
pi@raspberrypi:~$

めっちゃ空白多いですが、出力にそのまま空白が出てます。
とりあえず、EEPROMの設定値にBOOT_UARTがそのまま入っているのですね。

具体的にEEPROMを書き換える作業を確認していきます。
具体的には、ここ >> https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md
に書いてある作業。

上のページから、コマンドを抜粋しました。

#EEPROMのバイナリを作業ディレクトリにCopy
cp /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2019-09-10.bin pieeprom.bin   

#バイナリからtxtに変換
rpi-eeprom-config pieeprom.bin > bootconf.txt                    

#txtからバイナリに変換
rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin   

これを見る感じ、どうやら /lib/firmware以下の中に色々とEEPROMの設定値ファイルが突っ込まれているみたいですね。
実機でチェックします。

pi@raspberrypi:~$ ls -al /lib/firmware/raspberrypi/bootloader
total 28
drwxr-xr-x 4 root root 4096 Feb 13 15:57 .
drwxr-xr-x 3 root root 4096 Feb 13 15:57 ..
drwxr-xr-x 2 root root 4096 Feb 13 15:57 beta
drwxr-xr-x 2 root root 4096 Feb 13 15:57 critical

  • rw-r--r-- 1 root root 5227 Jan 22 14:28 raspberry_pi4_network_boot_beta.md
  • rw-r--r-- 1 root root 3819 Jan 22 14:28 release-notes.md

pi@raspberrypi:~$ ls -al /lib/firmware/raspberrypi/bootloader/beta/
total 5484
drwxr-xr-x 2 root root 4096 Feb 13 15:57 .
drwxr-xr-x 4 root root 4096 Feb 13 15:57 ..

  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-09-06.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-09-10.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-09-23.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-09-25.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-10-08.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-10-16.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-11-18.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-12-03.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2020-01-09.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2020-01-17.bin
  • rw-r--r-- 1 root root 60868 Jan 22 14:28 recovery.bin
  • rw-r--r-- 1 root root 96984 Jan 22 14:28 vl805-00013701.bin
  • rw-r--r-- 1 root root 98712 Jan 22 14:28 vl805-000137ab.bin
  • rw-r--r-- 1 root root 98904 Jan 22 14:28 vl805-000137ad.bin

pi@raspberrypi:~$ ls -al /lib/firmware/raspberrypi/bootloader/critical/
total 1388
drwxr-xr-x 2 root root 4096 Feb 13 15:57 .
drwxr-xr-x 4 root root 4096 Feb 13 15:57 ..

  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-07-15.bin
  • rw-r--r-- 1 root root 524288 Jan 22 14:28 pieeprom-2019-09-10.bin
  • rw-r--r-- 1 root root 60820 Jan 22 14:28 recovery.bin
  • rw-r--r-- 1 root root 96984 Jan 22 14:28 vl805-00013701.bin
  • rw-r--r-- 1 root root 98712 Jan 22 14:28 vl805-000137ab.bin
  • rw-r--r-- 1 root root 98904 Jan 22 14:28 vl805-000137ad.bin

pi@raspberrypi:~$

なるほどって感じ。Betaと書いてますが別なEEPROMバイナリも出てるみたいですね。

とりあえず、いくつかEEPROMバイナリをtxtにしてみます。

pi@raspberrypi:~$ cp /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2019-09-10.bin 0910
pi@raspberrypi:~$ cp /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-01-17.bin 0117

pi@raspberrypi:~$ rpi-eeprom-config 0910 > 0910.txt
pi@raspberrypi:~$ rpi-eeprom-config 0117 > 0117.txt
pi@raspberrypi:~$ cat 0910.txt
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
FREEZE_VERSION=0












pi@raspberrypi:~$ cat 0117.txt
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
TFTP_IP=
TFTP_PREFIX=0
BOOT_ORDER=0x1
SD_BOOT_MAX_RETRIES=3
NET_BOOT_MAX_RETRIES=5
[none]
FREEZE_VERSION=0

pi@raspberrypi:~$

0910の方は、3つの設定値は同じでしたが "FREEZE_VERSION"だけエントリが追加されてますね。
また、0117の方はNetboot関連っぽい内容が追加されてます。

一応、設定値をミスるなどしてEEPROM焼きに失敗?しても
>> https://www.raspberrypi.org/downloads/
Recoveryの節にあるように、公式からEEPROMバイナリを落としてきて、FATでフォーマットした空のSDに展開すれば焼き直しできるみたいですね。

さてどっちをEEPROMに焼くか考えなければ・・・