一图看懂RISC-V星光板的启动流程

描述

继《最全教程来啦!在RISC-V星光板上创建Debian系统镜像》之后,这一期来聊聊RISC-V星光板的启动流程。

 

如何更直观理解VisionFive的启动流程呢?小编用一张图摹拟整个过程。

 

RISC

 

通电开机加载BootROM后,有两种方法去启动Bootloader(在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务完全由Bootloader来完成)。

 

第一种是通过UART,即通过简单输入一条命令,加载一个固定大小的二进制文件到芯片的内存中并执行它,这种模式主要用于固件更新;

 

第二种是通过QSPI(Quad SPI),即BootROM将32k大小的Bootloader从QSPI读取到SRAM区并开始执行。不难看出,QSPI更为方便,官方也推荐这个方式。

 

通过QSPI模式,BootROM把32k的bootloader从QSPI读取到主芯片内部的SRAM区并启动。大家可以看到上图浅蓝色区域,这个区域的文件都是在开发板出厂时,刷写好到QSPI闪存芯片里的内容,包括了secondboot,ddrinit,OpenSBI和U-Boot。

 

secondboot是一个只有9KB左右的bin文件,它去读取闪存中ddrinit,跳转过去后初始化内存并引导闪存上的fw_payload.bin.out文件,而这个fw_payload.bin.out包含了 OpenSBI和Uboot的头和文件信息,于是直接跳转到OpenSBI了。

 

什么是OpenSBI呢?

 

OpenSBI的全称是Open SupervisorBinary Interface ,即“开放的操作系统二进制接口”,大家可以将OpenSBI 理解成固件。其特点有二,第一,以 M 模式和启动器来定义的平台固件,可以作为一个管理程序或者是通用操作系统执行,并且进入S或者HS模式;第二,以HS模式和启动器的管理程序,或者一个通用的操作系统,可以执行并进入VS模式。

 

M模式即Machine-Mode,可以理解为固件特权级;S模式即Supervisor-Mode,可以理解为操作系统内核特权级。在启动流程中,OpenSBI作用就是让开发板从M运行模式引导操作系统内核,让操作系统内核运行进入 S 模式。

 

其他模式就不过多解释啦,感兴趣的朋友可自行搜索。


 

RISC

 

最后,从OpenSBI到U-Boot 的过程可以拆分来看,OpenSBI为Linux提供基本的系统响应,系统从M模式转换为S模式,跳转并启动位于内存对应位置的U-Boot。而随着U-Boot启动,Linux系统也开始启动了。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分