ARM2440启动代码mov和adr问题想到的编译问题

xiazaifengzi 2014-03-25 12:15:07
一般用adr是使用相对地址,这样即使代码移动到另一地方在编译时,运行也不会出现错误。
如果用mov就会编译成一个具体的地址会出错。
我想问的是,假如nand flash启动,那么代码在nand flash上就编译好了吗?然后拷贝到SDRAM上运行吗?拷贝的是编译好的代码吗
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
inurlcn 2014-04-01
  • 打赏
  • 举报
回复
硬件上面只能从NOR \NAND\ROM 上面启动
猪头三小队长 2014-03-27
  • 打赏
  • 举报
回复
U-boot已经是bootloader之后的事了。如果你不用特别的芯片,你也做不到从nand启动,只能从nor,因为nand不能做直接地址读写,而nor可以。 一个问题需要你考虑,如果不从非易失性存储启动,而从易失性存储启动,那么ram中的代码是哪里来的?
猪头三小队长 2014-03-26
  • 打赏
  • 举报
回复
在代码写到nand之前就已经编译(并且链接)好了,然后需要由加载器拷贝到相应的RAM中
xiazaifengzi 2014-03-26
  • 打赏
  • 举报
回复
经过把U-BOOT进行make后,从所生成的两个.map文件来看(~/u-boot.map和 Systen.map),所有的地址标号都是从0x33f80000开始的,就是从SDRAM的高地址开始,等于TEXT_BASE的值,也就是说,链接 器是从0x33F80000开始来链接所编译生成的目标文件的,而不是从0地址开始,经过查看,start_armboot=0x33f80d9c,就是 说void start_armboot (void)函数的入口地址在SDRAM中(链接器决定),所以执行。“ 但是我想问的是我们在make后,既然所有地址的标号都是从0x33f80000开始的,那我们应该是make后才将uboot.bin文件下到ARM板,那应该一开始也是0x33f80000呀!那为什么一开始从nand flash运行呢。

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧