微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于VxWorks的NAND FLASH驱动程序设计

基于VxWorks的NAND FLASH驱动程序设计

时间:07-31 来源:现代电子技术 点击:
0 引 言

目前,随着电子技术的不断发展,计算机技术也得到飞速的发展,产生了很多新技术。但就计算机的基本结构来说,还是基本采用了冯·诺依曼结构。然而冯·诺依曼结构的一个中心点就是存储一控制,所以存储器在计算机系统中的作用是非常重要的。

嵌入式计算机作为计算机中的一个类别,对执行速度和系统可靠性都有较强的要求,这也决定了嵌入式系统不仅要有实时性很强的操作系统,同时也需要一种安全、快速的存储设备。同时,嵌入式系统经常会涉及到海量数据的存储,这就要求存储设备必须具有可靠性高,功耗低,容量大,掉电数据不丢失等特点,而NAND FLASH芯片正好具有这些优点。

VxWorks是嵌入式领域内公认的最有特色的高性能实时操作系统之一。它以其良好的可靠性和卓越的实时性,被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。

目前,在VxWorks实现上,涉及文件系统的文章不少,但一般都是针对容量较小,操作相对简单的NORFLASH实现的。本文讨论了如何在以AMCC公司的Power PC芯片PPC440epx为核心的嵌入式平台上,利用三星公司的大容量NAND FLASH实现文件系统的具体办法。

1 三星NAND FLASH芯片K9F2G08QOM

K9F2G08QOM芯片的容量为256 M×8 b=2 Gb的数据区,再加上64 Mb的备用区。一块这种芯片被分为2 048个块,每个块又分为64页,每页由2 KB的数据区加上64 B的备用区组成。如图1所示,列地址为12 b(A11~A0)。当A12为0时,A10~A0确定对每页中2 KP;数据的访问;当A12为1时,访问的是64 B的备用区。由于NANDFLASH芯片在出厂时就可能出现坏块(块中的某个或多个bit不能有效的进行读写),为了将其标注出来,三星公司保证每个坏块的第一页和第二页备用区第一个byte的数据没有被初始化为0xFF。设计人员要确保在对该芯片进行擦除之前,先将这个信息保留起来(建一个坏块表)。行地址为17 b(A28~A12)。它确定了对2 048块×64页=128 K个页中的某一页进行访问。为了简化NAND FLASH芯片的管脚,其地址和数据信息共享8个I/O管脚,因此,其29 B的地址信息被设计为5个周期进行传输。具体操作如表1所示。

注:起始地址是列地址;L表示必须置为低电平

对NAND FLASH的操作流程比较简单,即在第一个周期里送操作相关的命令字,然后送地址,以及相应的数据,最后送确认字。需要说明的是,由于地址、命令和数据都共用8个I/O管脚来进行传输,因此在硬件上必须要有专用的管脚来区分传输类型(在传输命令的时候,命令锁存使能信号CLE有效;在传输地址的时候,地址锁存使能信号ALE有效)。具体的命令字、时序和操作流程在K9F2G08Q0M的数据手册上有较详细的描述,在此不一一详述。

2 PPC440epx的NAND FLASH接口

AMCC公司的PPC440epx芯片是一款性能指标较高的嵌入式CPU芯片,其主频可以达到667 MHz,拥有DDR2接口,可支持千兆以太网,USB 2.0接口,支持浮点运算,同时还支持NAND FLASH芯片。

PPC440epx使用一个NAND FLASH Controller作为外部NAND FLASH与其外部总线通信的接口电路,该控制器最多可以支持4个NAND FLASH芯片,每个芯片的容量可以为4~256 MB,每页的大小可以为512 B+16 B或者2 KB+64 B。NDFC(NANDFLASH Controller)的存在使得对NAND FLASH的操作变的非常简单。根据前面对K9F2G08Q0M的介绍可知,对NAND FLASH的操作需要在硬件上产生ALE,CLE信号来区分传输类型。NDFC给程序设计人员提供两种实现时序的方法:硬件实现,软件实现。如果是前者, NDFC提供了几个寄存器:命令寄存器、地址寄存器、数据寄存器、配置寄存器和状态寄存器。通过对这几个寄存器执行相应的读/写操作就可以产生相应的时序。例如,如果需要对NAND FLASH写命令字80H,则只需将80H写人命令寄存器即可。NDFC自动将80H送到I/O7~I/O0上,同时置CLE为有效状态。而软件实现方法是根据K9F2G08Q0M的时序要求,通过对硬件控制寄存器中相应的bit写1或者0,使得对应的控制信号为高电平或者低电平。设计人员可以根据自己的情况,选择实现方法。这里推荐采用硬件实现的方法。不过,在有问题时,可采用软件实现的方法来进行调试。

3 TrueFFS简介

TureFFS(Ture Flash File System)是M-Systems公司为VxWorks操作系统定制的实现FLASH块设备的接口。通过使用TFFS,应用程序对FLASH的读写就像对拥有MS-DOS文件系统的磁盘设备操作一样。对于上层设计人员,TFFS屏蔽了底层多种多样FLASH设备的具体细节。同时,由于FLASH存储芯片自身的一些特性(如擦除、编程次数有限并且操作时间较长;容易进入过度编程状态等),TFFS采用虚拟块、损耗均衡、碎片回收、错误恢复等机制来提高 FLASH的使用寿命,确保数据完整,优化性能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top