OPENSBI启动流程
时间: 2023-11-01 17:53:29 浏览: 50
OpenSBI启动流程可以简述如下:
1. 在OpenSBI启动时,第一条执行的指令是_start函数,该函数位于fw_start.S文件中。
2. 在fw_start.S文件中,首先会进行一些初始化工作,然后跳转到main函数进行主要的启动流程。
3. 在main函数中,会首先获取每个HART的scratch结构体信息。
4. Scratch结构体是OpenSBI对每个HART的私有信息的表示,包含了一些重要的字段用于启动过程。
5. 其中,fw_start字段表示固件与OpenSBI库链接的起始地址,fw_size字段表示固件的大小。
6. next_addr字段表示下一个引导阶段的地址,next_arg1字段表示下一个引导阶段的参数。
7. next_mode字段表示下一个引导阶段的特权模式。
8. warmboot_addr字段表示用于热重启的入口地址。
9. platform_addr字段表示sbi_platform的地址,用于与硬件平台相关的初始化。
10. hartid_to_scratch字段表示HART ID到scratch结构体的转换函数的地址。
11. trap_exit字段表示陷阱退出函数的地址。
12. tmp0字段是一个临时存储字段。
13. options字段包含了OpenSBI库的选项信息。
14. 在启动流程中,每个HART都会按顺序执行操作,直到所有HART都完成了boot阶段的操作。
15. 在boot阶段的最后,会设置boot阶段表示为BOOT_STATUS_BOOT_HART_DONE标志,表示该HART已完成boot阶段,其他HART也要执行10以后的步骤。
综上所述,OpenSBI启动流程包括了_start函数的执行、初始化工作、获取scratch结构体信息、设置各字段的值以及标志位的设置等步骤。