2025. 2. 26. 12:26ㆍ프로그래밍/시스템
QEMU를 활용한 U-Boot 실행
QEMU는 가상 머신을 이용하여 U-Boot를 테스트할 수 있는 강력한 에뮬레이터입니다.
실제 하드웨어 없이도 U-Boot의 빌드 결과물을 실행하고 디버깅할 수 있으며, ARM 및 AArch64 등의 아키텍처를 지원합니다.
이 문서에서는 QEMU 설치, U-Boot 실행 방법, 명령어 설명 및 디버깅 방법을 다룹니다.
1. QEMU 설치 및 U-Boot 테스트 방법
🔹 QEMU란?
- QEMU는 CPU, 메모리, 저장 장치, 네트워크 등을 에뮬레이션하는 오픈소스 가상화 소프트웨어입니다.
- 실제 보드가 없어도 U-Boot 실행 및 부팅 테스트가 가능합니다.
- U-Boot와 함께 리눅스 커널 테스트 및 네트워크 부팅(TFTP, NFS) 설정도 가능합니다.
🔹 QEMU 설치
1) Ubuntu/Debian 계열
sudo apt update
sudo apt install -y qemu-system-arm qemu-system-aarch64
2) CentOS/Fedora 계열
sudo dnf install -y qemu-system-arm qemu-system-aarch64
3) 설치 확인
qemu-system-arm --version
qemu-system-aarch64 --version
📌 출력 예제
QEMU emulator version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6)
2. QEMU에서 U-Boot 실행하기 (ARM 32-bit)
📌 ARM 32-bit 환경에서 U-Boot 실행
qemu-system-arm -M versatilepb -nographic -kernel u-boot.bin
🔹 명령어 설명
옵션 | 설명 |
qemu-system-arm | ARM 아키텍처용 QEMU 실행 |
-M versatilepb | VersatilePB 보드(ARM926EJ-S CPU) 에뮬레이션 |
-nographic | GUI 없이 콘솔 모드에서 실행 |
-kernel u-boot.bin | u-boot.bin을 커널로 실행 |
📌 실행 후 출력 예제
U-Boot 2024.01 (Mar 04 2025 - 10:30:00)
DRAM: 128 MiB
Flash: 16 MiB
Net: No ethernet found.
Hit any key to stop autoboot: 0
✅ U-Boot가 정상적으로 실행됨을 확인할 수 있습니다.
✅ Ctrl + A → X를 입력하면 QEMU를 종료할 수 있습니다.
3. QEMU에서 U-Boot 실행하기 (ARM 64-bit / AArch64)
📌 ARM 64-bit 환경에서 U-Boot 실행
qemu-system-aarch64 -M virt -nographic -bios u-boot.bin
🔹 명령어 설명
옵션 | 설명 |
qemu-system-aarch64 | AArch64(ARM 64-bit)용 QEMU 실행 |
-M virt | 가상 ARM 보드(VirtIO 기반) 사용 |
-nographic | GUI 없이 콘솔 모드에서 실행 |
-bios u-boot.bin | u-boot.bin을 BIOS(펌웨어)로 사용 |
📌 실행 후 출력 예제
U-Boot 2024.01 (Mar 04 2025 - 10:30:00)
DRAM: 512 MiB
Flash: 32 MiB
Net: virtio-net
Hit any key to stop autoboot: 0
✅ ARM 64-bit 환경에서도 U-Boot가 정상적으로 실행됨을 확인할 수 있습니다.
4. QEMU에서 U-Boot 디버깅하기
QEMU에서는 U-Boot 실행 중 GDB 디버깅이 가능합니다.
📌 GDB 서버 활성화 및 U-Boot 실행 (ARM 64-bit)
qemu-system-aarch64 -M virt -nographic -bios u-boot.bin -s -S
📌 GDB에서 U-Boot 디버깅
gdb-multiarch u-boot
GDB 프롬프트에서 아래 명령어 입력:
target remote :1234
b main
c
✅ main 함수에서 중단점 설정 후 실행을 확인할 수 있습니다.
📌 정리
✅ QEMU를 설치하여 ARM 및 AArch64 환경에서 U-Boot 실행 가능
✅ qemu-system-arm / qemu-system-aarch64를 사용하여 보드 에뮬레이션
✅ ARM 32-bit: -M versatilepb / ARM 64-bit: -M virt 사용
✅ GDB를 활용하여 U-Boot 디버깅 가능 (-s -S 옵션 사용)
'프로그래밍 > 시스템' 카테고리의 다른 글
U-Boot 포팅 (4. U-Boot 포팅 개념 및 주요 수정 포인트 / 포팅 개요) (0) | 2025.02.26 |
---|---|
U-Boot 포팅 (3. U-Boot 빌드 및 실행 / 실제 보드에서 U-Boot 실행하기) (0) | 2025.02.26 |
U-Boot 포팅 (3. U-Boot 빌드 및 실행 / 빌드 결과물 분석) (0) | 2025.02.26 |
U-Boot 포팅 (3. U-Boot 빌드 및 실행 / 기본적인 U-Boot 빌드 과정) (0) | 2025.02.26 |
U-Boot 포팅 (2. 개발 환경 구축 / 타겟 보드 선택) (0) | 2025.02.26 |