作者在芯片公司做了一年的启动,也是收获颇多,这里要非常感谢一位很牛叉的前辈,给了我无数的帮助.
芯片的启动流程一般是BROM---->SPL----->BOOTLOADER------>KERNEL,现在有了armv8,多了一级,变成了BROM---->SPL----->ARM-TRUST-FRIMWORK----->TBOOTLOADER------>KERNEL.
系统上电复位后执行BROM的代码,ram在芯片内部,一般几十k,brom除了初始化体系结构相关的内容,就是按照约定的协议去try 存储介质,这里要说明的是BROM是一个存储介质,类似于单片机里面的ROM,里面固化了一段程序,一般包含nand,emmc,usb的驱动和一些功能性的程序.功能性的程序主要就是从存储介质里面try程序,try出来校验,如果校验通过,就读到sram里面运行,注意这个时候内存还没有初始化,为什么内存还没有初始化,有两个原因,意识内存初始化需要参数配置,不同的内存需要的参数不一样,而是内存初始化的代码不是很小,不放在brom里面更加灵活,易于调试和改动,当spl被加载运行的时候,spil就会去初始化内存或者再加载一级spl,为什么这儿多级,有点晚了,下次再补上,总之,就是一级加载一级,最终初始化pmu,串口,ddr,时钟,设置好频率加载uboot,最终加载kernel.
阅读(2550) | 评论(0) | 转发(0) |