zoukankan      html  css  js  c++  java
  • 嵌入式开发学习(2)<S5PV210启动过程详解>

    基本概念:

    内存

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

      DRAM  动态内存  特点:容量大、价格低,缺点:上电不能用,需要软件初始化。

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

      嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质。(介于单片机和PC机中间)。

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

    外存

      NorFlash 容量小,价格高,可以和cpu总线式相连,上电cpu直接能读取。所以一般用来作启动。

      NandFlash(跟硬盘一样,容量大,价格低,缺点:不能总线式访问,不能上电cpu直接读取,需要cpu先运行一些软件,然后通过时序接口读写)。

    所以

    一般的PC机都是:很小容量的BIOS(NorFlash)+很大容量的硬盘(类似于NorFlash)。

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

    嵌入式系统:因为NorFlash很贵,所以现在的嵌入式系统不倾向于用NorFlash,直接用:外接的大容量的NandFlash+外接大容量的DRAM+Soc内置SRAM。

    S5PV210启动过程:

    S5PV210的启动方式:外接的大容量的NandFlash+外接大容量的DRAM+Soc内置SRAM。

    实际上启动还要更复杂一些,210内置了一块96kb大小的SRAM(叫iRAM),还有一块内置的64kb的NorFlashiROM)。

    第一步:CPU上电后先从内部的IROM中读取预先设置的代码(BL0),并执行。这一段IROM代码做了一些基本的初始化(cpu始终,看门狗。。。)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来要接什么样的DRAM,因此这一段代码不负责初始化外接的DRAM的,因此这一段代码只能初始化SoC内部的东西);然后这一段代码会判断我们选择的启动模式(我们可以设置硬件开关可以改变板子的启动模式)然后从外部存储器读取相应的第一部分(BL1,16kb)启动代码(uboot)到内置的SRAM(iRAM)。

    第二步:从iRAM去运行上一步读取来的代码(BL1 16kb),BL1负责初始化NandFlash,然后将BL2读取到iRAM(剩余的80kb)

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

    下面是详细的启动过程流程图:

     

    cup加电后,从三星内置的IROM开始启动,判断选择的启动模式:

    1、如果选择的是SD启动,则先尝试从SD通道0(内置4GiNAMD卡)启动,如果通道0启动失败,则尝试从通道2启动,如果通道2启动失败,则整个启动彻底失败。

    2、如果选择的是USB启动,则去读USB接口的代码。

  • 相关阅读:
    netstat
    ansibe tower的开源替代品semaphore
    ansible playbook 示例
    centos6 安装python2.7
    python celery + redis
    flask + uwsgi 生产环境
    ubuntu访问supermicro ikvm
    [leetcode]Symmetric Tree
    [leetcode]Pascal's Triangle
    [leetcode]Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/airduce/p/7492383.html
Copyright © 2011-2022 走看看