GP2X는 2005년 GamePark Holdings에서 출시한 리눅스 기반 휴대용 게임기입니다. 당시로선 드물게 오픈 리눅스 플랫폼을 제공하여 사용자들이 직접 게임, 에뮬레이터, 앱을 개발하고 실행할 수 있었습니다.
아래에 GP2X의 운영체제 구조를 기술적 깊이와 함께 정리해드리겠습니다.
GP2X 운영체제 구조 요약
┌────────────────────────────┐ │ 사용자 애플리케이션 │ ← SDL 게임, 에뮬레이터, 스크립트 └────────────────────────────┘ │ (libSDL, DirectFB, ALSA 등) │ ┌────────────────────────────┐ │ 리눅스 유저랜드 │ ← BusyBox, uClibc, shell 등 └────────────────────────────┘ │ ┌────────────────────────────┐ │ Linux Kernel │ ← 2.4.x 커널 (ARM9용) │ (Framebuffer, input, │ │ USB, I2C, NAND, ALSA) │ └────────────────────────────┘ │ ┌────────────────────────────┐ │ 하드웨어 (SoC: MagicEyes)│ │ - Dual CPU (ARM920T + DSP) │ │ - LCD, NAND, audio, GPIO │ └────────────────────────────┘
세부 구성 요소
1. 커널
Linux 2.4.x 커널 기반
ARM920T용으로 포팅됨 (ARM9TDMI, MMU 지원)
MagicEyes MP2520F 칩셋의 장치 드라이버 포함
Framebuffer 디스플레이
ALSA 오디오
NAND 플래시 드라이버
입력 장치: D-pad, 버튼, USB HID 등
2. 유저랜드
uClibc 기반의 C 라이브러리 (경량)
BusyBox 쉘 및 유틸리티 모음 사용
/bin/sh, /etc, /mnt, /dev, /proc, /sys 등 최소한의 리눅스 파일시스템 구조 유지
FAT 파일시스템으로 SD카드 마운트 지원
3. 그래픽 및 UI
주로 Framebuffer 기반 그래픽
SDL 1.2 또는 DirectFB를 사용한 게임/앱 실행
초기 펌웨어는 기본 GUI 제공 (메뉴에서 앱 실행)
일부 커스텀 펌웨어에서 GMenu2X와 같은 런처 지원
4. 오디오
ALSA (Advanced Linux Sound Architecture) 사용
기본적으로 DAC → 증폭기 → 헤드폰/스피커 경로
믹서 장치 제어는 /dev/mixer 또는 amixer 등으로 가능
5. 입력 장치
/dev/input 기반은 아니고, 초기에는 직접 GPIO 접근
버튼, 볼륨, 조이스틱 등은 메모리 맵 I/O 또는 전용 드라이버로 처리
6. 파일시스템
내부 NAND: cramfs 또는 ext2
외부 SD 카드: FAT16/32
대부분 앱은 SD 카드에 저장 및 실행
애플리케이션 구조
.gpe, .gpu, .sh 파일 실행
.gpe: 실행 가능한 ELF 바이너리 (주로 SDL 앱)
.gpu: 쉘 스크립트
SDL, OpenAL, DirectFB 등 경량 라이브러리를 statically link하여 배포
개발 환경
Toolchain: ARM GCC (arm-linux-gcc)
빌드 방식: 대부분 SDL이나 직접 프레임버퍼 접근 방식
에뮬레이터와 이식된 게임 많음:
SNES9x, PicoDrive, MAME, Duke Nukem 3D, Quake 등
커스텀 펌웨어 확장
커뮤니티에서 만든 다양한 펌웨어:
GMenu2X 런처
ScummVM 통합
libretro 기반 일부 core
비교: GP2X vs OpenDingux
항목GP2XOpenDingux (현대 휴대용)커널Linux 2.4.xLinux 3.x~5.xlibcuClibcglibc/uClibc그래픽FramebufferFramebuffer + SDL2/OpenGL ES사운드ALSAALSA런처 UI기본 GUI / GMenu2XGMenu2X / SimpleMenu 등성능ARM920T (200MHz)MIPS/RK3326 등 (1GHz 이상)OPK 패키지 사용XO (SquashFS 기반 앱 패키지)
결론
GP2X는 리눅스를 비교적 단순하게 구성한 임베디드 플랫폼이며, 당시로서는 매우 유연하고 자유로운 개발 환경을 제공했습니다. 현대 기준에서는 단순하지만, 그 구조는 현재의 OpenDingux나 안드로이드 기반 에뮬레이터 환경의 전신이라 볼 수 있습니다.
원하시면 GP2X에서 실행 가능한 SDL 애플리케이션 예제나, 간단한 프레임버퍼 직접 제어 코드도 제공해드릴 수 있어요. 원하시나요?
댓글 0