zoukankan      html  css  js  c++  java
  • S5PV210使用的启动方式

    2017年12月25日
    1. S5PV210存储配置:
      +内置64KB NorFlash(上电不需要初始化)(叫IROM 内部外存):用于存储预先设置的BL0;
      + SoC内置96KB SRAM(上电不需要初始化)(叫IRAM) : 用于加载,存储,运行BL1;
      +外接的大容量NandFlash (硬盘,上电需要初始化) --如SD卡,iNand等,用于存储uboot
      + 外接大容量DRAM(动态内存,上电需要初始化) :被BL1初始化,并通过BL2将OS从NandFlash读取到DRAM中;

    2.S5PV210内置:

      一块内置的64KB大小的NorFlash(内部外存,不需要初始 化,上电可以直接使用)(叫IROM)
      一块96KB大小的SRAM(静态内存,不需要初始化)(叫IRAM)。

    3. 210的启动过程大致是:
    第一步:CPU上电后先从内部IROM(内置的64KB大小的NorFlash)中读取预先设置的代码(BL0),执行;
    ————>首先做了一些基本的初始化(CPU时钟、关看门狗...)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);
    ————>然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式);
    ————>然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16KB)到内部SRAM(IRAM)中。

    第二步:从IRAM(SRAM)去运行刚上一步读取来的BL1(16KB),然后执行。
    BL1负责初始化和DRAM相关的部分时钟、初始化DRAM、从SD等存储介质上讲BL2读取到DRAM中;

    第三步:从(DRAM )运行BL2;
    BL2就是指传统意义上的bootloader,也就是我们这里的uboot的主体,负责flash操作、uboot命令操作等等,并且最终目标是启动内核。

    思路:因为启动代码的大小是不定的,有些公司可能96kb就够了,有些公司可能1MB都不够。所以刚才说的2步的启动方式不合适。三星的解决方案是:把启动代码分为2半(BL1和BL2),这两部分协同工作来完成启动。

    http://blog.csdn.net/ooonebook/article/details/52916202

    4. 再来分析uboot的SD卡启动细节
    (1) uboot编译好之后有200多KB,超出了16KB。uboot的组织方式就是前面16KB为BL1,剩下的部分为BL2.
    (2) uboot在烧录到SD卡时是这样的:
      先截取uboot.bin的前16KB(实际脚本截取的是8KB)烧录到SD卡的 block1~bolck32;然后将整个uboot烧录到SD卡的某个扇区中(譬如49扇区)
    (3) 实际uboot从SD卡启动时是这样的:
      iROM先执行,根据OMpin判断出启动设备是SD卡,然后从SD卡的block1开始读取16KB(8KB)到SRAM中执行BL1,BL1执行时负责初始化DDR,并且从SD卡的49扇区开始复制整个uboot到DDR中指定位置(0x23E00000)去备用;然后BL1继续执行直到ldr pc, =main时BL1跳转到DDR上的BL2中接着执行uboot的第二阶段。

    总结:uboot中的这种启动方式比上节讲的分散加载的好处在于:能够兼容各种启动方式。

  • 相关阅读:
    matlab矩阵和矩阵操作基础
    [ZZ] MathType转化为LaTeX公式语言
    [综] 粒子滤波
    [综] Endnote怎么下载杂志格式?
    英语句子的连接方式
    [zz] postscript打印机以及ps文件转eps文件
    [zz]SCI投稿经验
    all, whole, entire, total, complete
    [转] 动态规划 最短路径
    [zz] Dynamic Time Warping 动态时间规整(弯折)
  • 原文地址:https://www.cnblogs.com/weiyouqing/p/9035486.html
Copyright © 2011-2022 走看看