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

之前我写过一篇文章来介绍硬改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遍以上。第一遍就听下是否是自己需要的,自己知道的知识不需要就删了。第二遍要写一个时刻表,把这节课分成几段,每段是什么内容、开始结束时间是什么都记录好。第三遍再仔细分析功能,打开代码,对照着看。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值