MP2520F는 GP2X 게임기에 사용된 **MagicEyes사의 SoC(System on Chip)**이며, ARM920T CPU와 DSP 코어를 내장한 멀티미디어 프로세서입니다. 이 칩의 부트로더 구조는 다음과 같은 임베디드 시스템의 전형적인 부트 흐름을 따릅니다.
MP2520F 부트로더 구조 개요
[ 1st Boot ROM (내장) ] ↓ [ 2nd Bootloader (NAND Flash) ] ↓ [ Linux Kernel ] ↓ [ Root Filesystem (SD/NAND) ]
1. 1st Boot (내장 부트 ROM)
SoC 내부에 존재하는 읽기 전용 ROM 코드
NAND 플래시 또는 SD 카드에서 2차 부트로더를 읽어들임
기본적으로 NAND의 첫 섹터(0x0) 또는 특정 오프셋(0x200)에서 부트로더 코드 탐색
코드 크기는 매우 작고 고정됨 (수 KB 수준)
기능:
NAND controller 초기화
작은 버퍼에 데이터 로딩
2차 부트로더로 점프
2. 2nd Bootloader (사용자 설치 가능)
GP2X의 대표적인 부트로더는 U-Boot이지만, 기본 펌웨어에는 MagicEyes 커스텀 부트로더가 사용됨
일부 커뮤니티 펌웨어에서는 U-Boot 기반 부트로더로 교체 가능
기능:
RAM 초기화
CPU 클럭 설정
SDRAM 컨트롤러 설정
NAND 읽기 또는 SD 카드에서 커널 로딩
커널에 atags 또는 커맨드라인 전달
커널 진입
3. Linux Kernel
2nd 부트로더에서 로딩됨
보통 커널 이미지 포맷은 zImage 또는 uImage
커널 시작 시 /dev/mtd* 또는 /dev/mmcblk* 등으로 NAND/SD 접근
4. Root Filesystem
커널에서 마운트
보통 cramfs, ext2, 또는 initrd 기반
대부분의 경우 SD 카드에서 루트 파일시스템을 로드하며, NAND를 읽기 전용으로 유지
커뮤니티 활용 예시
NAND 부트 vs SD 부트 선택 가능
일부 GP2X 개발자들은 U-Boot 포팅 후, 환경변수 기반 커널 스위칭 구현
gp2xloader, gboot2, ubiboot 같은 실험적 부트로더도 존재
NAND 부트 구조 예시 (추정 주소 기반)
주소내용0x000000001차 부트로더 (ROM에서 로딩)0x000002002차 부트로더 시작0x00040000커널 이미지 (zImage)0x00200000루트 파일시스템 시작
(주소는 펌웨어 버전과 툴체인에 따라 달라질 수 있습니다)
참고 정보 (오픈소스 및 도구)
gp2x_fwtool: GP2X 펌웨어 추출/패킹 도구
U-Boot: GP2X용 포팅 커뮤니티 버전 존재
JTAG 또는 USB downloader mode로 직접 NAND 쓰기 가능 (brick 복구용)
커널에서 MTD 드라이버를 통해 부트로더 파티션 보호 (read-only로 마운트)
결론
MP2520F는 내장 1차 부트 ROM → NAND 또는 SD의 2차 부트로더 → Linux 커널 → 루트 파일시스템 구조로 작동합니다.
기본 부트로더는 커스텀 코드지만, U-Boot로 대체가 가능하며, 이를 통해 부팅 설정과 커널 관리가 유연해집니다.
필요하다면, GP2X의 U-Boot 포팅 예시나 NAND 복구용 부트 이미지 제작 방법도 도와드릴 수 있습니다. 어느 부분을 더 깊이 보고 싶으신가요?
댓글 0