一、编译过程及程序组成
1.1STM32编译过程
-
armar打包 将.c文件生成标准库,当不想把项目源码授予他人时,可以通过这个文件来把文件打包成lib文件
-
armcc编译.c/.cpp源文件,生成目标文件,armasm与汇编相关
-
使用armlink链接对象文件,根据程序的调用把各个.o文件的内容链接起来,最后生成程序的axf映像文件,并附带程序各个域大小的说明,包括code、RO-data、RW-data、及ZI-data的大小
-
使用fromelf生成下载格式文件,他根据axf映像文件转换成hex文件,并列出编译过程中出现的错误(Error)和警告(Warnning)数量
1.2程序的组成、存储与运行
1.2.1组成
-
对应C程序,代码段还包括.rodata 常量区、char* const这些只读 不可更改的内容
-
数据段包括(.bss)或 (.data) 全局静态内存分配区
-
.bss 主要是未初始化或初始化为0的全局变量,不占可执行空间,系统内核初始化
-
.data主要是已初始化的全局变量,占可执行空间,由程序初始化
-
-
heap——地址向上增长,手动动态分配,空间大,运行效率