开发环境
-
开发环境
宿主机: Windows7 64bits 系统
开发板: 安米MDK972
软件环境: RealEvo-IDE3.0
NAND Flash: S34ML02G100TF100
-
S34ML02G100TF100芯片参数
-
Density:2 Gbit
-
Input / Output Bus Width: 8-bits
-
Page Size:2112 (2048 + 64) bytes; 64 bytes is spare area
-
Block Size: 64 Pages;128k + 4k bytes
-
Plane Size: 1024 Blocks per Plane;128M + 4M bytes
-
Device Size: 2 Planes per Device or 256 Mbyte
NAND控制器结构
NUC970的NAND控制器包含在FMI中。FMI分为DMA单元和FMI单元。对于NAND,支持单一DMA通道和硬件ECC,如图 2-1所示。
图 2-1 NUC970 NAND控制器
技术实现
-
驱动框架
SylixOS中NAND Flsh的驱动框架如图 3-1所示。NAND通用驱动主要在fs/mtd/nand/nand_base.c中,该文件包含了NAND的通用操作。驱动工程师需要在NAND通用驱动的基础上实现与硬件相关的驱动层的结构体(nand_chip),该结构体包含了对具体硬件相关的控制和操作函数,以及相关硬件参数和配置信息。MTD层与文件系统,SylixOS已经完全实现,不需要驱动工程师实现。
图 3-1 NAND驱动框架
-
框架实现
NAND驱动需要完成NAND控制器、ECC的配置以及NAND的相关操作函数及文件系统挂载,如果使用硬件ECC一般自己定义OOB布局。NUC970驱动实现的操作如程序清单 3-1所示。
程序清单 3-1 NAND