| 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 subversionsudo 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 チップを書き換えるには、チップを挟み込むように接続する部材が必要です。
 
 以上で、説明は終了です。
 
 
 |