在STM32的OTA(Over-the-Air)升级中,中断向量表重定向是关键技术需求,其核心原因在于STM32的硬件架构和固件运行机制。以下从原理、实现方式及必要性三个角度详细分析:
一、中断向量表的作用与默认机制
-
中断向量表的本质
中断向量表是一个存储中断服务函数入口地址的数组,位于Flash起始位置(默认0x08000000)。每个中断对应一个32位地址值,指向该中断的处理函数(如Reset_Handler、HardFault_Handler等)。STM32上电后,CPU从中断向量表中读取栈顶指针和复位中断向量地址,完成启动流程。 -
默认运行逻辑
在未重定向时,所有中断均从0x08000000地址的中断向量表中获取入口地址。若BootLoader和APP程序共享同一中断向量表,当APP更新后其函数地址可能变化,导致中断无法正确跳转。
二、OTA升级对中断向量表的需求
-
BootLoader与APP的物理隔离
OTA升级需要将Flash划分为BootLoader区和APP区(如BootLoader在0x08000000,APP在0x08010000)。若APP的中断向量表未独立设置,中断仍会从BootLoader区的旧向量表获取地址,导致程序崩溃。 -
动态切换执行环境的必然性
- 场景1:BootLoader完成固件升级后跳转至APP,若APP的中断向量表未重定向,中断将无法正确响应新程序的逻辑。
-

最低0.47元/天 解锁文章
2064

被折叠的 条评论
为什么被折叠?



