Raspberry Pi を使用して、PC の BIOS によく使われている NOR FLASH チップ (spi通信)の内容を書き換えます。
flashrom というツールを使用します。
私がやってできたのは以下の3つです。
Raspberry Pi 2 Model B V1.1
Raspberry Pi 3 Model B V1.2
Raspberry Pi Zero W V1.2
ラズベリーパイにOS(raspbian)をインストールし、設定を行います。
raspbian を使用します。
ラズベリーパイのOSセットアップについては以下のページに説明を書いておきました。
/server/RaspberryPi_noobs_raspbian_install.html
raspbian が起動したら、設定を開き、SPIを有効にしておきます。
ターミナルを起動し、su にて root 権限に移行します
パスワードが設定されていなければ、sudo passwd root にて設定します。
flashrom をインストールします
必要なコンポーネントをインストールしたのち、flashromをインストールします。
sudo apt-get install build-essential pciutils usbutils libpci-dev libusb-dev libusb-1.0-0 libusb-1.0-0-dev libftdi1 libftdi-dev zlib1g-dev subversion
sudo apt-get update -y
sudo apt-get install -y flashrom
raspberry pi と BIOSチップ(EEPROM(SPI)) を接続します
チップの Vcc, HOLD, WPピンに RaspberryPi の 3.3Vピンを接続します
チップの SIピンに RaspberryPi の SPI MOSIピンを接続します
チップの SOピンに RaspberryPi の SPI MISOピンを接続します
チップの SCKピンに RaspberryPi の SCLKピンを接続します
チップの Vssピンに RaspberryPi の GNDピンを接続します
チップの CSピンに RaspberryPi の CE0ピンを接続します
写真は raspberry pi zero w ですが、問題なく動きます。
|
ピン一覧(raspberry pi 3)
1 | | 3.3V | | | 5V | | 2 |
3 | SDA1, I2C | GPIO 02 | | | 5V | | 4 |
5 | SCL1, I2C | GPIO 03 | | | GND | | 6 |
7 | GPIO_GCLK | GPIO 04 | | | GPIO 14 | TXD0 | 8 |
9 | | GND | | | GPIO 15 | RXD0 | 10 |
11 | GPIO_GEN0 | GPIO 17 | | | GPIO 18 | GPIO_GEN1 | 12 |
13 | GPIO_GEN2 | GPIO 27 | | | GND | | 14 |
15 | GPIO_GEN3 | GPIO 22 | | | GPIO 23 | GPIO_GEN4 | 16 |
17 | | 3.3V | ● | | GPIO 24 | GPIO_GEN5 | 18 |
19 | SPI_MOSI | GPIO 10 | 〇 | | GND | | 20 |
21 | SPI_MISO | GPIO 09 | ● | | GPIO 25 | GPIO_GEN6 | 22 |
23 | SPI_CLK | GPIO 11 | ● | ● | GPIO 08 | SPI_CE0_N | 24 |
25 | | GND | ● | | GPIO 07 | SPI_CE1_N | 26 |
27 | I2C ID EEPROM | ID_SD | | | ID_SC | I2C ID EEPROM | 28 |
29 | | GPIO 05 | | | GND | | 30 |
31 | | GPIO 06 | | | GPIO 12 | | 32 |
33 | | GPIO 13 | | | GND | | 34 |
35 | | GPIO 19 | | | GPIO 16 | | 36 |
37 | | GPIO 26 | | | GPIO 20 | | 38 |
39 | | GND | | | GPIO 21 | | 40 |
|
|
CS | 1 | ● | 8 | Vcc |
SO | 2 | 7 | HOLD |
WP | 3 | 6 | SCK |
Vss | 4 | 5 | SI |
|
マザーボードメーカーのホームページから BIOS のイメージをダウンロードします。
マザーボードメーカーのホームページから、当該の BIOS のイメージをダウンロードします。
(もし、BIOS の形式が CAP であれば、「UEFITool」 を使用して、メニューの「CAPSULE」から、
バイナリのボディを書き出します)
ここでは、バイナリの BIOSファイルを「bios.bin」とリネームしました
パスを通すために、ダウンロードした BIOS が保存されている、Downloads フォルダに入ります。
cd /home/pi/Downloads
但し、日本語の場合は、「Downloads」ではなく、カタカナで「ダウンロード」なので、
ターミナルを、日本語入力可能にするか、もしくは以下をコピー&ペーストして使います。
cd /home/pi/ダウンロード
BIOSの内容をクリアします。
flashrom -E -V -p linux_spi:dev=/dev/spidev0.0,spispeed=16000
BIOSにromイメージを書き込みます。
flashrom -w bios.bin -V -p linux_spi:dev=/dev/spidev0.0,spispeed=16000
※ 書き込み速度は十分遅くしてありますが、スピードの問題で書き込めないことがあるようですので、spispeed の値を調整してください。
※ 基板上に直接取り付けられた、ソケットになっていない BIOS チップを書き換えるには、チップを挟み込むように接続する部材が必要です。
以上で、説明は終了です。
|