x210---uboot第一阶段

转自:http://blog.csdn.net/qq_24696949/article/details/51156415

start.S:

1---异常向量表的构建;

2---nand启动(inand和SD)16字节校验头占位,详见Application note;

3---设置CPU进入SVC模式(可省略,ARM CPU复位时默认进入SVC模式),屏蔽中断(FIQ、IRQ)。
4---关闭MMU、刷新cache;

5---片内RAM中第一次设置栈(lowlevel_init.S中即将调用别的函数);

    288行调用lowlevel_init

        ①lr压栈;

        ②检查复位状态(冷上电、热启动、睡眠状态下的唤醒等);

        ③恢复IO状态;

        ④关狗;

        ⑤供电锁存;

        ⑥第一次判断代码执行位置(决定是否执行⑦);

        ⑦初始化时钟和DDR;

        ⑧初始化串口并输出“OK”(串口中最早的输出信息,便于阶段性调试);

    跳出lowlevel_init,返回start.S

6---第二次设置栈0x33E00000,即uboot基地址下方);

7---第二次判断链接地址和运行地址是否相同,决定uboot是否重定位;

8---读0xD0037488地址处的值,判断从SD卡的通道0(inand)还是通道2(SD卡)启动;

9---movi_bl2_copy(第二个参数:开始扇区号为49)实现uboot重定位;

10---建立TTB(将基地址TTB设置到cp15的c2寄存器中)并使能MMU(详细见cortex A8 reference manual);
                    将0x C0000000~0xD 0000000的256MB映射到了0x30000000~0x40000000,其他地址原地映射。

11---第三次设置栈uboot起始地址上方2MB处,无浪费的安全地段);

12---清BSS段;

13---uboot一二阶段分界线start_armboot,从iRAM的BL1长跳到DDR的BL2。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值