打印

关于2440nandflash启动问题

[复制链接]
1845|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjf0000|  楼主 | 2010-1-8 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
一朝成名| | 2010-1-8 13:52 | 只看该作者
硬件自动完成,不许哟阿软件参与

使用特权

评论回复
板凳
zjf0000|  楼主 | 2010-1-8 18:42 | 只看该作者
感谢ls的回复
代码拷贝是靠硬件自动完成的,但是我sdram没初始化,他的栈空间放哪?
首先google了一下,ads调试2440时,代码下载到sdram中运行,需要加载一个脚本文件来初始化sdram。

现在一个问题还是弄不明白,nand控制器把自身前4k代码考到sram中运行,代码在sram中完成把剩余的代码考到sdram中运行,程序空间和数据空间会不会发生重叠,如何避免重叠,还请高手指教。

使用特权

评论回复
地板
xinzha| | 2010-1-10 16:09 | 只看该作者
这个nandflash就相当于bootrom了,这里面的代码不是runtime的代码,而是进行最基本的初始化的代码,你可以在这4k里面进行sdram或者其他类型memory的初始化,进行系统引导等等工作。
boot代码必须是在非易失性的memory中,而之所以要使用nandflash而不是norflash或者eprom是出于成本的考虑,nand要便宜得多,再加上ic内部一个读nand到sram的逻辑也比nor要便宜。
当没有运行c代码的时候,汇编代码的技巧是可以不要求指定sp的,所以在初始化sdram之前不用考虑栈空间问题。
在arm中,程序空间和数据空间必然是要重叠的,从cpu的角度来看,它们共享同一地址空间。arm9里面所说的哈佛结构也只是指令cache和数据cache是两条分开的总线,而从外部的ahb总线看来,取指和数据操作必然是串行的,不存在不重叠一说。

使用特权

评论回复
5
gooogleman| | 2010-1-11 12:47 | 只看该作者
内部4K是自动的,

外部SDRAM初始化在2440init.s有的。
使用仿真器如果从nand 启动,并且bin文件大于4K,需要用个脚本初始化外部SDRAM的。

使用特权

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

本版积分规则

67

主题

421

帖子

1

粉丝