关于arm的ADS工程中init.s及main函数的一个搬运跳转问题,请赐教

[复制链接]
 楼主| playlinus 发表于 2008-11-11 22:25 | 显示全部楼层 |阅读模式
最近做了一个简单的ADS工程,程序下载到NOR固化,底层的搬运代码如下.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=|Image$$RO$$Base|&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=|Image$$RO$$Limit|&nbsp;;&nbsp;Get&nbsp;pointer&nbsp;to&nbsp;ROM&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;=|Image$$RW$$Base|&nbsp;&nbsp;;&nbsp;and&nbsp;RAM&nbsp;copy<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;=|Image$$ZI$$Base|&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;Zero&nbsp;init&nbsp;base&nbsp;=&gt&nbsp;top&nbsp;of&nbsp;initialised&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;r1,r1,r0<br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;r3,r3,r2<br />&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;r1,r1,r3<br />0<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;r3,[r0],#4<br />&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;r3,[r2],#4<br />&nbsp;&nbsp;&nbsp;&nbsp;SUBS&nbsp;r1,r1,#4<br />&nbsp;&nbsp;&nbsp;&nbsp;BNE&nbsp;%B0<br /><br />以上代码是把RORWI段全部搬运或init到了SDRAM中,在我的印象中要跳往SDRAM运行程序,需要执行一条LDR&nbsp;PC,0x30000000的指令,然后再调用BL&nbsp;main跳转到主函数运行.<br />而现在我加了LDR&nbsp;PC,0x30000000的指令后make总提示这样的error:&nbsp;A1114E:&nbsp;Expected&nbsp;register&nbsp;relative&nbsp;expression&nbsp;,双击error就是指向LDR&nbsp;PC,0x30000000这条指令处.<br />去掉这条指令编译连接通过,固化程序到NOR后运行正常,要比只COPY&nbsp;RW/ZI段到SDRAM快很多,说明程序正常.<br /><br />现在的疑问是:为什么不需要LDR&nbsp;PC,0x30000000这条指令呢,BL&nbsp;main就可以直接跳转到SDRAM中执行了吗,请有此方面经验的高人赐教,多谢了...
阿南 发表于 2008-11-13 01:37 | 显示全部楼层

楼主的程序是放在NOR里启动运行?确定BL main是在SDRAM中

楼主可以做一些有助于理解的试验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

518

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

102

主题

518

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部