摘要: 底层如何定位到oob的起始位置?中间有个细节,本来很简单清楚的,差点把自己搞晕了,那就是:对于写oob,到底底层是怎么传入参数使得定位到一个页的oob的起始位置的,然后再开始写oob数据的。结果就是,再nand_write_oob_std()中,发命令的时候,送的就是定位的起始地址:chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page);其中,mtd->writesize就是页内地址,此处就是一个页大小,比如2K,页结束地址=oob开始的位置,就可以定位到oob起始处了,后面就可以写oob数据了:chip->wr 阅读全文
posted @ 2013-04-11 18:02 lihaiping 阅读(289) 评论(0) 推荐(0) 编辑
摘要: NAND FLASH ECC校验原理与实现2008-01-25 14:57:27转自:http://blog.csdn.net/nhczp/archive/2007/07/20/1700031.aspxECC简介 由于NANDFlash的工艺不能保证NAND的MemoryArray在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NANDFlash的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提是能比较可靠的进行坏区检测。 如果操作时序和电路稳定性不存在问题的话,NANDFlash出错的时候一般不会造成整个Block或是Pa... 阅读全文
posted @ 2013-04-11 09:45 lihaiping 阅读(1310) 评论(0) 推荐(0) 编辑
摘要: NAND Flash ECC算法长度计算收藏NAND Flash中常用的纠错方式 因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配,这也是不能容忍 的。相对来说SLC中出错概率比较低,所以使用一个纠错能力不强的Hanming码就可以了,在MLC中Hanming码就显得力不从心了,需要纠错能力 更强的RS或者BCH纠错方式了。 BCH擅长处理随机错误,由于NAND Flash自身的特点,出现随机错误的概率更大一些,所以在MLC中目前应用最多的还是BCH方式。 ECC校验都需要在增加一些额外的空间来存放ECC效验码。所以 阅读全文
posted @ 2013-04-11 09:41 lihaiping 阅读(1207) 评论(0) 推荐(0) 编辑
摘要: mov指令的操作数的取值范围到底是多少关于mov指令操作数的取值范围,网上看到一些人说是0x00-0xFF,也有人说是其他的值的,但是经过一番求证,发现这些说法都不对。下面就是来详细解释,mov指令的操作数的取指范围,到底是多少。在看了我说的,关于这行代码:mov r0, 0x33d00000复制代码的源操作数0x33d0000,可能是mov指令所不允许的,这句话后,可能有人会说,我知道,那是因为mov的操作数的值,不允许大于255,至少网上很多人的资料介绍中,都是这么说的。对此,要说的是,你的回答是错误的。关于mov操作数的真正的允许的取值范围,还真的不是那么容易就能搞懂的,下面就来详细解释 阅读全文
posted @ 2013-04-10 14:08 lihaiping 阅读(991) 评论(0) 推荐(0) 编辑
摘要: NandFlash详述2012-03-17 12:49:59|分类:ARM硬件接口|字号订阅转自:http://www.cnblogs.com/sankye/articles/1638852.html想念东北的下雪的冬天1.硬件特性:【Flash的硬件实现机制】Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。这类设备,除了Flash,还有其他比较常见的如硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的 阅读全文
posted @ 2013-04-03 13:54 lihaiping 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 内核的nand flash驱动真可谓用“日新月异”来形容,今儿个刚写完的驱动,等到明天下个新内核放进去,又不好使了。这里讨论下struct nand_ecclayout,即nand 的ecc布局问题,基于2.6.32-rc2.该结构体定义如下:struct nand_ecclayout {uint32_t eccbytes; //表示使用几个ecc字节uint32_t eccpos[128]; //表示ecc占用的位置,因为现在大页面4kbyte也就128个,所以这里写了128, //以后有更大页面的,这里也要改了。uint32_t oobavail; ... 阅读全文
posted @ 2013-04-03 11:36 lihaiping 阅读(651) 评论(0) 推荐(0) 编辑
摘要: U-BOOT源码分析及移植本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分析对象。 一、u-boot工程的总体结构:1、源代码组织 对于ARM而言,主要的目录如下:board 平台依赖 存... 阅读全文
posted @ 2013-03-27 11:18 lihaiping 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 把读卡器SD卡插上电脑,在VMware的菜单栏上依次点VM--》Removable Devices--》USB Devices--》(你的SD卡)如图:此时,可以看到Windows系统右下角弹出安全退出USB设备的消息提示,说明U盘已被虚拟系统识别,在VMware的右下角会看到一个USB的图标通过#fdisk -l命令确认虚拟系统是否识别U盘,如下:要记住你的SD卡在Linux下的的设备名称,然后你就可以用"mount /dev/sdb1 /mnt"命令挂载你的SD卡了。其中这里我挂载的时候出现了一些错误,所以挂了好一会儿才挂上去的,以它老是提示说:hfs: unable 阅读全文
posted @ 2013-03-26 16:57 lihaiping 阅读(5045) 评论(0) 推荐(0) 编辑
摘要: Redhat Linux 硬盘挂载方法!!!编写背景:这周要开始搭建测试管理系统bugzilla,第一步是装操作系统。由于使用的机器配置非常的老,机器有4块硬盘,每个硬盘17G;第一次遇到这样的情况,装上操作系统后,如何挂接硬盘还真是不会,在网上找了不少资料看,对资料进行归类总结,在此收录保存同时供大家需要时查看。Redhat Linux 硬盘挂载方法!!!参考资料网址:http://www.chinalinuxpub.com/read.php?wid=1080硬盘挂载操作工作步骤:1、先查看目前机器上有几块硬盘,查看命令有两种:命令1:# fdisk –l命令2:# dmesg | grep 阅读全文
posted @ 2013-03-26 16:44 lihaiping 阅读(1188) 评论(0) 推荐(0) 编辑
摘要: DECLARE_GLOBAL_DATA_PTR; 这个宏在include/global_data.h中#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")/* 声明一个寄存器变量gd占用r8。这个宏在所有需要引用全局数据指针gd_t *gd的源码中都有声明* 这个声明也避免编译器把r8分配给其他的变量,所以gd就是r8,这个指针变量不占用内存。*//* 定义gd为gd_t类型指针,存储在寄存器r8中 *//* register:表示变量对于执行速度非常重要,因此应该放在机器的寄存器中(寄存 阅读全文
posted @ 2013-03-26 10:20 lihaiping 阅读(897) 评论(0) 推荐(0) 编辑