如何在 IDE 中更改 VECT_TAB_OFFSET
搞了一个dfu0x80000000 : DFU 地址0x8000C000 : App地址需要在 App中的改向量表,在 IDE 每找到VECT_TAB_OFFSET,找到的一个解决方案是直接在 System_stmf2xx.c 中更改源代码还有其他方法么?不推荐直接修改库文件,因为这会影响所有项目,并且难以维护。 在STM32项目中,若需在IDE中更改VECT_TAB_OFFSET以实现DFU(设备固件升级)和App的分离,除了直接在system_stm32f2xx.c中修改源代码外,还有使用库函数设置偏移量 在STM32的标准外设库或HAL库中,通常提供了设置中断向量表偏移量的函数。例如,可以使用NVIC_SetVectorTable函数来设置中断向量表的起始地址和偏移量 在IDE中,还可以通过修改链接脚本来设置App的起始地址和中断向量表的偏移量。链接脚本(如.ld文件)定义了程序的内存布局和符号地址 打开链接脚本文件,找到与FLASH相关的部分。修改FLASH的起始地址和长度,以适应App的起始地址。确保中断向量表的偏移量与在代码中设置的一致 在链接脚本中,可以将FLASH的起始地址设置为0x8000C000,并相应地调整其他部分的地址 在代码中,可以使用宏定义来设置VECT_TAB_OFFSET,并在需要的地方引用这个宏。这样,如果需要修改偏移量,只需修改宏定义即可,而无需在多个地方修改代码 偏移量对齐,中断向量表的偏移量必须是0x200的倍数,这是由ARM Cortex-M内核的要求决定的 代码一致性,确保在代码、链接脚本和任何相关的配置文件中使用的偏移量是一致的。 测试验证,在修改偏移量后,务必进行充分的测试,以确保App能够正确运行并响应中断。 你去网上随便找个关于IAP升级的例子,就能看到如何更改地址的吧,这样能靠谱点
页:
[1]