您现在的位置:首页 > 技术资料 | 上载库存 |
NAND FLASH在基于CCM3118税控收款机上的应用 引言 CCM3118是苏州国芯公司一款32位高性能、低功耗SoC芯片,以32位C*CORE C310处理器为核心,并有3个串口,2个智能卡接口,1个PS/2接口,1个LCDC控制器,多达72个通用输入输出引脚(GPIO)等丰富资源,在税控收款机、POS机等领域广泛应用。税控收款机所管理的商品、发票、销售记录等数据量非常大,并且国家税控机标准中对数据的保存时间、可靠性有明确要求,故需要一种大容量、单位比特价格低、读写性能好、能够长时间可靠保存数据的非易失存储器。 NOR和NAND是现在市场上两种主要的非易失闪存技术。NOR FLASH较早为业界采用,但由于其成本较高及写入速度较慢的先天弱势,使其仅能在注重执行速度或小量数据储存的地方使用。NAND FLASH结构强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级,是高密度数据存储的理想解决方案。 &n
1.1 芯片介绍 NAND FLASH是采用NAND结构技术的非易失存储器,内存有8位和16位两种组织形式,本文所讨论的FLASH都是8位的。FLASH的I/O接口可用于控制命令和地址的输入,也可用于数据的输入和输出。FLASH主要以页为单位进行读写(也能够以字节为单位进行读写),以块为单位进行擦除。FLASH页的大小和块的大小不同类型块结构而不同,块结构有两种:小块(图一)和大块(图二),小块FLASH包含32个页,每页512+16字节;大块FLASH包含64页,每页2048+16字节。
大块和小块FLASH都有与页大小相同大小的页寄存器,用于数据缓存。当读数据时,先从FLASH内存单元把数据读到页寄存器,外部通过访问FLASH I/O端口获得页寄存器中数据(地址自动累加);当写数据时,外部通过FLASH I/O端口输入的数据首先缓存在页寄存器,写命令发出后才写入到内存单元中。 FLASH典型的读操作时间为50ns/字,写操作时间为200us/页,擦除操作时间为2ms/块,块擦写次数超过100K,数据保存时间超过10年。 a) 出厂时可能存在坏块,并且使用过程中也会有坏块出现。 b) 按页写,按块擦除。 c) 写操作只能在空或已擦除的单元内进行。 d) 块的擦写寿命有次数限制。 e) 块擦除时间与页读写时间相比十分长。 K9F5608与CCM3118接口电路图 hspace=0 src="http://www.ic-cn.com.cn/dzhtml/image/www.ednchina.com/images/Article/dbab3b80-40fc-4293-bd9b-dd42e48134d7/3.jpg" width=484 border=0>
sp; (图三,K9F5608与CCM3118接口电路图)
(图四,读操作序列) (图五,写操作序列) (图六,擦除操作序列) &n
3.1 MTD层 不同厂商、不同FLASH结构导致闪存的控制命令有所差异,不同容量导致地址字节数不同。例如三星K9F5608系列读数据方式是:控制命令0x00H,3个字节的地址,读信号,但K9F1G08系列读数据方式是:控制命令0x00H,5个字节的地址,控制命令0x30H,读信号。 在MTD层需要针对这些差异,实现相应的驱动。而且MTD层应该封装这些差异向FTL层提供统一的接口,使得FTL层能够访问任意物理地址的数据,而不关心控制命令序列和地址字节数。值得注意的是虽然最上层的应用都是以扇区(在FLASH里称为页)为单位读写数据,但FTL层的管理程序需要对FLASH的冗余数据区(SPARE AREA)进行数据操作(一般FTL层的管理程序所用的数据存放在冗余数据区),所以MTD层也需要提供字节地址而不仅仅是页地址的访问能力。 3.2 FTL层 FTL层的管理程序主要目的是消除FLASH固有特性带来的不足,让上层应用程序以类似于磁盘的方式对FLASH进行操作。 3.2.1 初始化 在FLASH出厂时已经对坏块做了标记,所以闪存芯片在被第一次访问时需要根据厂方定义的坏块识别方法识别出所有坏块,建立坏块表,避免以后对这些坏块进行操作。 3.2.2 Block Management 除了在出厂时由厂方标记坏块外,在FLASH写或擦除后也能够通过读取FLASH状态来识别出刚操作的块是否坏,如果是坏块则需要在坏块表里标记出来。 由于坏块的存在导致不能按照物理地址连续的存取数据,并且为了使上层应用不关心FLASH物理地址是否连续,需要提供一种机制把上层传来的地址(逻辑地址)转为FLASH相应的物理地址。在读数据时,根据逻辑地址找到对应的物理地址;在写数据时,根据Wear-Leveling算法得到物理地址后,更新逻辑地址与物理地址的对应关系。 3.2.3 Wear-Leveling 由于FLASH块的擦写有次数限制,所以不能对同一个块进行频繁的写或擦除操作,也就是尽量让每一个块有均等的擦写机会。Wear-Leveling算法有两个层次: 1. 新的数据写到最少被使用的空闲块。 2. 长期不变的数据被拷贝到另外的块中,它原先占用的块被频繁更新的数据使用。 1 Samsung Electronics Datasheet. Samsung—K9F5608(16)q(u)0b
|