用户堆与栈的初始化
ALIGN ;用来指定符号的对齐方式,默认按照4字节对齐
;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
IF :DEF:__MICROLIB ;这里会判断是否定义了__MICROLIB,即表示是否使用MicroLib库,可以看仙女棒中是否勾选
EXPORT __initial_sp ;如果使用MicroLib库,则给__initial_sp、__heap_base、__heap_limit给全局属性,可以让外部文件调用
EXPORT __heap_base
EXPORT __heap_limit
ELSE
;如果没有使用MicroLib库,则使用双段存储器模式,并且声明__user_initial_stackheap全局属性,由用户自行初始化堆栈
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
;以下就是没有使用MicroLib库,由用户自行初始化堆栈的程序
__user_initial_stackheap
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ALIGN
ENDIF
END
|