本文以美信cortex-m3内核某型号芯片以及eclipse开发环境介绍芯片启动过程以及连接文件。
启动过程介绍:
先看向量表,见下图1区域向量表定义在nvic_section这个区域,启动时,会拷贝到ram中运行,后面会介绍,重定向向量表不是必须的,拷贝到ram中有个好处,修改向量表比较方便。
向量表的最开始是栈指针,接下来是复位向量,见2区域。
下面就是复位函数,前面说了,复位函数地址放在了向量表的第二位。处理器上电后首先运行这个函数,进行初始化。这个函数定义在了reset区域,这个区域在flash的起始位置,因此首先运行它,这个函数第一步就是初始化栈指针,然后调用start函数。
关键的start函数来了:
1部分:这个函数首先从flash拷贝数据,这个过程就是给全局变量赋值,换句话说就是给代码中有初值的全局变量或者静态局部变量赋值。因为全局变量和静态局部变量初值是保存在flash里面,会占用flash空间,这一点要注意。
2部分:把需要清零的ram区清空,包括没有初值的全局变量。
3部分:拷贝向量表并重定向,上面已经提过,重定向不是必须的。
这个函数最后调用main函数,就再也回不来了。
连接文件介绍:
1区域:上面说了__reset函数就在这区域,可以看出在flash最上面,首先运行它。
2区域:向量表,start函数中拷贝到ram区了,这是初始位置,在flash区。
继续往下看连接文件:
1区域:有初值常量,比如const类型,存放在flash里
2部分:全局变量初值存放位置。刚才拷贝的就是它。
3区域:清零区,就是上面循环清零的区域
4区域:栈区域,一般在ram最后面,因为cortex-m3类处理器都是满递减栈。
SMT元件基础知识(2023精华版),你值得拥有!
借助物联网系统跑赢“地震波”!
工业物联网与物联网 "工业4.0"的区别
74ls259中文资料汇总(74ls259引脚图及功能_逻辑功能及特性)
你想选择哪一种Java框架
美信cortex-m3内核芯片的启动过程及连接文件介绍
波士顿动力机器人又放出一波机器人逆天动作!
利用滨松反射式纯相位空间光调制器实现对光场波前和偏振的双重调制
LED屏企行业集中度不断提高 急需寻找新的市场突破口
HD300B电容电流测试仪操作使用说明及特点
将文件自动备份到连上的USB介质的步骤
海外网文生态自主研发文学领域人工智能AI翻译生产网络?
LPC2134与T6963C液晶显示模块的接口设计
自动驾驶创业公司Drive.ai被苹果收购
开关柜为什么叫“成套配电装置”?
提高IT和运营效率有哪一些方法
感性开关式电源电路图
施耐德电气遭勒索软件攻击,大量机密数据泄露
电子元件字母对照表_电子元件检测标准
焊接机器人的控制系统有什么作用?