2.1 opensbi: riscv: opensbi源码解析

1. opensbi流程

opensbi第一条执行的指令是从_start开始(firmware/fw_base.S).代码如下

_start:
	/* Find preferred boot HART id */
	MOV_3R	s0, a0, s1, a1, s2, a2
	call	fw_boot_hart /*fw_boot_hart调用成功,则返回hart id,否则返回-1,在单步调试中,发现fw_boot_hart一般返回的就是hart id,即放在a0寄存器中*/
	add	a6, a0, zero /*将a0的复制给a6*/
	MOV_3R	a0, s0, a1, s1, a2, s2
	li	a7, -1 
	/*只有执行fw_boot_hart返回-1时,才会跳转到_try_lottery,否则都只有作为热启动的hart*/
	beq	a6, a7, _try_lottery
	/* Jump to relocation wait loop if we are not boot hart */
	bne	a0, a6, _wait_relocate_copy_done
	.....

在spl跳转到opensbi执行的时候,携带了三个参数,分别保存在a0,a1,a2,三个参数的含义:hartid、fdt地址(u-boot的dtb文件)和struct fw_dynamic_info结构体地址

6629C2B7-8F8D-4D00-B84F-7D5D046E12DF

FW_DYNAMIC固件在运行时从上一个引导阶

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byd yes

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值