再打开一个终端,进入到fw_jump.elf的目录下: cd risc-v/opensbi/build/platform/generic/firmware/ 运行gdb: gdb-multiarch 注意,此时不要带fw_jump.elf,因为OpenSBI不在0地址运行,如果带fw_jump.elf参数,gdb会默认加载symbol到0地址,后面还需要删除这些symbol,否则会对调试有影响,比如设置断点会命中多个地址等 ...
等待编译完成,就可以开始运行了,buildroot编译过程中会下载kernel代码,很慢,这个时候可以修改buildroot目录下的.config文件中kernel的下载链接为中科大镜像源,然后再编译,下载就会很快 06—qemu运行opensbi+kernel+rootfs 新建一个run.sh文件,写入如下内容: qemu-9.1.1/build/qemu-system-riscv64 -M virt -smp 4 -m...
qemu-9.1.1/build/qemu-system-riscv64 -M virt -m 4G\-bios opensbi/build/platform/generic/firmware/fw_jump.bin\-kernel linux-6.11.4/arch/riscv/boot/Image\-initrd buildroot-2024.08.1/output/images/rootfs.cpio\-append"root=/dev/ram"\-display none -serial stdio\-device virtio-scsi-device\-...
M-Mode:u-boot-spl加载u-boot.itb文件,启动OpenSBI。 M-Mode->S-Mode:OpenSBI通过mret跳转到OPTEE执行,启动TOS。 S-Mode->M-Mode:OPTEE启动完后,通过ecall返回到执行OpenSBI。 M-Mode->S-Mode:OpenSBI通过mre启动u-boot。 S-Mode:u-boot加载Kernel镜像,跳转到Kernel执行。 S-Mode->U-Mode:Kernel加载root...
这里我们使用jump类型固件,OpenSBI运行后,可以直接跳转到kernel运行。 因为opensbi本身就是一个bootloader,因此可以不使用uboot引导kernel,通过opensbi的jump固件,可以直接跳转到kernel启动。 4、编译kernel Linux内核官网:www.kernel.org 选择当前稳定版5.19.16下载 ...
首先需要opensbi的仓库,下载和编译的方式如下: git clone https://github.com/riscv/opensbi.git export CROSS_COMPILE=riscv64-linux- make PLATFORM=generic FW_PAYLOAD_PATH=/u-boot.bin 1. 2. 3. 这里需要注意的是FW_PAYLOAD_PATH指向的是我们刚才编译出来的uboot.bin文件夹的路径。 编译完成后可以在build...
01 VScode调试MMU开启之前的kernel 有了调试OpenSBI的基础,再调试kernel,那设置相当简单了,如果你还没看过VSCode调试OpenSBI,请先查看另一篇文章:《VSCode+qemu+gdb可视化调试OpenSBI》 现在让我们来配置调试kerenl,先在VSCode中远程打开kernel目录 然后点击debug图标: ...
下载opensbi: git clone https://github.com/riscv-software-src/opensbi.git 1. 编译: export CROSS_COMPILE=riscv64-linux- make PLATFORM=generic 1. 2. 编译完后生成的固件在build/platform/generic/firmware/目录下: 生成的固件有三种类型:dynamic、jump和payload ...
首先需要opensbi的仓库,下载和编译的方式如下: 代码语言:javascript 复制 git clone https://github.com/riscv/opensbi.gitexportCROSS_COMPILE=riscv64-linux-makePLATFORM=genericFW_PAYLOAD_PATH=/u-boot.bin 这里需要注意的是FW_PAYLOAD_PATH指向的是我们刚才编译出来的uboot.bin文件夹的路径。 编译完成后可以在...
OpenSBI source code also contains code reused from other projects as listed below. The original license text of these projects is included in the source files where the reused code is present. The libfdt source code is disjunctively dual licensed (GPL-2.0+ OR BSD-2-Clause). Some of this pr...