启动文件一开始就是这些设置栈和堆的设置
Stack_Size EQU 0x00000400
AREA STACK,NOINIT,READWRITE,ALIGN=3
Stack_Mem SPACE Stack_Size
_initial_sp
Heap_Size EQU 0x000000200
AREA HEAP,NOINIT,READWRITE,ALIGN=3
_heap_base
Heap_Mem SPACE Heap_Size
_heap_limit
这个是启动程序中设置栈和堆的代码,但是我刚刚写了一个点亮led灯的代码段,只有将起始的地址放入到Reset_handler才有用
_start PROC
LDR R0,=RCCDE
MOV R1,#(1<<5);
STR R1,[R0]
LDR R0,=GPD
MOV R1,#(1<<8)
STR R1,[R0]
LDR R0,=GPD
MOV R1,#0
STR R1,[R0]
ENDP
这个是我写的
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
LDR R0,=_start 只有放在这个里面才能起作用
BX R0
IMPORT main
LDR R0,=main
BX R0
ENDP
所以我就有点怀疑,是不是上面的设置堆栈的代码也没有执行,或者程序是不是只是从Reset_handler开始运行,刚开始执行的代码难道不是设置栈堆处开始的吗?
一周热门 更多>