码迷,mamicode.com
首页 > 其他好文 > 详细

智能小车36:如何使用存储器NandFlash

时间:2017-10-09 10:02:57      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:路由器   一段   教程   结束   更换   链接文件   初始化   ram   text   

之前我写过一篇文章来介绍硬改tp-link路由器,就是更换它的flash。那个时候就发现路由器这种设备硬盘(flash)的容量比内存容量小得多,flash是16MB,内存是64MB。今天买了本嵌入式的教程才知道,存储器的分类是这样的。flash不是硬盘,但可以当个硬盘用。这和我们的pc机的存储设备不一样,如下图:


技术分享

在这之前的程序,要么是在片内内存(4k)里执行的,要么是从sdram执行的。在nandflash这课里,开始用代码从nand flash里读取数据。


先从代码结构上分析分为哪几步:
技术分享
其中的第1、2、5以前面已经了解过,这节重点学习下nand初始化与nand读取这两步(3、4)如下图:
技术分享

上图里的设置时序的值来源于2440的数据手删,查寄存器NFCONF一节。同理控制也是查寄存器,寄存器名是NFCONT。而写地址里为什么要分5步,为什么要发0命令与30命令,这是从nand flash的数据手册查到的。



下面是链接文件(nand.lds)的分析:
SECTIONS {

firtst    0x00000000 : { head.o init.o nand.o}

second    0x30000000 : AT(4096) { main.o }

}

意思是把可文件(bin)分成两段,而第一段(head.o,init.o,nand.o)应该放到地址0里去,第二段(main.o)应该放到地址0x3000000里去。上面的4096是什么意思?上电时会把nandflash的前4k内容(head.o,init.o,nand.o)复制到片内内存。sdram的起始地址是0x3000000,而4096之后的内容(main.o)复制到sdram里面去,然后就执行sdram里的main程序就可以了。


那些设置的栈地址还没搞明白,后面再看看有没有讲的。我目前的学习经验是,正常的每节课要听3遍以上。第一遍就听下是否是自己需要的,自己知道的知识不需要就删了。第二遍要写一个时刻表,把这节课分成几段,每段是什么内容、开始结束时间是什么都记录好。第三遍再仔细分析功能,打开代码,对照着看。



智能小车36:如何使用存储器NandFlash

标签:路由器   一段   教程   结束   更换   链接文件   初始化   ram   text   

原文地址:http://www.cnblogs.com/chengzhong/p/7639540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!