本帖最后由 eastbest 于 2009-10-10 22:01 编辑
用汇编写了一个小程序,测试STM32从SRAM启动,似乎启动不了,过程是这样的:
1、从flash启动,程序把flash中的一段代码拷贝到SRAM中(该代码是点亮LED的)
2、跳线设置为从SRAM启动,
3、按复位键,这时程序应该在SRAM中执行(LED被点亮),但结果LED灯不亮。
可是从flash中直接跳转到SRAM中执行(即把下面程序的中的注释语句激活),LED灯会亮。
也用Jlink仔细查看过,SRAM中的数据是正确的,复位也不会导致SRAM中的数据发生变化。
程序有什么问题吗?请高手指点一下!
;================================================================
... 地址调整,把SRAM_begin后的代码、文字池拷贝到0x2000 0000开始的SRAM中,代码略...
; LDR r0,=0x20000009
; MOV PC,r0
; xxx
; B xxx
SRAM_begin
DCD 0x20000200 ;栈顶
DCD 0x20000009 ;复位向量
LDR r0,=0x40021018
LDR r1,=0x00000080 ;enable GPIO时钟
STR r1,[r0]
LDR r4,=0x40011c00
LDR r5,=0x24444444 ;输出设置为推挽
STR r5,[r4] ;IO的复位值为0,LED亮
;================================================================== |