目录
1、STM32 启动文件与 .sct 文件分析
1) 定义STACK段,{NOINIT,读写}:分配一段内存大小为0.5K;
2) 定义HEAP段, {NOINIT,读写}:分配一段内存大小为1K;
3) 定义RESET段,{DATA,只读}:DCD各种中断向量;
4) 定义|.text|段,{CODE,只读}:Reset_Handler函数,函数中最后加载了__main;
对剩余的中断函数进行了弱定义;
在最后还有一段用户初始化堆栈的代码__user_initial_stackheap。
那这些代码都存放在什么位置呢?
5) 分析 .sct 文件:
分散加载文件(即scatter file,后缀为.scf)。
分散加载文件是一个文本文件,通过编写一个分散加载文件来指定ARM连接器在生成映像文件时如何分配RO,RW,ZI等数据的存放地址。
如果不用SCATTER文件指定,那么ARM连接器会按照默认的方式来生成映像文件,一般情况下我们是不需要使用分散加载文件的。
但在某些场合,我们希望把某些数据放在指定的地址处,那么这时候SCATTER文件就发挥了非常大的作用。
而且SCATTER文件用起来非常简单好用。
举个例子:
比如像LPC