책상위에서 먼지가 쌓여가는 라즈베리 파이에도 3.3V SPI가 제공됩니다.
민현기님께서 공유해주신 내용을 바탕으로.. (다시 한번 감사드립니다)
라즈베리 파이로 Z620 보드 부트블럭 업데이트하는 방법을 간단히 정리해봅니다.
1. 준비물
- 라즈베리 파이 (라즈비안 기준)
- SOP16 to DIP8 테스트 클립
- female to female 점퍼선 6개
- J61_0394.BIN 파일
2. 사전 작업
민현기님 글을 참고해서 BIOS와 ME FW를 업데이트하고, 전원을 분리 후 잔류 제거합니다.
라즈베리 파이 터미널에서 raspi-config를 사용하거나, GUI에서 Rasberry Pi Configuration을 이용해서 SPI를 활성화합니다.
3. 라즈베리 파이에 테스트 클립 연결
라즈베리 파이 pinout(40핀 B/B+ 기준)과 DIP8 쪽보드 pinout을 점퍼선으로 아래와 같이 연결합니다:
- 17 (3.3V) - 8 (VCC)
- 19 (SPI_MOSI) -> 5 (DI)
- 20 (GND) -> 4 (GND)
- 21 (SPI_MISO) -> 2 (DO)
- 23 (SPI_SCLK) -> 6 (CLK)
- 24 (SPI_CE0) -> 1 (/CS)
3번 7번 핀은 연결하지 않습니다.
4. 라즈베리 파이 터미널에서 업데이트 작업
먼저 flashrom utility가 없다면 설치합니다(네트웍 연결 필요):
$ sudo apt install flashrom
클립이 제대로 찝혔는지도 확인할 겸, chip detect를 30MHz로 시도해봅니다:
$ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -V
flashrom의 DB에는 Winbond 25Q128BVFG가 없는 것 같지만, 아래와 같은 내용이 출력되면 됩니다:
Found Winbond flash chip "W25Q128.V" (16384 kB, SPI)
일단 현재의 flash의 내용을 dump 해봅니다:
$ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -r flash-v1.bin
flash의 내용과 일치하는지 한번 비교도 해봅니다:
$ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -v flash-v1.bin
여기서 VERIFIED가 출력되어야 합니다. FAILED가 출력되면 클립을 다시 체결하고 다시 dump 합니다.
boot block 부분을 잘라낸 flash-v2.bin 파일을 생성합니다:
$ head -c 16320K flash-v1.bin > flash-v2.bin
J61_0394.BIN 파일에서 boot block 부분만 flash-v2.bin 파일에 추가합니다:
$ tail -c 64K J61_0394.BIN >> flash-v2.bin
아래와 같은 내용으로 layout.txt 파일을 생성합니다:
00000000:00feffff bios
00ff0000:00ffffff boot
flash-v2.bin 파일의 내용 중 boot block 부분만 업데이트합니다:
$ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -l layout.txt -i boot -w flash-v2.bin
제대로 업데이트가 됐는지 검사합니다:
$ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=30000 -v flash-v2.bin
VERIFIED가 출력되면 잘 된 것입니다. FAILED가 출력되면 처음 dump 부터 다시 시도해야 할 것 같습니다.
5. System Information 확인
전원을 넣고 BIOS에 들어가서 System Information의 Boot Block Date가 "03/06/2013"인지 확인합니다.
---
업데이트 한 보드에 E5-2643 v2 두개와 PC3-14900R 모듈 12개 풀로 장착해봤습니다. 아무 문제없이 잘 동작합니다.
이것도 멋집니다. 하하하
롬라이트기 구입을 안해도.... 하하하
역시 이 곳에는 고수님들이 많습니다. 하하하
추천!
저번 vpn서버에 이어 부트블록 리프레싱까지. ...
이제 또 어떤 응용이 나올까요 ㅋㅋ
업힐입니다.
Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0x80, id2 0x2020
Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI) on linux_spi.
Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0x0, id2 0x20
Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI).
이렇게 뜨는데요. 뭐가 잘못 되었는지 클립을 다시 결합해도 동일하네요
Found Winbond flash chip "W25Q128.V" (16384 kB, SPI)
이 메시지가 안나오네요
라즈베리파이 에서는 계속 저 상태 입니다. (Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI). )
연결 핀도 재차 확인 했구요
Probing for Winbond unknown Winbond (ex Nexcom) SPI chip, 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4018
Probing for Generic unknown SPI chip (RDID), 0 kB: probe_spi_rdid_generic: id1 0xef, id2 0x4018
Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xef, id2 0x17
Found Winbond flash chip "W25Q128.V" (16384 kB, SPI).
id1, id2 값이 너무 다른데요. 혹시 모르니 30MHz 말고.. 좀 낮춰서 10MHz 정도로 시도해보세요.
이것도 역시 반복 작업을 해 봐야 되네요