|
|
(图一,小块类型FLASH)
(图二,大块类型FLASH)
大块和小块FLASH都有与页大小相同大小的页寄存器,用于数据缓存。当读数据时,先从FLASH内存单元把数据读到页寄存器,外部通过访问FLASH I/O端口获得页寄存器中数据(地址自动累加);当写数据时,外部通过FLASH I/O端口输入的数据首先缓存在页寄存器,写命令发出后才写入到内存单元中。
FLASH典型的读操作时间为50ns/字,写操作时间为200us/页,擦除操作时间为2ms/块,块擦写次数超过100K,数据保存时间超过10年。
1.2 固有特性
NAND FLASH自身有一些特性,导致其不能象普通磁盘那样进行操作。主要特性如下:
a) 出厂时可能存在坏块,并且使用过程中也会有坏块出现。
b) 按页写,按块擦除。
c) 写操作只能在空或已擦除的单元内进行。
d) 块的擦写寿命有次数限制。
e) 块擦除时间与页读写时间相比十分长。
需要通过软件的支持来消除这些特性导致的不足,使得能象操作普通磁盘一样进行FLASH操作。 2 CCM3118操作NAND FLASH工作原理
CCM3118提供多达72个通用输入输出引脚,扩展与FLASH的接口非常简单、方便,CCM3118与K9F5608 NAND FLASH的接口电路图如图三所示:
&nb
|
|
sp; (图三,K9F5608与CCM3118接口电路图)
通过软件把CCM3118相关引脚设置为GPIO功能,并设置其方向。按照FLASH读、写、擦除操作时序要求操作这些I/O引脚。图四、图五、图六分别是K9F5608系列小块FLASH的读、写、擦除操作时命令、地址、数据部分的序列:
(图四,读操作序列)
(图五,写操作序列)
(图六,擦除操作序列)
在操作序列中,通过对R/B信号的判断可以知道操作是否结束。对于写和擦除操作,在写命令(0x10H)和擦除命令(0xD0H)发出之后才进行真正的操作,操作结束后,可以通过发命令(0x70H)查询操作是否成功。 3 闪存固件程序设计
闪存固件程序的需求来源于FLASH本身的物理机制(用I/O接口传送控制命令、地址和数据信息),和其固有特性导致的不足。所以在考虑软件设计的时候,应该区别基本的读/写/擦操作和高的用于磁盘仿真和闪存管理的算法。FLASH基本的读/写/擦操作,通常称作为内存技术驱动程序(MTD-- Memory Technology Devices);高的磁盘仿真和闪存管理,通常称作为闪存转换层(FTL-- Flash TranslationLayer)。FTL层的管理程序调用MTD接口进行数据的存取,闪存固件程序的架构如图七所示。

&n
|
|
1. 新的数据写到少被使用的空闲块。
2. 长期不变的数据被拷贝到另外的块中,它原先占用的块被频繁更新的数据使用。
3.2.4 Block Replacement
当往FLASH某一页写数据后,通过读取FLASH状态可以知道操作是否成功,如果失败则当前块要被标记为坏块,由于当前页写失败并不影响同一块中其它页的数据,所以需要把这些数据拷贝到新的块中。
由于FLASH具有按页写,按块擦除的特性,在对FLASH某块中一页更新而又要擦除该块时,也需要通过块替换把其它页拷贝到一个新块中。
3.2.5 Garbage Collectio
n
由于FLASH写操作只能在空或已擦除的单元内进行,并且相对于读写操作,擦除操作的时间十分长。所以在更新数据时并不是把数据所在的块擦除后在写入数据,而是找一个新的空闲块写入数据,把先前的块标记为舍弃,在系统空闲的时候擦除那些标记为舍弃的块。
3.2.6 FTL接口
向上一层提供一个连续的、没有坏块的、以扇区为单位访问的地址空间及存取接口。
4 结论
NAND FLASH这种高密度、存取性能高、单片容量不断增加的存储器可满足税控收款机对大批量数据存储的需求;CCM3118丰富的GPIO资源可以非常简单的实现对FLASH操作,达到大容量数据存储扩展的目的;针对FLASH固有特性的程序设计能有效的消除NAND FLAH自身的缺陷,满足税控收款机对数据存取高可靠性的要求。
参考文献
1 Samsung Electronics Datasheet. Samsung—K9F5608(16)q(u)0b
2 Samsung Electronics Datasheet. Samsung—K9F2G08X0M
3 苏州国芯科技有限公司CCM3118 Data sheet.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。