【篇八】SD卡启动

本章总结点如下

  1. 外存归类
  2. 扇区和块的概念
  3. SD卡结构
  4. SD卡启动

外存归类

外存特点:用来存储东西,掉电不丢失,不能随机地址访问,只能已块为单位来访问

五类外部存储器
    一类:软盘,硬盘,光盘,CD,磁带
        特点:已经或者即将淘汰,磁学原理存储,比较老久,读写速度慢,可靠性差,有点是技术成熟,便宜

    二类:纯粹的Flash:NandFlash,NorFlash :
        特点:出现早,内部构成比较简单,最原始的Flash颗粒组成芯片,芯片中只有对存储单元做了最基本的读写接口,需要外部的SoC来提供Flash的
            读写控制器来操作Flash读写时序, 
        缺陷:1:读写接口时序复杂, 2:内部没有坏块处理机制,需要SoC管理来管理Flash的坏块,3:个产商Flash接口不一致,造成产品设计麻烦
        其他:NorFlash   容量小,价格高,总线式访问,接到SROM bank,优点是可以直接总线式访问,一般用来启动,如台式机,笔记本BIOS启动
             NandFlash分为MLC和SLC两种:SLC技术比较早,可靠性高,价格贵,容量小,MCL技术新,不成熟,可靠性差,但容量可以很大,现在都在发展MLC

    三类:SD卡,MMC卡,MicroSD,TF卡
        > 内部也是Flash芯片颗粒,比直接的Nand芯片多了统一的外部封装和接口
        > 都有统一的编标准和规范,如速度,读写接口时序,读写命令集,卡大小尺寸,引脚个数即定义
        > MMC比SD标准早,SD卡兼容MMC标准,所以MMC卡可以被SD读卡器识别,而MMC读卡器不能
        > SD卡,MMC卡有统一的标准,二Nand芯片没有,SD卡有一个写保护开关
        > TF卡统一通过卡套转为SD卡使用

    四类:iNand,MoviNand,eSSD
        > 现在发展方向,代替上面几类没有通过卡实现,电子产品直接内置大容量Flash芯片 
        > 从芯片-> 卡 —> iNand, 本质没有变化,还是NandFlash,内部由Nand存储颗粒构成,再集成了块设备管理单元,综合了sd
          卡为代表的各种卡的优势,
        > 优·势
          1: 综合了SD卡优势,有统一的接口规范
          2: 综合了Nand优势,已芯片的方式发布
          3: 内置了Flash的管理模块,如坏块管理,让Nand管理起来容易

    五类:SSD(固态硬盘)
        > 同eSSD,不同点eSSD是芯片形式,直接嵌入在开发板

        总结:现在存储的发展方向是Flash存储,一种闪存技术,就是利用电学原理来存储0和1,从而制成存储设备,闪存设备没有物理运动,(硬盘中的磁头),所以
        读写速度快,且无物理消耗,

扇区和块的概念

    早起的块设备是软盘硬盘这类磁存储设备,这种设备不是已字节为单位,而是已扇区为单位,由于硬件本身物理原因,磁存储的最小的读取或写入单位是扇区
    一个扇区有512个字节(后来发展为1024,2048等,后面发展来的都是兼容512字节扇区这种操作方法)
    一个扇区可以看做一个块,一个快是由多个字节组成的一个共同的操作单元,这类设备叫做块设备如(磁存储设备,硬盘,软盘,DVD和Flash)
    linux里的mtd驱动,用来管理这类块设备

SD卡结构

    》构成:由9根针脚与外界进行物理连接,这9个脚中有2个地,1个电源,6个信号线
    》SRAM/DDR/SROM是SoC直接总线式地址访问,而SD卡不同,需要按照一定的接口协议(时序)来访问
    》SD卡只有一种物理接口,但支持两种接口协议:SD协议和SPI协议, SPI协议特点(低速,接口操作时序简单,适合单片机),比SD协议来说速度低,
    》SD协议:高速,接口时序复杂,适合有SD1IO接口的SoC,要求SoC中有SD控制器
    》 SD卡管理模块通过9针引脚已SD协议/SPi协议与Soc通信,如发送命令,时钟,数据等信息,工作的每一个任务(比如初始化SD卡,读一个快,写,擦除)都需要一
      定的时序来完成,如图

【篇八】SD卡启动_第1张图片

SD卡启动

    》刷卡烧录优势:不需要借助专业工具(类似Jlink),就可以对SD卡进行刷机,然后插入卡槽,启动SoC,比如可以用SD卡进行量产刷机
    》启动难点和SRAM,DDR比较:
        1:SRAM、DDR都是总线式访问的,SRAM不需要初始化即可以使用,DDR需要初始化后才能使用
        2:SRAM、DRAM可以直接和CPU通信,而SD卡需要时序访问,不能直接和CPU通信
        3:早起通过NorFlash作为电脑的Bios启动,后来三星在2440中使用了SteppingStone的技术,让NandFlash也可以作为启动介质,SteepingStone(基石)技术就是在Soc内置4KB的SRAM,然后开机时SoC根据OMPin判断用户启动方式,如果是NandFLash,则SoC启动部分的硬件直接从外部的NandFlash中读取开头的4KB到内部的SRAM作为启动内容
        4:启动基石技术进一步发展,在6410芯片中得到完善,在210芯片已经完全成熟,210中有96KB的SRAM,并且有一段iROM代码作为BL0,BL0再去启动BL1,
    》210的启动过程如图:
        1:首先执行内部的IROM(也就是BL0),BL0会判断OMPin来决定从哪个设备启动,如果启动设备是SD卡,则BL0会从SD卡读取前16KB(16非确定值),到SRAM中去启动,
           三星在iRoM中事先内置了一些代码去初始化外部的SD卡/NandFlash,并且内置了读取各种设备的函数,如block device copy function 函数将sd卡代码读取到bl0,BL1的
        2:BL1执行之后的软件事情,Soc就不用再管了
    》两次读取SD卡过程
        1:首先将代码分为两部分,第一部分BL1小于等于16KB,第二部分大小任意,iRom代码执行完成后从SD卡启动会自动读取BL1到SRAM中执行,BL1负责初始化DDR,然后手动
            将BL2从SD卡copy到DDR的正确位置,然后BL1远跳转到BL2中执行BL2,完成启动程序

 

你可能感兴趣的:(嵌入式)