当前位置: 首页 > 工具软件 > riscv-rootfs > 使用案例 >

riscv64 qemu 上搭建linux调试开发环境

黄俊雄
2023-12-01
title: riscv64 qemu 上搭建linux调试开发环境
date: 2022-03-10 19:27:48
categories:
tags:
- linux
- riscv

1、概要

在学习uboot和Linux时能够在本地debug调试对于代码的理解极其重要,网上找了些资源结合自己在公司的一些使用经历,梳理了一下riscv上的环境搭建方法(ubuntu18.04),让系统在qemu上正常的运行起来。

一个riscv qemu的启动需要经过以下几个步骤:

1.opensbi

2.uboot or linux

3.rootfs

之后就可以进行qemu的仿真与运行了。

参考链接:https://www.manongdao.com/article-2406567.html

2、riscv64 qemu编译

要想系统正常的运行起来,必须编译qemu,我用的是在github上下载的较新版本。

下载完成后进入目录进行配置

sudo ./configure --target-list=riscv64-softmmu &&  sudo make

其中--target-list后面可以接不同的架构的qemu,比如arm-softmmu是针对arm平台的。后面多接几个编译也是可以的。

编译完成后输入:

make install

进行qemu的安装,之后输入qemu-按下tab可以看到qemu-system-riscv64。表示qemu安装成功。

3、riscv64交叉工具链编译

在下面这个网站上下工具链压缩包,选择riscv64版本的。

https://toolchains.bootlin.com/

解压后将其配置入自己的环境变量中,配置成功的话输入riscv64按下tab会自动补全。

4、编译UBOOT

先在这个网站上下载uboot源码:https://github.com/u-boot/u-boot

将代码下载后,进入目录输入:

make CROSS_COMPILE=riscv64-linux- qemu-riscv64_smode_defconfig
make CROSS_COMPILE=riscv64-linux- -j4

CROSS_COMPILE指向的是解压后的交叉编译工具链的路径。编译完成之后,可以生成对应的uboot固件。

编译成功的话会生成u-boot.bin文件

5、编译OPENSBI

RISC-V Supervisor二进制接口(SBI)是针对RISC-V的一些底层的接口,有两种模式,在M模式下运行的特定于平台的固件,以S模式或HS模式执行的引导加载程序,管理程序或通用OS。

简单的理解就是芯片的bios,通过该程序,可以加载不同的OS或者uboot。

首先需要opensbi的仓库,下载和编译的方式如下:

git clone https://github.com/riscv/opensbi.git
export CROSS_COMPILE=riscv64-linux-
make PLATFORM=generic FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin

这里需要注意的是FW_PAYLOAD_PATH指向的是我们刚才编译出来的uboot.bin文件夹的路径。

编译完成后可以在build/platform/generic/firmware/目录下生成对应的启动固件。

在控制台上输入下面命令,即可启动opensbi。

qemu-system-riscv64 -M virt -m 256M -nographic -bios build/platform/generic/firmware/fw_payload.elf

如果想单纯调试学习uboot,到这里就够用了,可以自己尝试着在uboot中自定义命令来debug着学习。

6、编译Linux

先下载代码:git clone https://github.com/torvalds/linux

接着进行工程配置,设置交叉编译工具链

export ARCH=riscv

export ARCH=<前面所配置的交叉工具链目录>/riscv64-linux-

设置完成后就可以开始编译:make -j8

7、buildroot与rootfs

 类似资料: