Nandflash 驱动移植 (三)
在飞凌提供的BSP中,Nandflash采用的是FMD+PDD的结构,PDD主要是应对上层的接口,这里我们不需要修改,直接修改FMD就好。(至于在网上看到很多人说这个结构理论上不支持MLC的Nandflash,这个暂且不说).
FMD部分的驱动源码在 C:\WINCE600\PLATFORM\SMDK6410\src\common\nandflash\FMD\ 这个目录下边。
FMD的目录结构:
nand.s
cfnand.h
fmd_LB.h(实际并没用到)
fmd_SB.h(实际并没用到)
nand.h
fmd.cpp
sources
makefile
先看sources文件:
/* 16Gbit DDP NAND Flash */ { 0xEC, 0xD5, 4096, 128, 8, 2,160, 0, 2, 8, BW_X08, 50, 350, 2000, 50}这里就是使用的2G(16/8 bit=2byte) Nandflash K9GAG08U0D的一些参数配置,其中 0xEC, 0xD5表示的是Nandflash的ID号,总共有4096个block,每个block有128个page,每个page有8个sector
要支持4G(K9LBG08U0D) 的话,则加上下面的配置:
晕菜了吧,飞凌的这个2G 256M的BSP的Nandflash源码既然是这个样子,为什么还在那里号称8bit的ECC,还说开放源码。
靠别人都行的话,母猪都会上树啦!咱还是自己搞吧!
在上面UINT32 NFMLCBITPT; //0x40 的后面添加以下代码:
NFCONT[11]这个才是8bitStop,但为什么源码中要定义NFCONT[12]为NF_ECC_8BIT_STOP,这个容易让人产生误解。咱还是改一下吧!
#define NF_ECC_8BIT_STOP() {g_pNFConReg->NFCONT |= (1<<11);}
相关引用的暂时到这里,下一篇将会开始源码分析