• 1
预览模式: 普通 | 列表

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中。

查看更多...

分类:嵌入式技术 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 1380

无题

昨天跟一个友人聊天,他问起我一个问题:你自学的时候,以什么来衡量你已经掌握了这种知识呢?
这个问题真的是一个值得认真思考的问题。

分类:生活日记 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 834

[X-node] uC/OS-II v2.70

uC/OS-II v2.70 成功在X-node上跑起来了。我没有使用uC/OS官方的IAR或GNU编译器,而是使用TI的CCE v3.2,所以又修改了一点源码,主要是汇编的格式和伪指令。有用CCE而又懒得去研究编译器语法的朋友可以向我要源码。版权归uC/OS-II的原作者所有。

查看更多...

分类:嵌入式技术 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 991
  • 1