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, a2call fw_boot_hartadd a6, a0, zeroMOV_3R a0, s0, a1, s1, a2, s2li a7, -1beq a6, a7, _try_lottery/* Jump to relocation wait loop if we are not boot hart */bne a0, a6, _wait_relocate_copy_done