OpenSBI初始化分析
- OpenSBI初始化
- 启动流程:主要涉及三个阶段
- OpenSBI底层初始化
OpenSBI初始化
启动流程:主要涉及三个阶段
- .S汇编阶段,主要是Opensbi的底层初始化阶段,为C准备执行环境;
- 设备初始化阶段,此阶段正式进入C环境;
- 会跳转到二级 Bootloader,正式进入S模式;
OpenSBI底层初始化
确定启动的hart id,非启动hart转入_wait_relocate_copy_done等待启动hart初始化完成。
_start:
/* Find preferred boot HART id */
MOV_3R s0, a0, s1, a1, s2, a2
call fw_boot_hart
add a6, a0, zero
MOV_3R a0, s0, a1, s1, a2, s2
li a7, -1
beq a6, a7, _try_lottery
/* Jump to relocation wait loop if we are not boot hart */
bne a0, a6, _wait_relocate_copy_done