打印

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

[复制链接]
2515|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
playlinus|  楼主 | 2008-11-11 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做了一个简单的ADS工程,程序下载到NOR固化,底层的搬运代码如下.
    ldr    r0, =|Image$$RO$$Base| ;
    ldr    r1, =|Image$$RO$$Limit| ; Get pointer to ROM data
    ldr    r2, =|Image$$RW$$Base|  ; and RAM copy
    ldr    r3, =|Image$$ZI$$Base|  
    
    ;Zero init base => top of initialised data
    SUB r1,r1,r0
    SUB r3,r3,r2
    ADD r1,r1,r3
0
    LDR r3,[r0],#4
    STR r3,[r2],#4
    SUBS r1,r1,#4
    BNE %B0

以上代码是把RORWI段全部搬运或init到了SDRAM中,在我的印象中要跳往SDRAM运行程序,需要执行一条LDR PC,0x30000000的指令,然后再调用BL main跳转到主函数运行.
而现在我加了LDR PC,0x30000000的指令后make总提示这样的error: A1114E: Expected register relative expression ,双击error就是指向LDR PC,0x30000000这条指令处.
去掉这条指令编译连接通过,固化程序到NOR后运行正常,要比只COPY RW/ZI段到SDRAM快很多,说明程序正常.

现在的疑问是:为什么不需要LDR PC,0x30000000这条指令呢,BL main就可以直接跳转到SDRAM中执行了吗,请有此方面经验的高人赐教,多谢了...

相关下载

相关帖子

沙发
阿南| | 2008-11-13 01:37 | 只看该作者

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

楼主可以做一些有助于理解的试验

使用特权

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

本版积分规则

102

主题

518

帖子

2

粉丝