1.启动文件startup_stm32f429xx.s
启动文件主要工作:
1、初始化堆栈指针 SP=_initial_sp
2、初始化 PC指针=Reset_Handler
3、初始化中断向量表
4、配置系统时钟
5、调用 C库函数_main 初始化用户堆栈,从而最终调用main 函数去C的世界
1.1.Stack-栈
Stack_Size EQU 0x400;
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
开辟栈的大小为0X00000400(1KB),名字为STACK,8(2^3)字节对齐。栈的作用是用于局部变量,函数调用,函数形参等的开销。标号__initial_sp紧挨着SPACE语句放置,表示栈的结束地址,即栈顶地址,栈是由高向低生长的。
1.2.Heap-堆
Heap_Size EQU 0x200;
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
开辟堆的大小为0X00000200(512字节),名字为HEAP,NOINIT,8(2^3)字节对齐。__heap_base表示对的起始地址,__heap_limit表示堆的结束地址。堆是由低向高生长的,跟栈的生长方向相反。堆主要用来动态内存的分配,malloc()函数申请的内存就在堆上面。
1.3.向量表
; Vector Table Mapped to Address 0 at Reset
AREA RESET,<