这个基本上就没改什么,请看:
复制代码- ;========================================================================
- ;date:20113.31 by:kissyyg filename:head.s
- ;function:init the sdram and cpy code from steppingstone to sdram
- ;========================================================================
- mem_ctr_base equ 0x48000000
- sdram_base equ 0x30000000
-
- import main
- code32
- area init,code,readonly
- entry
-
- bl disable_watch_dog
- bl memsetup
- bl copy_steppingstone_to_sdram
- ldr pc, =on_sdram
- on_sdram
- ldr sp, =0x34000000
- bl main
- halt_loop
-
- b halt_loop
-
- disable_watch_dog
- ldr r1, =0x53000000
- mov r2, #0x0
- str r2, [r1]
- mov pc, lr
- copy_steppingstone_to_sdram
- mov r1, #0
- ldr r2, =sdram_base
- mov r3, #4*4096
-
- loop_copy
- ldr r4, [r1],#4
- str r4, [r2],#4
- cmp r1, r3
- bne loop_copy
- mov pc,lr
-
-
- memsetup
- mov r1, #mem_ctr_base
- adrl r2, mem_cfg_val
- add r3, r1,#52
-
- loop_mem
- ldr r4, [r2],#4
- str r4, [r1],#4
- cmp r1, r3
- bne loop_mem
- mov pc, lr
- mem_cfg_val
- DCD 0x22011110
- DCD 0x00000700
- DCD 0x00000700
- DCD 0x00000700
- DCD 0x00000700
- DCD 0x00000700
- DCD 0x00000700
- DCD 0x00018005
- DCD 0x00018005
- DCD 0x008c07a3
- DCD 0x000000b1
- DCD 0x00000030
- DCD 0x00000030
-
- end
|
在这里小弟有个不明白的问题:
书上说在 bl on_sdram这里就自动跳转到了sdram中去执行了,原因是连接地址为0x30000000,所以这条指令的地址就是0x300000010,那么为什么链接地址是0x300000000,他还可以在sram中执行呢,期待答案啊,我的环境是ads,不是arm-linux-gcc啊,求解
[ 此帖被kisssummer在2011-03-26 16:27重新编辑 ]