uboot启动第一阶段主要做什么

这只是博主的个人见解,如有错误之处,还望指出,一起交流学习!!

uboot的start.s分析:


start.s:
1、globl _start(构建异常向量表)
2、set_l2cache_auxctrl_cycleL2(ache相关初始化)  关闭MMU

3、读启动信息,判断用那种方式启动
ldr sp, =0xd0036000(设置栈,0xd0036000 SRAM中用来放栈的) lowlevel_init()

4、lowlevel_init:
关看门狗,SRAM 初始化,开发板的供电锁存
判定当前代码执行的位置在SRAM中还是DDR中,主要是通过判断这俩个来确定还要不要对系统时钟和DDR进行初始化
system_clock_init初始化系统时钟 mem_ctrl_asm_init初始化DDR(动态内存) 由上面的判断来确定要不要执行
uart_asm_init 串口初始化,并且初始化完成发送一个 O
tzpc_init 可信任区域初始化
pop {pc} 返回前通过串口打印'K',串口打印OK表明lowlevel_init,初始化完成
开发板再次置锁
再次设置栈,这次是把栈设置到DDR里面去的
再次判断程序是在DDR还是SRAM中运行,是否进行uboot的relocate
uboot重定位(mmcsd_boot)
使能域访问,设置cp15相关的寄存器

 

设置TTB,TTB就是translation table base,转换表基地址

 

        _start_armboot,第一阶段结束,跳转到第二阶段

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值