以stm32f40xxx系列为例
一、启动文件,startup_stm32f40_41xxx.S
1.定义:启动文件由汇编填写,是系统上电复位后第一个执行的程序。
2.特征
(1)初始化堆栈指针SP=_initial_sp
(2)初始化PC指针=Reset_Handler
(3)初始化中断向量表。
(4)配置系统时钟。
(5)调用c库函数_main初始化用户堆栈,从而最终调用main函数去到c的内容。
二、汇编指令
启动文件使用ARM汇编指令汇总
EQU 给数字常量取一个符号名,相当于c语言define。
AREA 汇编一个新的代码段或数据段。
SPACE 分配内存空间。
PRESERVE8 当前文件堆栈需按照8字节对齐。
EXPORT 声明一个标号具有全局性,可被外部文件使用。
DCD 以字为单位分配内存,要求4字节对齐,并要求初始化这些内存。
PROC 定义子程序,与ENDP成对使用,表示子程序结束。
WEAK 弱定义,如果外部文件声明一个标号,则优先使用外部文件定义的标号,如果外部文件没有定义也不会出错。要注意这个不是ARM指令,是编 译器的。
IMPORT 声明标号来自外部文件,跟c语言EXTERN关键字类似。
B 跳转到一个标志号。
是的是的,不过执行流程都是一样的,所以只讲述过程,不细谈。
... 查看全部