RISC-V下SPL->OpenSBI-OPTEE-Linux启动流程如下: 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镜像,...
06—qemu运行opensbi+kernel+rootfs 新建一个run.sh文件,写入如下内容: qemu-9.1.1/build/qemu-system-riscv64 -M virt -smp 4 -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.cp...
该函数就是用来从OpenSBI跳转到kernel执行的一段代码,因为从OpenSBI跳转到kernel执行需要从Machine模式切换到 Supervisor模式,所以需要mret指令,而mret指令执行时,会将CSR_MEPC的值复制到PC中,也就是说CSR_MEPC中存放了mret指令返回之后需要执行的地址,而CSR_MEPC的值就是next_addr,也就是kernel的加载地址,我们把ne...
“VSCode+qemu+gdb调试OpenSBI确实很爽,那怎能少了调试kernel呢~~” 01 VScode调试MMU开启之前的kernel 有了调试OpenSBI的基础,再调试kernel,那设置相当简单了,如果你还没看过VSCode调试OpenSBI,请先查看另一篇文章:《VSCode+qemu+gdb可视化调试OpenSBI》 现在让我们来配置调试kerenl,先在VSCode中远程打开kernel目录 然...
gdb-multiarch vmlinux 之后在gdb命令行执行: target remote:1234 此时就可以设置断点进行调试了,注意只能设置MMU开启之后的断点: 注意上图中的断点是start_kernel不是MMU开启之前的_start_kernel,不带下划线 终于熬夜写完了qemu+gdb调试系列~ 到这里,qemu+gdb调试OpenSBI和kernel都已经完结了,恭喜你,你可以进行OpenSBI...
编译opensbi 进行下载opensbi: git clonehttps://github.com/riscv-software-src/opensbi.git 编译下载文件: export CROSS_COMPILE=riscv64-linux-cd opensbimake PLATFORM=generi 编译完成后的固件在其opensbi/ platform/generic/firmware/目录下。 进行编译Linux kernel ...
在QEMU上运行OpenSBI+Linux+Rootfs 1 编译QEMU 2 安装交叉编译工具 3 编译OpenSBI 4 编译Linux 5 创建根文件系统 5.1 编译busybox 5.2 创建目录结构 5.3 制作文件系统镜像 5.3.1 创建 ext2 文件 5.3.2 将目录结构拷贝进 ext2 文件 5.3.3 取消挂载 ...
1.opensbi 2.uboot or linux 3.rootfs 目前这三个部分单独的梳理成文章的章节,之后就可以进行qemu的仿真与运行了。 2.riscv64 qemu的编译 要想系统正常的运行起来,必须编译qemu,我建议用最新版本的qemu,可以在官网上下载最新的源代码进行编译。 代码语言:javascript ...
首先需要opensbi的仓库,下载和编译的方式如下: git clone https:///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/platform...
对于 RISC-V 架构,QEMU 8.0 带来了对 OpenTitan、PolarFire 和 OpenSBI 的更新设备支持、支持 smstateen 的额外 ISA 和扩展,支持本机调试 icount 触发器、虚拟模式下与缓存相关的 PMU 事件、Zawrs / Svadu / T-Head /Zicond 扩展和 ACPI 等。此外,RISC-V 收到了多项修复,涵盖 TLB 的 PMP 传播、...