根据韦东山修改的mini2440 nand flash裸机程序
来源:互联网 发布:js获取a标记的href 编辑:程序博客网 时间:2024/04/30 18:52
article from: http://blog.sina.com.cn/s/blog_b90c3cdf0101jn5j.html
==========================================================
说明
知识点梳理
nand flash的页读取函数原型是void nf_readpage(unsigned int block,unsigned int page,unsigned char *dstaddr),它的功能是从nand flash的第block块的第page页读取1页(对于K9F2G来说,1页等于2KB)的内容,存放到指针dstaddr所指的地址处。有的人可能就会说了,既然nf_readpage可以读取1页的数据到指定的地址处,而sdram的地址是0x30000000,那直接可以使用它将nand flash的代码复制到sdram去啊,答案当然是可以啊!但是有个前提,复制到sdram的内容必须在2KB以内,一旦超过了2KB,那就需要借用RdNF2SDRAM()函数了,相信这样解释就能明白这两个函数的区别于联系了。
再说说绝对地址与相对地址,首先知道k9f2g有2048个块,每个块有64个页,每页有2K字节。我们平常所说的第几块第几页就是相对地址,比如第2块第3页是相对地址。而绝对地址=块号*64+页号,例如前边的第2块第3页换成绝对地址就是131(131=2*64+3)。
下面解释一下RdNF2SDRAM()函数:
113行:从117行可以看出,这里的i指的是相对地址
114行:在nand flash内的起始地址,这里的4096表示的是字节,k9f2g内存大小是256Mbyte,这里之所以令start_addr=4096,是因为咱们在nand.lds文件中,将main.c文件的地址定义在了4096处。如下图:
如果AT(4096)改为AT(5120),那么这里start_addr就等于5120。还要注意这里4096byte也就是4KB,为什么把他定义在nand flash的4KB之后呢,因为硬件电路会自动将nand flash里的前4KB的内容搬移到stepping stone中去执行,如果定义在3KB之后,main.c函数直接就执行了,哪里还用复制。
地址线
[A28:A18]
[A17:A12]
[A11:A0]
地址表示
块地址
页地址
页内偏移地址
不论是在nand flash页读取函数还是也写入函数内,都需要向地址寄存器送地址,如下图:
为什么是这样呢?由于页读取和写入函数均是以页为单位进行的,所以每次都要在页的第0个字节开始,也就是说页内偏移地址为0,所以对地址线的低12位设为0即可,如第93行,94行。
第95行,此时处于第3个地址周期因此需要发送blockpage(此时blockpage是页的绝对地址)的A12-A19位,因此,将blockpage与0xff相与即可。一定要注意页的绝对地址是A28-A12共同表示的,与A11-A0无关。
第96行,此时处于第3个地址周期因此需要发送blockpage(此时blockpage是页的绝对地址)的A20-A27位,因此,将blockpage右移8位,与0xff相与即可。
第97行,此时处于第3个地址周期因此需要发送blockpage(此时blockpage是页的绝对地址)的A28位,从图1可以看到,此时虽然是发送8位,但是只有第0位是有效的,其他位无效。因此,将blockpage右移16位,然后再与0x1相与,只保留第0位。
mini2440开发板的时钟
编译生成bin文件,下载运行
代码源文件
百度文库pdf地址:http://wenku.baidu.com/view/85e30572168884868662d603
pdf文件下载地址:http://download.csdn.net/detail/mybelief321/5234586
源代码下载地址:http://download.csdn.net/detail/mybelief321/5234602
- 根据韦东山修改的mini2440 nand flash裸机程序
- 用mini2440开发板学习韦东山毕业班移植最新的u-boot支持nand flash
- nand flash裸机程序
- 关于韦东山书上的裸机程序在mini2440上的运行
- 关于韦东山书上的裸机程序在mini2440上的运行
- 关于韦东山书上的裸机程序在mini2440上的运行 .
- 关于韦东山书上的裸机程序在mini2440上的运行
- 关于韦东山书上的裸机程序在mini2440上的运行
- s3c2440的Nand flash裸机程序
- TX2440裸机程序-nand flash
- 【OK6410裸机程序】NAND Flash
- 在micro2440中写NAND FLASH 裸机程序的理解
- 韦东山stdio裸机程序分析
- u-boot 裸机程序至 mini2440 开发板 NAND
- OK6410裸机简单的NAND FLASH驱动
- mini2440 NAND Flash 上的分区
- mini2440烧写到nand flash 的方法
- 使用u-boot的USB下载功能烧写程序到Nand Flash ——韦东山嵌入式Linux学习笔记06
- Android常用权限permission列表摘录
- Android中内容观察者的使用---- ContentObserver类详解
- 【夯实基础】JAVA集合框架总结(list和set的区别等等)
- 如何解决 “fatal error C1083: ” 无法打开包括文件
- Android引入外部自定义特殊字体的方法
- 根据韦东山修改的mini2440 nand flash裸机程序
- 图书盘点机,图书条码数据采集器,高效图书仓储管理条码解决方案
- Ubuntu 10怎样在VMware中按装Vmware tool及如何全屏
- Android系统中传感器相关的简介
- android批量插入数据(使用事务)
- Eclipse手动集成svn插件以及svn403错误解决办法
- android新手上路(一)---字符串为空的检测
- 记录自己常写的一些sql语句
- 常写的一些sql语句