U-Boot源代码阅读
U-Boot源代码阅读
初始化异常向量表
1 | .globl _stext |
链接脚本中异常向量的入口地址
1 | /*后面的符号正好是对应的中断异常服务程序的入口地址*/ |
计算一些段的标号
1 | .globl TEXT_BASE |
初始化从这里开始,CPU一上电以后就是跳到这里执行的,更改处理器模式为SVC模式
。
1 | .globl reset |
禁用看门狗
1 | /* disable watchdog 禁用看门狗 */ |
两句跳转指令cpu_init_cp15
和cpu_init_crit
单独分析
1 | /* the mask ROM code should have PLL and others stable */ |
1 | /************************************************************************* |
pu_init_cp15
函数是通过配置CP15
协处理器相关寄存器来进行一些设置。设置内容主要是失效TLBs
(这与MMC有关,后面再讲)、失效icache
、失效BP array
。
这部分的内容,跳转到lowlevel_init
符号处。
1 | /************************************************************************* |
重新定位内存中的u-boot代码到TEXT_BASE处
1 | #ifdef CONFIG_RELOC_TO_TEXT_BASE |
清除未初始化数据段
1 | clear_bss: /*清除未初始化数据段*/ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不愿努力的帅洋!