块设备简介

来源:互联网 发布:死神结局是什么 知乎 编辑:程序博客网 时间:2024/06/04 23:34

块设备简介

所谓块设备,就是只能以整块数据为单位进行读写的设备,常见的块设备一般是各种ROM

1.常见的块设备

对于嵌入式设备,一般都使用flash,flash主要分为:

  • nandflash:一种原始的flash。优点是:经典、容量大、价格实惠。缺点是:接口不统一,接口读写很复杂,并要求soc负责坏块管理
  • norflash:一种原始的flash。优点是:可以总线式访问,可靠性极高。缺点是:容量不大,价格贵
  • mmc:内部集成智能芯片的nand。优点是:接口统一、容量大、价格实惠。缺点:没有大缺点
    • mmc卡是祖宗,现在基本不用了
    • SD体积较大,现在用的比较少了
    • microSD(tf卡)是缩小版的SD
    • emmc是芯片化的SD,根据厂商的不同,名字可能被起为inand、movinand等,其内部具有物理上的分区

2.mmc简介

mmc其实是一种标准,所谓mmc设备,就是符合mmc标准的设备(尽管内部结构可能不同)

  • mmc设备主要由两种接口方式,SDIO和SPI
  • SPI时序简单,但是速度比较低,适合没有SDIO接口的单片机
  • SDIO时序复杂,但是速度很快,适合具有SDIO接口的soc
  • 下面主要来分析SDIO接口,SDIO一般分为1bit、4bit、8bit模式。可插拔的SD、microSD(tf卡)通常采用的是4bit模式,即4根data线,如下图
    这里写图片描述
    而芯片化的emmc通常采用8bit模式,即8根data线,如下图
    这里写图片描述
  • 对于emmc来说,在出厂时里面会实现物理上的分区, 主要由这几个部分组成:
    1. BOOT1:一般用来放bootloader,物理上的稳定性、可靠性极好
    2. BOOT2:常作为BOOT1的备份,BOOT1失效时执行BOOT2
    3. RPMB:存放特殊、保密的数据,极少使用该分区
    4. User Data Area:常规空间,占整块EMMC大小的93%,可被软件分区
    5. Vender private area:厂家预留区域

3.nand简介

常见的nand有x16、x8两种版本,区别是有几根数据线,下图中的nand有8根数据线。而nand的接口是不统一的,所以控制线很多变
这里写图片描述

  • nand芯片中主要包含2部分:nand存储颗粒+nand接口电路,nand接口是一种公用接口,是一种标准,外部的SoC可以使用内部的nand控制器来读写这个nand存储芯片。
  • nand中可以被单次访问的最小单元叫做Page(页),在K9F2G08芯片中,Page的大小是2KB+64B。其中的2KB属于带内数据,是我们真正的存储空间,(我们平时计算nand的容量时也是只考虑这2KB);64B的带外数据不能用来存储有效数据,用来存储ECC数据、用来存储坏块标志等
  • 所以我们每次只能读写2KB的整数倍,即使我们只是想要其中的一个字节(现在有些块设备为了方便,提供了一种random read模式,可以只读取1个字节)
  • 页往上还有个Block(块)的概念,1个块等于若干个页(譬如在K9F2G08中1个块等于64页)
  • nand的内部数据地址虽然是精确到字节的,但是很多操作都要求给的地址是页对齐的,譬如2K、4K、512K等这样的地址,不能给3000B这样的地址
  • nand读写时地址传递是通过数据线发送的,因为地址有很多位而上图中的nand数据线只有8位,所以需要多个cycle才能发送完毕。一般的nand都是4cycle或者5cycle发送地址(从这里把nand分为了4cycle nand和5cycle nand)
0 0