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...
如下图所示,最终规划如下,pflash存储所有的低阶固件文件和资源,由位于pflash最前段的lowlevelboot将其他的固件资源文件加载到ddr中,并启动opensbi执行内存域权限划分,进一步分别boot各个domain,DDR最高地址1M范围为opensbi的安全内存域,紧接着的7M范围为core7运行的安全domain区域。其他区域为linux内核运行区域。其中DDR ...
1.3 构建opensbi+u-boot启动固件 $ git clone https://github.com/riscv/opensbi.git $ cd opensbi $ make PLATFORM=generic CROSS_COMPILE=riscv64-linux- FW_PAYLOAD_PATH=../u-boot/u-boot.bin 其中FW_PAYLOAD_PATH是u-boot构建成功后生成的u-boot.bin所在路径 opensbi+u-boot构建成功后,提示如下: AS...
首先需要opensbi的仓库,下载和编译的方式如下: git clone https:///riscv/opensbi.git export CROSS_COMPILE=riscv64-linux- make PLATFORM=generic FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin 1. 2. 3. 这里需要注意的是FW_PAYLOAD_PATH指向的是我们刚才编译出来的uboot.bin文件夹的路径。 编译完...
1.1 使用qemu启动uboot,并进入调试模式 $ qemu-system-riscv64 -nographic -machine virt -m 512 -kernel <opensbi>/build/platform/qemu/virt/firmware/fw_jump.elf -device loader,file=<uboot>/u-boot.bin-s -S 1.2 调试重定位之前的uboot
一、WSL2编译uboot镜像 1.1 下载uboot代码 代码语言:javascript 代码运行次数:0 运行 AI代码解释 git clone https://github.com/u-boot/u-boot 1.2 编译uboot源码 因为我要编译arm64,所以用这个指令,缺少的工具链,请自行安装sudo apt-get install gcc-aarch64-linux-gnu。
这里我们使用jump类型固件,OpenSBI运行后,可以直接跳转到kernel运行。 因为opensbi本身就是一个bootloader,因此可以不使用uboot引导kernel,通过opensbi的jump固件,可以直接跳转到kernel启动。 4、编译kernel Linux内核官网:www.kernel.org 选择当前稳定版5.19.16下载 ...
这里我们使用jump类型固件,OpenSBI运行后,可以直接跳转到kernel运行。 因为opensbi本身就是一个bootloader,因此可以不使用uboot引导kernel,通过opensbi的jump固件,可以直接跳转到kernel启动。 4、编译kernel Linux内核官网: 选择当前稳定版5.19.16下载 解压kernel: ...
1.opensbi 2.uboot or linux 3.rootfs 目前这三个部分单独的梳理成文章的章节,之后就可以进行qemu的仿真与运行了。 2.riscv64 qemu的编译 要想系统正常的运行起来,必须编译qemu,我建议用最新版本的qemu,可以在官网上下载最新的源代码进行编译。 代码语言:javascript ...
6. 制作openSBI + uboot 启动引导 构建uboot $ git clone https://gitlab.denx.de/u-boot/u-boot.git $ cd u-boot $ make CROSS_COMPILE=riscv64-unknown-linux-gnu- qemu-riscv64_smode_defconfig $ make CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc) ...