QEMU RISC-V 入门
学习目标
- 理解 QEMU 的作用
- 掌握 QEMU RISC-V 的使用
- 了解 virt 机器模型
1.1 什么是 QEMU
QEMU 是一个开源的处理器模拟器,可以模拟多种架构:
- x86/x86_64
- ARM/AArch64
- RISC-V
- MIPS 等
1.2 为什么用 QEMU
- 无需硬件:在 PC 上开发嵌入式程序
- 快速调试:支持 GDB 调试
- 标准化:virt 机器提供标准外设
1.3 安装 QEMU
# Ubuntu
sudo apt install qemu-system-riscv32 qemu-system-riscv64
# 验证
qemu-system-riscv32 --version
1.4 QEMU virt 机器
virt 是 QEMU 提供的虚拟机器,包含:
- UART (16550)
- PLIC (中断控制器)
- CLINT (核心本地中断)
- RAM
内存映射
0x00001000 - CLINT
0x0C000000 - PLIC
0x10000000 - UART0
0x80000000 - RAM (起始地址)
1.5 第一个程序
创建 hello.s:
.section .text
.global _start
_start:
li a0, 0x10000000 # UART 基地址
li a1, 'H'
sb a1, 0(a0)
li a1, 'i'
sb a1, 0(a0)
li a1, '\n'
sb a1, 0(a0)
loop:
j loop
编译运行:
riscv32-unknown-elf-as hello.s -o hello.o
riscv32-unknown-elf-ld -Ttext=0x80000000 hello.o -o hello.elf
qemu-system-riscv32 -machine virt -nographic -bios none -kernel hello.elf