• S5PV210启动过程详解1


    内存:

            SRAM  静态内存     特点就是容量小、价格高、优点是不需要软件初始化直接上电就能用

            DRAM  动态内存    特点就是容量大、价格低、缺点就是上电后不能直接使用,需要软件初始化后才可以使用

    单片机中:内存需求小、而且希望开发尽量简单,适合全部SRAM

    PC中:     内存需求大、而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM

    外存:

           NorFlash      特点就是容量小、价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质

           NandFlash    特点就是容量大、价格低、缺点就是不能直接总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。

    所以一般PC机都是小容量的 BIOS(NorFLASH)+ 很大容量的硬盘(类似于NandFlash)+大容量DRAM(动态内存)

    一般的单片机    很小容量的NorFlash+很小容量的SRAM。

    嵌入式系统:因为NorFlash很贵,所以现在很多嵌入式系统倾向于不用NorFlash,

                     直接用:外接的大容量Nand+外接大容量DRAM+SoC内置SRAM

    S5PV210使用的启动方式: 外接的大容量Nand+外接大容量DRAM+SoC内置SRAM

    实际上210的启动还要复杂一些,210内置了一块97KB大小的SRAM(iRAM),同时还有一块内置的64KB大小的NorFlash(iROM).

    210的启动大致过程是:

       第一步:CPU上电后从内部IROM中读取预先设置的代码,执行,这一段IROM代码做了一些基本的初始化(时钟初始化、关闭看门狗...)

         (这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SOC内部的东西);然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),然后从相应的外部存储去读取第一部分启动代码(BL1,16KB)到内部SRAM。

      第二步:从IRAM去运行刚上一步读取来的BL1(16KB),然后执行,BL1负责初始化NANDFlash,然后将BL2读取到IRAM(剩余80KB)然后运行。

      第三步:从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束

    思路:因为启动代码的大小不是固定的,有些公司可能96KB就够了,有些公司1M都不够,所以把第二部分分为2半(BL1和BL2),这两部分协同工作来完成启动。

    iROM(BL0)(64KB)是三星公司写好固化的,CPU上电从0地址开始执行

    参考 博客 http://blog.csdn.net/asd451006071/article/details/43088381

    BL0:  

               关看门口

               初始化指令cache

               初始化栈

               初始化堆

               初始化块设备复制函数(用于快速从nand、nor、sd卡中把数据拷贝到ram中)(所以可以支持多种启动)

               设置SoC时钟系统

               复制BL1到内部IRAM(16KB)

               检查BL1的校验和

               跳转到BL1去执行

    S5PV210的所有启动

        先1st启动 ,通过OMpin选择启动介质

        再2nd, 从SD2

        再UART

        再USB

  • 相关阅读:
    在mybatis中调用存储过程的时候,不能加工语句
    mybatis sql注入
    关于mybatis缓存配置讲解
    execution(* com.sample.service.impl..*.*(..))
    mybatis中if test 可以使用== != null '' and or 和括号()
    java中可以对时间进行加减处理,有时候不用在sql语句中处理
    【Guava】RateLimiter类
    maven编译报错 -source 1.5 中不支持 lambda 表达式
    easyui打开dialog后给弹出框内输入框赋值问题
    HttpClient 基于连接池的使用
  • 原文地址:https://www.cnblogs.com/yygsj/p/4971131.html
Copyright © 2020-2023  润新知