本文主要是介绍【riscv】使用qemu运行riscv裸机freestanding程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 运行显示
- 2. 工具准备
- 3. 裸机代码和编译
- 3.1 源码
- 3.2 编译
- 4. 使用qemu仿真运行riscv裸机程序
1. 运行显示
- 详见左下角, 运行时串口输出的字符
A
;
2. 工具准备
# for riscv64-linux-gnu-gcc
sudo apt-get install gcc-riscv64-linux-gnu# for qemu-system-riscv32 / qemu-system-riscv64
sudo apt install qemu-system-misc
3. 裸机代码和编译
3.1 源码
- 在
a.c
中存入如下代码:
#include <stdint.h>
void _start() {volatile uint8_t *p = (uint8_t *)(uintptr_t)0x10000000;*p++ = 'A';*p++ = 'B';//while (1);
}
3.2 编译
riscv64-linux-gnu-gcc -ffreestanding -nostdlib -Wl,-Ttext=0x80000000 -O2 a.c
4. 使用qemu仿真运行riscv裸机程序
- 启动仿真
qemu-system-riscv32 -nographic -M virt -bios none -kernel a.out
- 运行结果如下:
$ qemu-system-riscv32 -nographic -M virt -bios none -kernel a.out
A
这篇关于【riscv】使用qemu运行riscv裸机freestanding程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!