라즈베리 파이를 이용한 Z620 부트블럭 업데이트

   조회 14779   추천 5    

http://www.2cpu.co.kr/lec/3167#c_3189 (696)

책상위에서 먼지가 쌓여가는 라즈베리 파이에도 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개 풀로 장착해봤습니다. 아무 문제없이 잘 동작합니다.

Uknow 2019-07
글 작성에 정보 공유에 깊이 감사드립니다.
     
감사합니다~
황진우 2019-07
오...
이것도 멋집니다. 하하하
롬라이트기 구입을 안해도.... 하하하
     
롬라이터 없이 가능한 것도 좋긴 하지만, 안전하게 업데이트 가능한 방법이라서 더 좋습니다. 라즈베리 파이의 SPI가 3.3V 이기도 하고, 25Q128BVFG는 64kB block erase를 지원하는데 64kB-align 되어있는 boot block 부분만 지우고 다시 쓰는 방식이기 때문에.. 실패의 가능성이 거의 없습니다.
라즈베리 파이를 이용한 롬 플래싱이라니 대단합니다. ^^

역시 이 곳에는 고수님들이 많습니다. 하하하
     
민현기님 글에 숟가락 좀 얹었습니다. ㅋㅋ
팽짱정석 2019-07
이 또한 멋집니다!!
추천!
     
감사합니다~
라즈베리의 슈퍼파워이네요. 이것은 배워야지 ㅎ
저번 vpn서버에 이어 부트블록 리프레싱까지.  ...
이제 또 어떤 응용이 나올까요 ㅋㅋ
업힐입니다.
     
OS가 받쳐주고 다양한 I/O가 있으니.. 정말 다양하게 써먹을 수 있는 듯 합니다. 좀 먼지가 쌓이더라도 책상 위에 하나쯤은 놔둬야 할 것 같아요.
송주환 2019-07
추천드립니다
     
감사합니다~
바람곰돌 2019-07
와...롬라이터 없이 라즈베리파이로. 대단하네요^^
     
대단한 건 아니고.. SPI 방식 플래시라서 가능합니다.
백룡 2019-07
위 강좌를 따라 해보고 있습니다

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)
 이 메시지가 안나오네요
     
클립을 다시 결합해도 인식이 안된다면, 클립을 180도 돌려서 결합해보시면 어떨까요.
          
백룡 2019-07
위 상태에서 민현기님 글 방식으로 Detect 하면 정상적으로 ROM이 읽어 지네요.
라즈베리파이 에서는 계속 저 상태 입니다. (Found Generic flash chip "unknown SPI chip (RDID)" (0 kB, SPI). )
               
SPI 활성화 안된 상태가 아닐까요?
                    
백룡 2019-07
SPI 활성화 시킨 상태입니다.
연결 핀도 재차 확인 했구요
                         
음.. 저도 NVMe 드라이버 업데이트 하면서 처음부터 다시 한번 해보겠습니다. 특별할 게 없는 내용인데.. 이상하네요..
     
어제 NVMe 드라이버도 넣을 겸 해서 다시 해봤는데.. 잘 되네요. 제 경우에는 probing 로그 끝부분이 아래와 같습니다:
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 정도로 시도해보세요.
          
백룡 2020-04
10MHz 로 수차례 시도해서 성공 했습니다,
               
아 그렇군요. 다행입니다. 30MHz는 사실 Winbond 25Q128BVFG 칩이 지원하는 최대 속도입니다. 클립이 굉장히 잘 끼워진 경우에 가능할 것 같고요. 저도 잘 안돼서 5MHz 까지 내려서 했던 기억이 있습니다.
                    
백룡 2020-04
네 클립을 잘 끼워야 되더군요.
이것도 역시 반복 작업을 해 봐야 되네요


제목Page 12/28
2013-09   44603   빠시온
2013-09   52392   빠시온
2020-08   9501   tedious
2022-03   25994   미친감자
2018-04   24950   황진우
2020-08   10039   Tails
2021-09   21123   딥러닝서버
2012-02   45683   박남규
2018-04   19052   송주환
2018-04   21790   RedEye
2020-01   9259   황진우
2024-05   24381   삐돌이슬픔이
2024-07   19782   박문형
2013-10   100966   황진우
2023-01   52902   박문형
2019-04   16041   김황중
2023-01   35869   딥러닝서버
2020-02   7772   김준연
2022-03   8013   화정큐삼
2018-05   23744   TRUE