嵌入式arm学习总结(八)--存储知识-nandflash-norflash-基于MINI2440平台



MINI2440   ram:4k , rom:没有
程序运行:sdram  ,norflash
程序存放:nandflash,norflash
nandflash和norflash最大区别:norflash可以片上运行程序(并行总线,引脚多),nandflash不能(串行总线,引脚少)
通常linux操作系统存放在nandflash里面

nandflash启动模式:开发板上电时,nandflash控制器把前4K代码复制到2440的内部4ksram中,然后通过硬件机制把2440内部4ksram地址映射到为0的地址开始,程序开始执行这4k代码
这4k代码包含功能:初始化sdram,复制nandflash中的代码到sdram中,然后跳转到sdram中运行

noflash启动模式:norflash也有同样的最前面的4k代码,只不过不需要复制到2440内部4ksram这个过程,因为norflash可以片上执行程序

上面所说的4K代码也就是包含了启动代码 
(其实启动代码可以小于4K或大于4K,但当大于4K时拷贝的4k代码里必须包含功能:初始化sdram,复制nandflash中的代码到sdram中,然后跳转到sdram中运行小于4k时复制的4k程序执行完启动代码后会跳转,剩下的空间不执行)


NANDFLASH的相关操作原理:
NANDFLASH的擦除操作
NANDFLASH坏区检测
ID号检测
坏区标识
任意地址区间的读写 :以前没有任意读写功能,现在升级了,但实际应用中读没问题,写可能会出错
读写校验


NandFlash的ECC校验过程总结:

写页操作: (8位的nandflash)

在写完一页数据后,硬件会自动产生4个字节的主区ECC,硬件自动存放到rNFMECC0里面,再编程保存(写)到Space区,
此时又会产生2个字节的Space区ECC,硬件自动存放在rNFSECC寄存器的低两字节里面 。再编程保存(写)到Space区,


读页操作: (8位的nandflash)
在读完一页数据后,也会产生四个字节的主区ECC,硬件自动存放到rNFMECC0里面, (等待与之前写数据的时候产生的主区ECC进行比较) 再读取之前保存在Space区的4个字节的主区ECC  (mecc0=NF_RDDATA();这时读完操作后又会产生两个字节的Space区的ECC,硬件自动存放在rNFSECC的低两字节里
面),放到寄存器rNFMECCD0和rNFMECCD1的bit0--7和bit16--23,放入后硬件会自动和读页操作时产生的主区ECC(放在NFMECC0寄存器里面)进行比较。再读取保存在Space区的两字节的Space区ECC(secc=NF_RDDATA();低2个字节为spare区的ECC值),放到寄存器rNFSECCD的bit0--7和bit16--23,放入后硬件又会自动和读操作时产生的Space区ECC(放在NFSECC寄存器里面的低两字节)进行比较,最后主区ECC、Space区ECC的比较结果可以通过NFESTAT0寄存器   的低四位来进行查询,判断读、写时分别产生的ECC是否相同,如果相同则说明读取数据成功,否则读取失败。 

16位的nandflash操作过程与8位相似,只不过16位的nandflash主区ECC为8个字节,存放在rNFMECC0和rNFMECC1两个寄存器里面 Space区ECC有4个字节,也是存在rNFSECC寄存器里面(8位nandflash只用到了低两字节)


具体详情可以参考S3C2440的nandflash控制器部分内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值