打印

刚开始学2440,有三个问题想请教一下

[复制链接]
2210|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21icsanta|  楼主 | 2010-8-8 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、OM[1:0]选择00之后是从nandflash启动,内部4Kram映射到bank0上,是否意味则原来接在bank0上的norflash就不能再使用了?

2、我看开发板上提供的程序,在main函数开头都是来了句memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,0x1000),手册上不是说上电之后如果OM[1:0]为00的话会自动从nandflash自动加载4k内容到内部ram吗,那干嘛现在还要靠程序进行拷贝呢?另外既然程序都已经运行到main函数了,也就是说已经完成了初始化了,在拷贝前4k内容到内部ram还有什么意义呢?

3、如果OM[1:0]为10则是从bank0的norflash启动,按理说刚开始运行时,cpu根本不知道硬件上接的norflash的具体参数,比如说位宽,大小,访问速度等,那cpu怎么能正常访问norfalsh呢?

相关帖子

沙发
reaperzero| | 2010-8-8 16:37 | 只看该作者
我才刚学两天,,连你上面的看不懂,,帮顶下,,

使用特权

评论回复
板凳
ADaiPlay| | 2010-8-8 21:10 | 只看该作者
初学者,先给你增加点人气哈:
1。在芯片手册上看,用NANDFLASH了,BANK0上的NOR就不能用了,不过可以将NOR接到BANK1上去。
2。一般的程序都大于4K的,MCU只拷贝前4K关键启动代码完成硬件初始化及部分代码搬运,且前4K的代码基地址是0x0的,由:memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,0x1000)可以看出编译设置的程序在以0x30000_0000起始地址的SRAM执行,且大小大于4K,故需要拷贝
3。NOR接到BANK0上其参数是由硬件确定的,也就是外部引脚的状态提前确定,MCU上电后先检测之再根据具体参数执行程序的。(可以参考数据手册)

个人理解,仅供参考:lol

使用特权

评论回复
地板
ADaiPlay| | 2010-8-8 21:11 | 只看该作者
“初学者,先给你增加点人气哈:”
有点歧义啊,意思是偶也是初学者:L

使用特权

评论回复
5
myitlover| | 2010-8-8 21:24 | 只看该作者
1、OM[1:0]选择00之后是从nandflash启动,内部4Kram映射到bank0上,是否意味则原来接在bank0上的norflash就不能再使用了?

有人做了实验,这个时候bank0上的norflash的访问地址是0x0400_0000了
你可以试着访问一下看,这个是选择nand启动后硬件自动重定向的

2、我看开发板上提供的程序,在main函数开头都是来了句memcpy((unsigned char *)0x0,(unsigned char *)0x30000000,0x1000),手册上不是说上电之后如果OM[1:0]为00的话会自动从nandflash自动加载4k内容到内部ram吗,那干嘛现在还要靠程序进行拷贝呢?另外既然程序都已经运行到main函数了,也就是说已经完成了初始化了,在拷贝前4k内容到内部ram还有什么意义呢?

因为你的2440启动代码里初始化了中断向量表,这个时候的中断向量表应该在sdram 的0地址的地方,即是0x3000_0000处,做这个拷贝只是为了把中断向量表拷贝到0地址,这样你的程序能够响应中断。当然你做个简单的点led的程序的话不需要这个操作。一般程序里可以打开MMU,这样会把0x3000_0000映射到0地址,这样也就可以不用拷贝了


3、如果OM[1:0]为10则是从bank0的norflash启动,按理说刚开始运行时,cpu根本不知道硬件上接的norflash的具体参数,比如说位宽,大小,访问速度等,那cpu怎么能正常访问norfalsh呢?
OM[1:0]为10时,nor的32位宽,01时是16位宽,这个数据手册里有说明的
地址就是0地址了,nor的特性决定了它可以和读SDRAM一样的读,不需要做什么配置
写和擦除倒是要配置一下的

以上是个人的一点愚见,说的不正确的地方请各位指正,谢谢

使用特权

评论回复
6
zgt0| | 2010-8-9 15:14 | 只看该作者
楼上的正解。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

74

帖子

0

粉丝