基于VxWorks的NAND FLASH驱动程序设计
注:起始地址是列地址;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,使得对应的控制信号为高电平或者低电平。设计人员可以根据自己的情况,选择实现方法。这里推荐采用硬件实现的方法。不过,在有问题时,可采用软件实现的方法来进行调试。