打印
[STM32L1]

如何在 IDE 中更改 VECT_TAB_OFFSET

[复制链接]
216|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
石榴大王|  楼主 | 2025-5-23 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
搞了一个dfu
0x80000000 : DFU 地址
0x8000C000 : App地址
需要在 App中的改向量表,在 IDE 每找到VECT_TAB_OFFSET,
找到的一个解决方案是直接在 System_stmf2xx.c 中更改源代码
还有其他方法么?


使用特权

评论回复
沙发
gaonaiweng| | 2025-5-31 18:13 | 只看该作者
不推荐直接修改库文件,因为这会影响所有项目,并且难以维护。

使用特权

评论回复
板凳
夜阑风雨| | 2025-6-9 18:30 | 只看该作者
在STM32项目中,若需在IDE中更改VECT_TAB_OFFSET以实现DFU(设备固件升级)和App的分离,除了直接在system_stm32f2xx.c中修改源代码外,还有使用库函数设置偏移量

使用特权

评论回复
地板
冰春彩落下| | 2025-6-9 19:00 | 只看该作者
在STM32的标准外设库或HAL库中,通常提供了设置中断向量表偏移量的函数。例如,可以使用NVIC_SetVectorTable函数来设置中断向量表的起始地址和偏移量

使用特权

评论回复
5
别乱了阵脚| | 2025-6-9 19:31 | 只看该作者
在IDE中,还可以通过修改链接脚本来设置App的起始地址和中断向量表的偏移量。链接脚本(如.ld文件)定义了程序的内存布局和符号地址

使用特权

评论回复
6
远山寻你| | 2025-6-9 20:00 | 只看该作者
打开链接脚本文件,找到与FLASH相关的部分。修改FLASH的起始地址和长度,以适应App的起始地址。确保中断向量表的偏移量与在代码中设置的一致

使用特权

评论回复
7
一秒落纱| | 2025-6-9 20:30 | 只看该作者
在链接脚本中,可以将FLASH的起始地址设置为0x8000C000,并相应地调整其他部分的地址

使用特权

评论回复
8
江河千里| | 2025-6-9 21:00 | 只看该作者
在代码中,可以使用宏定义来设置VECT_TAB_OFFSET,并在需要的地方引用这个宏。这样,如果需要修改偏移量,只需修改宏定义即可,而无需在多个地方修改代码

使用特权

评论回复
9
光辉梦境| | 2025-6-9 21:39 | 只看该作者
偏移量对齐,中断向量表的偏移量必须是0x200的倍数,这是由ARM Cortex-M内核的要求决定的

使用特权

评论回复
10
代码一致性,确保在代码、链接脚本和任何相关的配置文件中使用的偏移量是一致的。

使用特权

评论回复
11
三生万物| | 2025-6-9 22:45 | 只看该作者
测试验证,在修改偏移量后,务必进行充分的测试,以确保App能够正确运行并响应中断。

使用特权

评论回复
12
淡漠安然| | 2025-6-10 01:36 | 只看该作者
你去网上随便找个关于IAP升级的例子,就能看到如何更改地址的吧,这样能靠谱点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

20

帖子

0

粉丝