简介
简单记录下qemu模拟riscv平台的过程,以前有模拟arm64平台的文章
qemu安装
首先安装qemu以及相关的软件
sudo apt-get install qemu-system-misc libncurses5-dev gcc-riscv64-linux-gnu build-essential bison flex libssl-dev

编译代码
这里使用如下链接的代码
https://github.com/runninglinuxkernel/riscv_programming_practice/tree/master/chapter_2/benos
代码内容目录如下,sbi目录的代码编译出来是运行在M模式下的固件,为运行在S模式下的操作系统(这里是src目录的代码编译出来的镜像)提供引导和统一的
接口服务,业界流行的是用OPENSBI固件

编译命令如下
export board=qemu
make clean
make

qemu运行
在上一步的目录,执行命令make run即可用qemu把编译出来的riscv的baremental程序跑起来了

qemu gdb调试
执行命令make debug即可让qemu进入debug模式

然后再开一个终端,打开gdb终端
gdb-multiarch --tui /d/riscv_learn/benos/benos.elf


连接gdb的端口
target remote localhost:1234

在程序开始的地方打断点
b _start

运行

如果想调试sbi.elf得退出前面占用的1234端口
gdb-multiarch --tui /d/riscv_learn/benos/mysbi.elf

FEATURED TAGS
Ubuntu
markdown
stm32
OSDK
飞控
串口
Jscope
C
C++
bin
J-Flash
字符串
指针数组
malloc
vscode
svg
png
github
python
CMake
CMakeLists
Linux
拷贝构造函数
GIF
录屏
docker
操作系统
make
Makefile
文件操作
DSP
CCS
SQL
MySQL
shell
bochs
计算机网络
win10
SMTP
Socket
iOS
uxplay
投屏
证书错误
apt
nodesource
ELF
Typora
图床
fossil
sql
git
SecureCRT
windows
cygwin
blog
alsa
alsa-utils
alsa-lib
音频
USB
链接文件
内存
mmap
tcpdump
交叉编译
网络
防火墙
crontab
bond
Linux性能
udev
linux
pcie
wsl2
MMIO
wsl
qemu
raspi4
gdb
ssh
tun
tap
ifconfig
打印
gmac
phy
vim
组播
rock3a
win11
usb
sd
ubuntu
iptables
netfilter
wifi
veth
ipv6
wireshark
radvd
dhcpv6
dhcpv4
网络命名空间
br虚拟网卡
NDP
emmc
存储
raspi4b
baremental
jtag
buildroot
rootfs
ext4
调试
uboot
dropbear
raspi
ebpf
uart
baremetal
kernel
bringup
libbpf
arm64
fit
gzip
压缩
initcall_debug
bootargs
I2C
代理
cmake
python3
zephyr
mcxa156
riscv
MCXA156
I3C
RPMB
tar
lzma
dns
picgo
gpt
otg
adb
fdtdump
gadget
fastboot
mdns
gcc
mailbox