编译完成后,生成了qemu-system-riscv64,你可以执行以下命令进行安装: sudo make install 02—安装riscv64编译器 这里直接使用apt进行安装: sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu -y 03—编译opensbi 从github上clone opensbi: git clone https://github.com/riscv-software-src/opens...
再打开一个终端,进入到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,否则会对调试有影响,比如设置断点会命中多个地址等 q...
而操着系统运行的模式是S-Mode,所以RISCV也可以选择将异常重新导向到S-Mode,也支持异常委托机制(Machine Interrupt Delegaintion)将异常直接通过S-Mode进行处理,这样可以大大的增加操作系统的灵活性。 一般来说M-Mode是必须实现的,S-Mode也一般会有,而U-Mode是选择性扩展的。目前的RISCV芯片中例如蜂鸟的E203与K21...
本文在Ubuntu18.04环境下进行测试,在riscv64的qemu上进行gdb的单步调试,主要分析的阶段是qemu启动后,执行到opensbi,直到启动uboot的阶段。 opensbi是研究和学习riscv底层的一个比较优秀的项目,代码量小,质量也很高,很值得推荐的一个开源项目。 关于opensbi与qemu的环境搭建,我前面的文章中已经提及,这里就不赘述了。 r...
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。
1 SPL到OpenSBI spl启动流程如下: 从外设加载镜像到DDR中。 解析镜像格式,比如FIT。 解析FIT中OpenSBI镜像地址和入口地址;uboot镜像地址,并附着到fdt中;解析获取fdt地址。 准备好HART ID、fdt地址、struct fw_dynamic_info结构体三个参数后,跳转到OpenSBI镜像开始执行。
opensbi下的riscv64裸机系列编程1(串口输出) 1.说明 2.opensbi的编译 3.基本环境的准备 3.1 准备qemu 3.2 准备交叉编译工具链 4.工程完善 5.封装的sbi接口 6.程序运行 7.printf函数的实现 8.小结 1.说明 前面的文章中已经提到了opensbi的作用不仅仅是一个引导作用,还提供了M模式转换到S模式的实现,同时在S-...
RISC-V Linux运行时OpenSBI配置和编译 描述 配置和编译 OpenSBI的配置选项位于不同平台下的登录后复制config.mk文件,例如登录后复制platform/generic/config.mk: 登录后复制# Blobs to buildFW_TEXT_START=0x80000000 FW_DYNAMIC=y FW_JUMP=y FW_PAYLOAD=yifeq($(PLATFORM_RISCV_XLEN), 32)# This needs to ...
5.openSBI call接口的实现 6.总结 1.本文说明 risc-v的架构有着非常鲜明的特点,如果看过arm,aarch64,mips等架构的一些架构手册的基础知识,再看risc-v的芯片的架构设计,就会觉得非常有意思,可以找到一些影子,但是又比这些架构设计简洁的多。当我看完aarch64的芯片手册,再看risc-v的boot时,设计思想竟然可以做一...
RISCV架构D1芯片启动与多阶段引导流程如下:BROM引导阶段:从上电开始,芯片首先通过固化的BROM启动。BROM负责进入Bootloader的初级阶段——ZSBL。Boot0阶段:引导流程进入烧录在TF卡上的Boot0区域,该区域位于0x0002 0000。Boot0负责如DRAM初始化、串口打开等基本设置。Boot0标记opensbi、DTB和uboot的入口。