Hi3861系统启动大体流程如下:
其中启动liteOs之前还有RomBoot,LoaderBoot,FlashBoot三个阶段,RomBoot是固化在芯片内部看不到代码,LoaderBoot和FlashBoot可以看到代码,今天分析一下LoaderBoot代码,LoaderBoot被加载运行后,负责与HiBurn交互进行操作系统固件的烧录工作。
LoaderBoot的入口函数在如下汇编文件中:
start_loaderboot是主要启动函数,负责一些一些硬件的初始化和命令处理的功能,然后进入一个死循环,命令处理就是与HiBurn的交互,可以看到如下打印语句是和HiBurn运行时一样的。
然后看一下HiBurn与LoaderBoot的命令与处理函数如下:
这是一个函数二维数组,根据指定的命令进行相应的处理,其中loader_download_image就是下载烧录固件的函数。
最后调用loader_serial_ymodem函数下载可以看到采用的时
ymodem协议。