关于韦东山的sdram程序在友善之臂的mini2440不能执行问题,最开始我的也是不能执行,但是经过测试后来就可以用了。以下是步骤和代码。代码是自己学习后根据理解自己写的,和韦东山老师的一样。
以下是代码
init.S
.equ MEM_CTL_BASE, 0x48000000
.equ SDRAM_BASE, 0x30000000
.text
.global _start
_start:
bl disable_watch_dog
bl mem_ctrl_setup
bl copy_steppingstone_to_sdram
ldr pc, =on_sdram
on_sdram:
ldr sp, =0x34000000
bl main
loop:
b loop
test: @点灯测试
ldr r0, =0x56000010
ldr r1, =0x11400
str r1, [r0]
ldr r0, =0x56000014
mov r1, #0
str r1, [r0]
mov pc, lr
disable_watch_dog:
ldr r0, =0x53000000
mov r1, #0
str r1, [r0]
mov pc, lr
mem_ctrl_setup:
ldr r0, =MEM_CTL_BASE
add r1, r0, #52 @13*4
@ldr r2, =mem_ctrl_register_setup @本以为跟下面的指令是一样的,经过反汇编查看赋值给r2的值不同
@牵扯到了相对地址和绝对地址
adrl r2, mem_ctrl_register_setup
1