새소식

IoT

Raspberry Pi 5를 활용한 SOP 8-Pin Flash Dump

  • -

Raspberry Pi 5를 활용한 SOP  8-Pin Flash Dump



SOP(Small Outline Package) 8-Pin


SOP는 대표적인 표면 실장형 타입의 직접 회로(IC)입니다.

SOP의 Pin은 8핀 부터 시작해 수십 개의 핀을 가지고 있을 수 있으며, 크기와 작고 무게가 가볍기 때문에 소형 전자 기기에 많이 사용됩니다.

이번 실습에서 사용하는 SOP는 8-Pin입니다.

XMC사의 25QH16CHIG 칩입니다.

 

상세 칩의 Pin 정보는 아래와 같습니다. 

 

/CS(Chip Select Input)

  • 입력(I) 핀으로, 칩을 활성화하거나 비활성화하는 신호를 받습니다.
  • 이 핀이 저전압일 때 칩이 활성화되어 통신이 가능하며, 고전압일 때는 통신이 비활성화됩니다.

DO(Data Output)

  • 입출력(I/O) 핀으로, 데이터를 출력하는 기본적인 핀입니다. 이 핀은 칩이 데이터를 주고 받을 때 사용됩니다.

/WP(Write Protect Input)

  • 입출력(I/O) 핀으로, 쓰기 보호 기능을 제어합니다. 
  • 이 핀이 저전압일 때 쓰기 보호가 활성화되어 데이터 쓰기가 차단됩니다.
  • 일부 모드에서는 데이터 입출력으로도 기능할 수 있습니다.

GND(Ground)

  • 전기가 흐를 수 있도록 도와주는 접지핀입니다.

DI(Data Input)

  • 입출력(I/O) 핀으로, 데이터 입력의 주 역할을 합니다. 
  • 데이터를 칩으로 보낼 때 이 핀을 통해 데이터가 입력됩니다.

CLK(Serial Clock Input)

  • 입력(I) 핀으로, 직렬 클록 신호를 제공합니다. 
  • 이 클록 신호는 데이터가 언제 읽히고 쓰여야 하는지를 동기화하는 데 사용됩니다.

/HOLD or /RESET(Data Input Output)

  • 입출력(I/O) 핀으로, 통신 중 데이터 전송을 일시 중지하거나 칩을 리셋하는 데 사용됩니다.
  • 이 핀이 저전압일 때 해당 기능이 활성화됩니다.

VCC(Power Supply)

  • 전원 공급 핀으로, 칩의 작동에 필요한 전력을 제공합니다.

관련 세부 상세는 아래 링크에 있습니다.

XMC사 XM25QH16C 관련 링크

 

XMC-支持服务

•single voltage supply -voltage: 2.3v to 3.6v •high performance serial flash (spi) -maximum to 108mhz for fast read operation -continuous read 8/16/32/64 byte burst wrap -qpi for reduced instruction overhead •flexible memory architecture -sector size

www.xmcwh.com

 

Raspberry Pi 5 40 GPIO Pins 정보


Raspberry Pi 5의 GPIO 핀의 상세 정보입니다. Flash Dump를 위해서는 올바르게 Pin을 연결해야합니다.

 

Flash Dump에 사용될 Raspberry Pi 5의 주요 GPIO Pin들의 상세는 아래와 같습니다.

 

GPIO 17 (3.3V)

  • 이 핀은 고정된 3.3 볼트의 전원 공급 핀입니다. 여러 센서나 모듈을 Raspberry Pi에 연결할 때 필요한 전력을 제공하는데 사용됩니다.

GPIO 19 (SPI_MOSI)

  • SPI (Serial Peripheral Interface) 통신에서 "Master Out Slave In"의 약자로, Raspberry Pi (Master)에서 연결된 장치 (Slave)로 데이터를 전송할 때 사용하는 데이터 라인입니다.

GPIO 21 (SPI_MISO)

  • SPI 통신에서 "Master In Slave Out"의 약자로, 연결된 장치(슬레이브)에서 Raspberry Pi(마스터)로 데이터를 전송할 때 사용하는 데이터 라인입니다.

GPIO 23 (SPI_SCLK)

  • SPI 통신에서 클록(시계) 신호를 제공하는 핀입니다. 이 클록 신호는 마스터가 생성하며, 슬레이브는 이 클록에 동기화하여 데이터를 송수신합니다.

GPIO 24 (SPI_CE0)

  • SPI 통신에서 "Chip Enable 0"의 핀으로 사용되며, 이는 연결된 장치의 칩 선택 신호를 제어합니다. 여러 SPI 장치를 사용할 경우, 각기 다른 CE 핀을 통해 각 장치를 선택적으로 활성화하거나 비활성화할 수 있습니다.

GPIO 25 (GND)

  • 전자 회로의 공통 접지점으로 사용됩니다. Raspberry Pi와 연결된 다른 전자 장치들과의 전기적 신호의 Ground로 활용되며, 안정적인 작동을 위해 필수적입니다.

Flash Dump를 위한 점퍼 선 연결도


Flash Dump를 위한 핀 연결 정보는 아래와 같습니다. 부여한 번호를 기준으로 연결하면 됩니다.

 

Raspberry Pi 5 SOP-8(XM25QH16C)
17번 (3.3V) 8번 (VCC)
19번 (SPI_MOSI) 5번 (DI)
21번 (SPI_MISO) 2번 (DO)
23번 (SPI_SCLK) 6번 (CLK)
24번 (SPI_CE0) 1번 (/CS)
25번 (GND) 4번 (GND)
- 3번 (/WP)
- 7번 (/HOLD or /RESET)

 

Flash Dump로 Flash Rom 추출하기


시중에서 파는 점퍼 소켓 IC 집게형 리드 케이블과 점퍼선을 연결해서 SOP에 연결했다.

 

 

이것을 처음 구매했을 때 꽤나 두꺼워 보여 SOP에 다닥다닥 연결할 수 있을까 걱정했는데 쓸대없는 걱정이였다.

 

위 사진과 같이 연결했다. 연결할 때 좀 건들이면 자꾸 떨어져서 세심하게 연결하느라 진땀 뺐다. 

 

최종 연결 사진은 위와 같다. 많이 햇갈리기 때문에 미리 연결도를 그려놓고 점퍼 선 색도 맞추는 것을 추천한다.

또한 주의할점이있다면 점퍼선을 연결하고 SOP를 Flash Dump할 때 대상 기기의 전원은 OFF한채로 진행해야한다.

 

sudo apt get update
sudo apt install flashrom

혹시나 위 명령어로 flashrom이 설치를 진행했을때 flashrom의 버전이 1.4이상인지 확인해야한다.

 

위 사진과 같이 만약 버전이 1.4 이상이 아니라면 수동 설치를 진행해야한다.

 

# 구 버전의 flashrom 삭제
sudo apt purge flashrom

# 최신 버전 flashrom의 빌드를 위한 repository 설치
sudo apt-get update
sudo apt-get install -y \
gcc meson ninja-build pkg-config python3-sphinx \
libcmocka-dev libpci-dev libusb-1.0-0-dev libftdi1-dev libjaylink-dev

# 최신 flashrom 빌드
git clone https://github.com/flashrom/flashrom.git
cd ./flashrom
meson setup builddir
meson compile -C builddir
meson test -C builddir
meson install -C builddir

XM25QH16C 칩을 지원하는 1.4로 설치하는법은 위와 같다. 

 

또한 Raspberry Pi 5의 바탕화면에서 좌측 상단 매뉴 > 기본 설정 > 라즈베리 파이 환경설정 > 인터페이스에 들어가 SPI를 ON으로 바꾼후 재부팅해야한다.

 

sudo flashrom -p linux_spi:dev=/dev/spidev0.0

이어서 위 명령어를 통해 현재 연결한 SOP가 재대로 인식되는지 확인해야 한다.

인식이 재대로 되었다면 연결한 현재 flash chip이 어떤 종류인지 출력되어야한다.

출력된 종류중에 호환되는 것이 있는지 확인해야한다.

 

인식이 재대로 되지 않았을 때
인식이 재대로 되었을 때

 

아래 명령어를 통해 flash dump를 진행한다. dump한 파일을 binwalk와 같은 펌웨어 추출 도구를 통해 추출할 수 있다. binwalk와 같은 자동 추출 도구가 안되면 수동 카빙을 진행해서 펌웨어 파일을 얻어낼 수 있다.

# flashrom -p linux_spi:dev=/dev/spidev0.0 -c [칩셋종류] -r [저장될이름]
flashrom -p linux_spi:dev=/dev/spidev0.0 -c XM25QH16C/XM25QH16D -r firmware.bin

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.