1:STM32编译过程及程序组成
用户编写的.c 文件为资源文件source code
通过armcc编译成object code目标文件.o
通过armasm编译汇编
目标文件object code有:code data debug
通过armlink 编译成image 可执行镜像文件
image文件有linux环境可烧写的.elf
STlink和SWD 可烧写的.axf
调试信息.map(内存分布也会在里面)
通过fromelf 生成标准的(二进制文件bin) 和 hex(其实是ASCLL)
hex可以转换成bin然后烧写进flash
在线升级模式IAP,只能通过bin文件进行烧写
armar生成库文件
2:程序组成
我们写的程序放在text代码段里面
initialized data 存放已经初始化的数据
uninitalized data 存放未初始化系统默认初始化
接下来是堆栈
在程序运行时,会把RW拷贝到内存中来
3:程序运行
生成反汇编文件text
__main 栈的初始化
_main_stk 初始化栈指针
_main_scatterload 分散加载初始化,拷贝RW到RAM
清除ZI-data数据为0,初始化C运行环境
_main_init 跳转到main
map文件分析
Section Cross References 段参考关联信息告诉.o文件的相互引用
Removing Unused input sections from the image 移除未用到的.o文件
image Symble Table 镜像符号列表
生成的文件大小信息
Memory map of the image
代码在RAM和ROM分布情况
image component size
镜像组件大小
sct文件分析
描述各段代码怎么加载
hex文件分析
bin文件