摘要: Flash型号:NandFlash型号:TC58NVG2S3ETA00pagesize: 2KBoobsize : 64Bblocksize : 128K关于ECC可以参考:http://www.cnblogs.com/pengdonglin137/p/3438001.html,其中介绍了256B纠错1位的ECC生成算法,而这里的512B跟它的方法类似。这里有一个EXCEL表格,它是对下面将要分析的算法的动态演示,只需要更改其中的16*16的表格中的数字,相应的ECC会自动计算出来。我将结合EXCEL和代码一块解释。#include #include #include #include #in 阅读全文
posted @ 2013-12-11 15:07 摩斯电码 阅读(2298) 评论(0) 推荐(0) 编辑
摘要: 相对于操作NandFlash,操作NorFlash相对简单,因为基本不需要考虑坏块,NorFlash也没有OOB区域,也跟ECC没有一毛钱关系。它的读写擦除相对容易。int dealwithnor(){// glob_t mtdbuf; struct mtd_info_user mtd; struct erase_info_user erase; int blocks = 0; int i = 0; //用于控制擦除的块的个数 int k = 0; int written = 0; //已写入的字节数,只初始化一次 unsigned int ... 阅读全文
posted @ 2013-12-11 13:24 摩斯电码 阅读(688) 评论(0) 推荐(1) 编辑
摘要: 以TC58NVG2S3ETA00为例:下面是它的一些物理参数:图一图二图三图四图五图6-0图6-1说明一下,在图6-1中中间的那个布局表可以看做是实际的NandFlash一页数据的布局,其中Data区域用于存放有效的数据,也就是我们可以通过类似read、write、pread、pwrite可以访问的区域,那每页中的64字节的OOB区域是无法通过前面的几个函数访问的,他们会自动跳过OOB区域,访问OOB区域需要借助特殊的命令。简单说明一下:Data A(512B)对应的ECC校验码存放在ECC for Data A(4 byte)中,OOB A (8byte) 对应的ECC校验码存放在紧接着的下 阅读全文
posted @ 2013-12-11 11:23 摩斯电码 阅读(6722) 评论(5) 推荐(2) 编辑