CF卡存储设备设计方案调研.docx
《CF卡存储设备设计方案调研.docx》由会员分享,可在线阅读,更多相关《CF卡存储设备设计方案调研.docx(24页珍藏版)》请在冰豆网上搜索。
CF卡存储设备设计方案调研
CF卡存储设备
设计方案调研
共_20_页
2008年07月21日
目录
1.概述4
1.1.存储卡介绍4
1.1.1.CF4
1.1.2.SD4
1.1.3.XD4
1.1.4.MS5
1.1.5.U盘5
1.2.工控设备中使用的存储卡5
2.CF卡的发展5
3.CF卡的规格6
4.CF卡的选型8
4.1.供应商8
4.2.商业级与工业级8
4.2.1.SanDisk:
8
4.2.2.宇瞻8
4.2.3.创见9
4.3.问题9
4.3.1.兼容性9
4.3.2.生产质量10
5.CF卡工作原理11
5.1.基本结构11
5.2.CF卡控制器13
5.3.CF卡的编址方式13
6.硬件实现14
6.1.模式选择14
6.2.即插即用14
6.3.原理图14
7.软件实现14
7.1.CF卡加载15
7.2.CF卡创建文件16
7.3.源代码手册16
8.文件系统17
8.1.FAT概述17
8.2.FAT1617
8.3.FAT3218
8.4.技术文档20
1.概述
1.1.存储卡介绍
1.1.1.CF
CF卡(CompactFlash),1994年由SanDisk最先推出的。
CF卡具有PCMCIA-ATA功能,并与之兼容;CF卡重量只有14g,是一种固态产品,也就是工作时没有运动部件。
CF卡采用闪存(flash)技术,是一种稳定的存储解决方案,不需要电池来维持其中存储的数据。
对所保存的数据来说,CF卡比传统的磁盘驱动器安全性和保护性都更高;比传统的磁盘驱动器及Ⅲ型PC卡的可靠性高5到10倍,而且CF卡的用电量仅为小型磁盘驱动器的5%。
CF卡由控制芯片和存储模块组成,接口采用50针设计,使用3.3V到5V之间的电压工作(包括3.3V或5V)。
CF卡分为I型和II型,IBM公司推出的MicroDrive(MD,微硬盘)也支持CF卡Ⅱ型接口。
1.1.2.SD
SD卡(SecureDigitalMemoryCard)是一种基于半导体快闪记忆器的新一代记忆设备。
SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。
SD卡结合了SanDisk快闪记忆卡控制与MLC(MultilevelCell)技术和Toshiba(东芝)0.16u及0.13u的NAND技术,通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。
而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动的损坏。
SD卡最大的特点就是通过加密功能,保证数据资料的安全保密。
SD卡从很多方面来看都可看作MMC的升级。
与SD类似的存储卡还有miniSD、microSD(TF)。
1.1.3.
XD
XD卡全称为XD-PICTURECARD,XD取自于“eXtremeDigital”,是“极限数字”的意思。
XD图像卡是富士和奥林巴斯光学工业开发SM卡的后续产品,该卡的尺寸为20.0×25.0×1.7mm大小,重量仅为3克重,也是目前最小最轻的存储卡之一。
XD卡采用单面18针接口,理论上图像存储容量最高可达8GB。
其读出速度高达5MB/s、写入速度高达3MB/s(规格:
64MB以上)。
消耗电力仅25mW。
1.1.4.MS
记忆棒(MemoryStick)是Sony公司在1999年推出的存储卡产品,外形酷似口香糖,长度与普通AA电池相同,重量仅为4克。
MS也包括了控制器在内,采用10针接口,并内置有写保护开关,数据总线为串行,最高频率可达20MHz,电压为2.7V到3.6V,电流平均为45mA。
记忆棒可以为蓝条与白条两种。
白条记忆棒多了MagicGate版权保护功能,常用于媒体播放器。
1.1.5.U盘
U盘是闪存的一种,是基于USB总线(通用串行总线)的存储设备,采用一个4针插头作为标准插头。
目前USB接口已经成为PC机的标准接口之一。
USB1.0/1.1的最大传输速率为12Mbps。
1996年推出。
USB2.0的最大传输速率高达480Mbps。
USB1.0/1.1与USB2.0的接口是相互兼容的。
1.2.工控设备中使用的存储卡
CF:
Omron、贝加莱、ABControlLogix
MMC:
Siemens
SD:
ModiconM340
PCMCIA:
ModiconQuantum
2.CF卡的发展
CF卡作为世界范围内的存储行业标准,保证CF产品的兼容,保证CF卡的向后兼容性;随着CF卡越来越被广泛应用,各厂商积极提高CF卡的技术,促进新一代体小质轻、低能耗先进移动设备的推出,进而提高工作效率。
CFA总部在加拿大的PaloAlto,其成员有权免费得到CF卡、CF商标和CF技术详情。
CFA成员包括3COM,佳能、柯达、惠普、日立、IBM、松下、摩托罗拉、NEC、SanDisk、精工(爱普生)和SocketCommunications等120多个。
在CompactFlash规范第一次标准化的时候,即使是全尺寸的硬盘的容量也很少超过4GB的,因此ATA规范自身存在的限制被认为是可接受的。
但是,在硬盘由于不断增长的容量需求而对ATA规范作出大量改变的今天,闪存卡很快就超过了4GB的限制。
CF+(或CF2.0)包括了两个较大的变化:
数据传输率提高到16MB/s,容量最大可达到137GB(根据CompactFlash协会(CFA)的资料)。
CF3.0,支持UDMAmode4,最高66MB/s。
CF4.0,支持UDMAmode5,最高100MB/s。
CF4.1,支持UDMAmode6,最高133MB/s。
3.CF卡的规格
CompactFlash协会制定了CF+/CompactFlash规格,最新版本为V4.1。
CF卡遵循ATA标准制造,不过它的接口是50针而不是68针,分成两排,每排25个针脚。
CF卡不是硬盘那样的针型接口而是50mil(1.27mm)的孔型接口,因此不容易被损坏,这一设计和PC卡类似。
CF+是CompactFlash的衍生技术规格,CF+的物理规格和CF完全相同,但CF+卡并不是CF卡那样的ATA闪存存储器,而主要是相同规格的I/O设备。
CF卡连接器为42.8毫米宽,外壳的深度是36.4毫米,厚度分3.3毫米(CFI型卡)和5毫米(CFII型卡)两种。
TypeICF/CF+卡
TypeIICF/CF+卡
长
36.4±0.15mm(1.433±0.006in.)
36.4±0.15mm(1.433±0.006in.)
宽
42.80±0.10mm(1.685±0.004in.)
42.80±0.10mm(1.685±0.004in.)
厚
3.3mm±0.10mm(0.130±0.004in.)
5.0mmmaximum(0.1968in.maximum)
CFI型卡可以用于CFII型卡插槽,但CFII型卡由于厚度的关系无法插入CFI型卡的插槽中。
CF闪存卡多数是CFI型卡。
图1CFI型卡规格
图2CFII型卡规格
4.CF卡的选型
4.1.供应商
目前市场上CF卡的主要生产厂家有SanDisk、Kingston、Lexar、Sony、威刚、创见(Transcend)、胜创(Kingmax)、宇瞻(Apacer)、勤茂(Twinmos)等。
Kingston提供5年质保;SanDisk对低端产品提供5年质保,高端产品提供终生质保。
目前普通CF卡读写速度在1.5MB/s左右,高速CF卡在6MB/s左右。
4.2.商业级与工业级
工业级
商业级
Flashmemory
SLC(Single-LevelCell)
MLC(Multi-LevelCell)
读写次数
8~10万次
1万次
分区识别
可分区识别本地磁盘
无法分区识别移动磁盘
写入技术
平均写入技术
无
数据校验
ECC自动校验技术
无
硬盘模拟
完全模拟硬盘引导系统开机,支持长期稳定工作
只可短期引导系统开机。
长期开机BOOT区容易损坏,导致系统无法启动
使用温度
-40℃~85℃(宇瞻,CFCⅡ)
-25℃~85℃(SanDisk,CompactFlash5000)
0℃-70℃
故障率
<0.3%
-
目前SanDisk、宇瞻、创见有工业级产品提供。
4.2.1.SanDisk
型号为CompactFlash5000的工业级CF卡,其工作温度为-25℃~85℃,读写寿命可以达到8万次以上。
同时具备了高达30MB/s的优秀读写性能(比目前市面常见的极限三代CF卡还要快大概10MB/s左右)。
该产品一共具有512MB,1GB,2GB,4GB,8GB等多种容量规格可以选择。
另外SanDiskExtremeCF卡性能介于商业级和工业级之间,工作温度为-25℃~85℃,可承受3000G冲击力。
4.2.2.宇瞻
宇瞻的工业级CF卡目前有CFCⅡ和CFCⅢ两个系列,分别为其第二代、第三代工业用CF卡。
CFCⅢ具有业界领先的8-bitECC功能,更够准确修正因频繁存取所衍生的数据错误。
其Flashmemory是使用SLC颗粒,储存容量可由128MB到16GB。
同时全系列产品皆可支持PIO,Multi-WordDMA及UltraDMA等传输规格。
4.2.3.创见
创见工业级CompactFlash存储卡采用了SLC闪存芯片,能够支持UltraDMAmode0-4及双信道传输模式,读写速度分别为42MB/s和30MB/s,采用了先进的数据自动纠错(ECC)功能。
工作温度范围为-40℃~85℃,并具有防震、防尘能力。
1GB、2GB、4GB、8GB容量的创见工业级CompactFlash存储卡的价格分别为47.2美元、77.8美元、142美元、267美元。
创见提供了两年的质量保证。
4.3.问题
4.3.1.兼容性
CF卡的兼容性问题要好于SD卡,但仍存在。
下面以数码相机与部分CF卡之间的兼容性测试结果为例。
品牌
Nikon
Olympus
Fujifilm
型号
CoolpixE5700
C5060Zoom
FinePixS602Z
Sandisk20X512MB
◎
◎
◎
Sandisk40X512MB
◎
◎
◎
SandiskUltraII512MB
◎
◎
◎
Kingston512MB
◎
◎
◎
Kingmax1GB
◎
◎
◎
Preteccheetah256MB
◎
×
◎
PretecPlatinum512MB
◎
◎
◎
Pretec3GB
×
×
△
PQI40X512MB
◎
◎
◎
Lexar40X512MB
◎
◎
◎
Twinmos512MB
◎
◎
◎
注:
◎:
完全正常的使用;△:
可以使用,但是存在问题;×:
无法使用。
解决方法:
出厂前对各个品牌各个系列的CF卡分别进行测试,在产品说明书中提供兼容性列表,并通过工程规范进行约束。
4.3.2.生产质量
2006年下半年,三星在闪存生产制程中由SLC转向63纳米制程的MLC,而下游控制芯片设计公司未能相应地调整控制芯片,无法稳定地支持MLC闪存所需的整页一次写入方式,导致采用三星63纳米制程的MLC闪存产品出现数据存储不稳定,用户在使用2至3个月后会出现数据丢失的严重问题。
此次由控制芯片引发的质量事件,在欧美市场已经引发了大范围的退货求偿风潮,为了转嫁风险和快速抛售大量有质量问题的SD存储卡库存,亚洲市场(主要是中国、印度和其他东南亚市场)成了主要的抛货对象,抛货数量达千万片之巨。
解决方法:
通过正规的渠道进货,对供应商签订PCN协议。
5.CF卡工作原理
5.1.基本结构
图3CF卡结构框图
由上图可知,CF卡包含两个基本部分;片内的芯片控制器和片内的存储模块。
片内的存储模块用来存储数字信息,片内的芯片控制器用来实现与主机的接口及控制数据在存储模块中的传输。
图4CF卡实物解剖图
现在的CF卡和闪盘基本都使用NAND型flash,NANDFlash自身是没有存储控制器的,其结构可看作是由许多的小区块组成的,每块都能存储一定数量的信息,类似于硬盘的簇。
NAND型flash的读写也是以块和页为单位来进行的,使用8bit的I/O端口存取数据。
NAND型flash容量大、成本低、可以达到比较高的速度,所以应用较为广泛,不过它也有些比较明显的缺点。
NAND型flash的基本工作方式是按顺序读取,一个区块写入或读取结束再接着下一个,是“串行”方式而不是“并行”方式。
操作上也是如此,比如区块上已有信息,就一定要先擦除,再写入,其它操作也是一样的。
另一个问题就是NAND型flash需要一定的存储空间来存放目录等信息来管理所有的资料,进行任何操作都需要使用这一部分,大部分闪盘的控制芯片都使用固定区块,所以其使用次数远高于其它区块,不管闪存是号称10万次擦写寿命也好,100万次擦写寿命也好,如果使用很频繁,即使每次只用一点点存储空间,也可能因为目录区损坏及缺乏有效扫描除错手段而造成数据丢失,需要格式化才能解决问题。
CF卡比闪盘之类的存储器更加接近硬盘,CF卡内部控制器设计完全模拟硬盘,而且使用标准的ATA/IDE接口界面,可以很容易的通过IDE接口与电脑连接,而且早已实现无驱动设计,使用非常方便。
5.2.CF卡控制器
CF卡控制器中包含两组寄存器:
命令寄存器和控制寄存器。
命令寄存器用来接受命令和传输数据;控制寄存器用作磁盘控制。
这两个寄存器组通过GEG信号进行区分。
控制寄存器组主要用于控制CF卡的工作方式;命令寄存器组被分配在与ATA标准兼容的地址空间。
当CF卡工作在I/O方式下,命令寄存器组的地址空间为1F0H~1F7H和3F6H~3F7H;当CF卡工作在存储器方式下,命令寄存器组的地址空间为1F0H~1FFH。
当CF卡工作在存储器方式下,CF卡按照ATA标准以寄存器方式传送数据、命令和地址。
这些寄存器除数据寄存器为16位外,其它寄存器均为8位。
数据寄存器(R/W):
这是一个16位数据寄存器,用于对扇区的读写操作。
主机通过该寄存器向CF卡控制寄存器写入或从CF卡控制寄存器读出扇区缓冲区的数据。
错误寄存器(R)和特性寄存器(W):
错误寄存器反映控制寄存器在诊断方式或操作方式下的错误原因。
特性寄存器一般不使用。
扇区数寄存器(R/W):
用来记录读、写命令的扇区数目。
扇区号寄存器(R/W):
用来记录读、写和校验命令指定的起始扇区号。
柱面号寄存器(R/W):
用来记录读、写、校验和寻址命令指定的柱面号。
驱动器/磁头寄存器(R/W):
记录读、写、校验和寻道命令指定的驱动器号、磁头号和寻址方式(CHS模式或LBA模式)。
状态寄存器(R)和命令寄存器(W):
状态寄存器反映CF卡驱动器执行命令后的状态,读该寄存器要清除中断请求信号。
命令寄存器接收主机发送的CF卡工作的命令控制字。
5.3.CF卡的编址方式
CF卡的扇区寻址有两种方式:
物理寻址方式(CHS)和逻辑寻址方式(LBA)。
物理寻址方式使用柱面、磁头和扇区号表示一个特定的扇区。
起始扇区是0磁道、0磁头、1扇区,接下来是2扇区,一直到EOF扇区;接下来是同一柱面1头、1扇区等。
逻辑寻址方式将整个CF卡同一寻址。
逻辑块地址和物理地址的关系为:
LBA地址=(柱面号×磁头数+磁头号)×扇区数+扇区数-1
在CF卡上写入一个文件的过程是这样的,在CF卡初始化后(CF卡上电复位和统计剩余空间等工作已经完成),控制器中DSP开始向CF卡的一些寄存器填写必要的信息,如向扇区号寄存器填写读写数据的起始扇区号(LBA地址)和扇区数寄存器填写读写数据所占的扇区个数等,然后向CF卡的命令寄存器写入CF卡操作的命令,如写操作则向CF卡的命令寄存器写入30H,读操作向CF卡的命令寄存器写入20H等。
删除或者再编程的过程相似。
采用逻辑寻址方式,没有磁头和磁道的转换操作,因此在访问连续扇区时,操作速度比物理寻址方式快。
6.硬件实现
6.1.模式选择
CF卡可以工作在PCCardATAI/O模式(I/O口模式)、PCCardATAMemory模式(MEMORY模式)、TrueIDE模式。
CF卡在TrueIDE模式下工作时兼容IDE硬盘,并且需用的I/O引脚较少,因此推荐使用CF卡的TrueIDE模式。
需要注意的是,当主机电源一直接通时,拔插CF卡将会使其从原来的TrueIDE方式重新配置成PCCardATA方式。
所以要让CF卡一直工作在TrueIDE,需要在电源加电启动时将OE输入信号接地。
CF卡与单片机之间有着非常标准的接口,4根地址线,8根数据线,1根读信号线和1根写信号线,总共只需占用单片机的14根I/O口线。
6.2.即插即用
(1)硬件提供判断条。
CF卡为了实现即插即用的功能,在自身电路上提供了两个用来检测CF卡是否存在的管脚(CD1、CD2)。
CD1和CD2的有效电平为低电平,即当主机检测到与其相连的CD1和CD2两个管脚同时为低电平时,可判断出CF卡与主机相连;当主机检测到与其相连的CD1和CD2有一个管脚不为低,则可判断出CF卡未与主机相连。
(2)软件实现。
首先定义全局变量(如:
IsExist)用于记录CF卡是否与主机相连,当IsExist为0时表示CF卡未与主机相连;当IsExist为1时表示CF卡与主机相连。
其次在每次操作CF卡时检测CF卡的CD1和CD2管脚。
当检测到CD1和CD2管脚为低电平且IsExist为0时复位CF卡,重新检测CF卡的FAT表统计还剩余多少空间可以分配,检测完FAT表后置变量IsExist为1。
当检测到CD1和CD2管脚为低电平且IsExist为1时,继续CF卡的正常操作。
当检测到CD1和CD2为高时,停止CF卡操作,置变量IsExist为0。
6.3.原理图
参考《SanDisk的CF卡接口电路及源代码.pdf》
7.软件实现
TrueIDE方式支持8位/16位存取,一次最多存取的扇区数可由命令码Ech中的第47参数字决定。
CF卡跟硬盘的结构相同,如下图所示。
在引导区中装有用于启动系统的代码,以及有关文件系统的重要信息,随后是记录所有磁盘空间的表,再下来就是根目录,然后是所有其它的东西。
引导扇区在其末尾处包含有分区表。
此表包含了用以标示每个分区开始和结束的表项,最多可以有四个分区,每个分区可包含不同的文件系统。
紧随引导区之后的是FAT(文件分配表),用来记录设备中所有的磁盘空间的信息(此表与UNIX中的I-node表和空闲表具有相同的功能)。
图5CF卡结构
7.1.CF卡加载
图6CF卡加载流程
7.2.CF卡创建文件
图7CF卡创建文件流程图
7.3.源代码手册
《周立功CF驱动中间件简要说明》
8.文件系统
8.1.FAT概述
文件分配表FAT(FileAllocationTable)是一种由微软发明的并带有部分专利的文件系统,供MS-DOS使用,也是非NT内核的微软窗口使用的文件系统。
FAT是文件管理系统用来给每个文件分配磁盘物理空间的表格,它告诉操作系统,文件存放在磁盘什么地方。
文件分配表(FAT)由表标识和簇映射的集合组成。
微软在Dos和Windows系列操作系统前后曾使用了6种不同的文件系统,FAT12、FAT16、FAT32、NTFS、NTFS5.0和WINFS,现在的CF卡大部分都可以支持FAT16和FAT32。
二者的最大区别就是FAT16使用16位分区表,FAT32使用32位分区表。
FAT16不支持2GB以上,FAT32则不支持32MB以下。
分区大小FAT16簇大小FAT32簇大小
16MB-32MB2KB不支持
32MB-127MB2KB512byte
128MB-255MB4KB512bytes
256MB-259MB8KB512bytes
260MB-511MB8KB4KB
512MB-1023MB16KB4KB
1024MB-2047MB32KB4KB
2048MB-8GB不支持4KB
8GB-16GB不支持8KB
16GB-32GB不支持16KB
32GB以上不支持32KB
8.2.FAT16
磁盘文件系统将整个磁盘划分为4个独立的区域,每个区域包含磁盘的独立信息,且这4个独立区域中的信息组合成一个完整有效的磁盘文件管理系统,如下表所示。
图8磁盘文件系统
1)DOS引导扇区:
该扇区是磁盘的引导扇区,包含一些重要的磁盘系统信息,如:
磁盘总共包含多少个扇区,每个簇包含多少个扇区。
每个扇区包含多少个字节等。
通过这些磁盘系统信息可以计算出磁盘的容量、FAT表和FDT表的起始位置以及文件数据存放的起始位置等。
2)文件分配表(FAT):
文件分配区包含两个完全相同的FAT表,其中一个FAT表用作备份FAT。
每个FAT表以16字节为一个单元。
FAT的每一个单元都映射磁盘上的一个簇。
一般而,FAT表的第M个单元就映射该磁盘上的第M个簇,其中的值就反映了该簇的使用情况。
3)根目录区(FDT):
根目录区专门用来存放根目录下的文件信息。
根目录下的每一个文件在该目录区都对应一个32字节的目录项。
这32字节的目录项包含文件的名称、属性、文件的长度、文件在磁盘上的起始簇号、文件建立和最后修改的日期和时间等。
这些32字节的小单元互相首尾相接,中间没有任何分隔标志。
4)文件数据区:
该区是磁盘存放所有信息的场所。
为了便于管理,文件管理系统以簇为单位将文件分配在文件数据区的存储空间。
簇总是2n个连续扇区。
文件在文件数据区存放的起始位置存放在其对应目录下的FDT表中,当文件的长度大于1K时,文件数据区的后续位置保存在FAT表中,即对应的FAT单元中的数值就是文件的后续部分所存放位置的簇号。
文件管理系统通过以上4个区域实现对磁盘上的文件进行有效的管理。
文件管理系统将文件数据存放在文件数据区,将文件的属性存放在文件对应目录下的FDT表中,将文件的存放位置存放在FAT表中。
因此文件管理系统通过FAT表和FDT表可以很方便地对文件数据区的文件进行管理。
一个完全相同的镜像副本连续存储在主FAT表后。
表标识符包括磁盘介质描述符(1字节)和填充字节,总计占两个簇的簇映射区域(这大概也就是FAT文件系统簇号由2开始的原因),填充字节一般为FF,FAT32的填充字节中还包含“脏位”,即系统启动时执行磁盘检查(FAT-ChkDsk/NTFS-AutoChk)。
FAT簇映射中,0000表示空簇,FFFF表示簇链结束,FFF7表示坏簇,其余值表示其后续簇的簇号。
FAT12和FAT32的存储策略同FAT16类似,例如FAT12的结束簇为FFF,FAT32的坏簇为0FFFFFF7等(注意FAT32的高4位保留)。
文件分配表(FAT2)是FAT1的完全备