加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:51:49 所属栏目:百科 来源:网络整理
导读:之前我写过一篇文章来介绍硬改tp-link路由器,就是更换它的flash。那个时候就发现路由器这种设备硬盘(flash)的容量比内存容量小得多,flash是16MB,内存是64MB。今天买了本嵌入式的教程才知道,存储器的分类是这样的。flash不是硬盘,但可以当个硬盘用。这和

之前我写过一篇文章来介绍硬改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,nand.o)复制到片内内存。sdram的起始地址是0x3000000,而4096之后的内容(main.o)复制到sdram里面去,然后就执行sdram里的main程序就可以了。



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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读