k9f1g08 2K page nand flash驱动调试——转载自:作者shuiii
来源:互联网 发布:淘宝发布宝贝显示下架 编辑:程序博客网 时间:2024/05/18 03:57
k9f1208
secotr size = 512byte,block_pre_sector =32sector, block size = 512*32 =16K, device=4096block=64M
k9f1g08
secotr size = 2k, block_pre_sector =64sector, block size = 2*64 =128K, device=1024block=128M
以上是我以前对NANDFLASH的结构认识,其中忽略了非常重要的一块,就是NAND用来保存其它信息的一块区域,这些信息包括块好坏的标记,块的逻辑地址,还有页内数据的ECC校验和等。。。。
这部分数据通过结构SectorInfo保存
typedef struct _SectorInfo
{
DWORD dwReserved1; // Reserved - used by FAL
BYTE bOEMReserved; // For use by OEM
BYTE bBadBlock; // Indicates if block is BAD
WORD wReserved2; // Reserved - used by FAL
}SectorInfo, *PSectorInfo;
在读写NAND时通过
BOOL FMD_ReadSector (SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors);
BOOL FMD_WriteSector(SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors);
pSectorInfoBuff参数读取相应sector状态,如果pSectorInfoBuff参数为NULL则读写sector数据。pSectorBuff为NULL则读写sector状态。
地址循环的差别
读数据时。列地址的低16位为0,页内偏移量为0,
NF_ADDR(0); // Column (A[7:0]) = 0
NF_ADDR(0); // A[11:8]
NF_ADDR((blockPage)&0xff); // A[19:12]
NF_ADDR((blockPage>>8)&0xff); // A[27:20]
读状态时,列地址低16位为2048,页内偏移量为2048
NF_ADDR((2048+0)&0xff); // 2060 = 0x080c
NF_ADDR(((2048+0)>>8)&0xff);
NF_ADDR((blockPage)&0xff); // A[19:12]
NF_ADDR((blockPage>>8)&0xff); // A[27:20]
由于NAND设备存储数据有一定错误率,需要ECC校验保证数据的正确性。传统的文件系统一般直接和硬件驱动程序接口,但对于NAND设备,还需要增加一层FTL(flash translation layer)来完成像块逻辑地址到物理地址转换,坏块标注,ECC校验这样的工作。
TARGETLIBS= $(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/FAL.LIB /
NAND驱动 FMD_Init,初始化完全后,就会通过FMD_GetInfo来获得NAND的一些基本信息。
之后 FAL会调用FMD_ReadSector建立物理页到逻辑页的映射表。最后根据注册表的配置,还会决定是否重新格式化NAND,是否自动MOUNT挂载NAND的分区到存储管理器。
[HKEY_LOCAL_MACHINE/System/StorageManager/Profiles/FlashDrv]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
- k9f1g08 2K page nand flash驱动调试——转载自:作者shuiii
- NandFlash驱动调试笔记(K9F1G08
- 【简介】如何编写linux下nand flash驱动-2【转载】
- 【简介】如何编写linux下nand flash驱动-2【转载】
- 关于K9F1208和K9f1G08的nand flash(1)
- nand flash坏块——转载
- 基于AM335X NAND FLASH 驱动调试总结
- 2K Page NAND ECC说明
- 关于wince4.2 2k 页面 nand flash 驱动的问题
- NAND FLASH ECC校验原理与实现——转载
- S5PV210(TQ210)学习笔记——Nand flash驱动编写
- 自己学驱动16——NAND Flash
- 【简介】如何编写linux下nand flash驱动-1【转载】
- 【简介】如何编写linux下nand flash驱动-1【转载】
- 【详解】如何编写Linux下Nand Flash驱动--------转载
- NAND FLASH学习笔记之MTD下nand flash驱动(七)---我的调试
- NAND FLASH学习笔记之MTD下nand flash驱动(七)---我的调试
- ARM9 mini2451裸机学习——NAND flash驱动学习 2
- lex yacc系列(一)初步识lex
- 使用 Rational AppScan 保证 Web 应用的安全性
- 自动高度的TextBox
- Cookies中中文乱码问题解决
- 报表与列的对应关系
- k9f1g08 2K page nand flash驱动调试——转载自:作者shuiii
- window_open详解
- windows net basic command
- 关闭窗口和隐藏窗口
- 做事的态度与工作态度
- Java编程:如何用JAVA输出一个UTF8编码的文本文件
- 图片切换
- 菜鸟实战
- combobox初始值的问题