mpc5121手记--nand flash控制器

    mpc5121的nand flash控制器可以支持512、2k、4k page大小的nandflash。LPC,nand/PATA共用EMB接口,复用优先的仲裁由EMB仲裁器完成。获得总线仲裁时,他与PATA共享EMB_AD[0..31],PATA占用EMB_AF[0..15]与EMB_AX[2..0],nand占用EMB_AD[16..31]。
   mpc5121内部有一个4.5K大小的RAM,作为对nand flash进行操作的时候的数据输入/输出接口。该RAM完全模拟一块nand flash的page结构,共分为8个512 Byte 的main section和8个26 byte的 spare section。page大小为2K/4K的nand flash,也是根据这样分区的,2K page的nand flash的main区会被分成4个section,每section 512B,同时spare区也会相应地分成4个section,每个section16B。
   打开ECC的情况下,写入操作的时候,现将目标数据写入该RAM。然后设定RBA设定目标section,最后设定FDI位,硬件会计算该section的ECC code,然后连同目标数据一起写入flash page。比如对于2K page的nand,如果RBA=0,则会把RAM中section0/1/2/3写入nand。虽然是一次完成,但是ECC是计算了四次的,每512B一次,也就是,先算section0的ECC,section0写入page main区的头512B,ECC则写入spare区的头16B,再算section1的ECC,section1写入page main区的第二个512B,ECC则写入spare区的第二个16B,如此类推。当然你也可以设RBA=4,这时将会把RAM中section4/5/6/7写入nand。RBA不能等于1/2/3/5/6/7。
   读与写类似,也是先设定RBA,设定FDO,数据会从nand flash读出,放到RBA指定的section中。也是先读第一个512B和第一个16B,再第二个512B和第二个16B。用户这时可以从RAM的spare section中读出写入时产生的ECC。写入是产生的ECC只能这样读,因为写入是产生的ECC是不会放入到spare section中的,他们直接被写入flash中。


[本日志由 admin 于 2009-02-17 01:57 AM 编辑]
文章来自: 本站原创
引用通告地址: http://www.decell.org/trackback.asp?tbID=121
Tags:
评论: 1 | 引用: 0 | 查看次数: 1377
  • 1
梁某人 [2010-02-14 11:03 AM]
一年后再次进入你的空间,看你文章,发现时间流去,沉积了成果。
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码:
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭