STM32
直播中

李波

7年用户 1357经验值
私信 关注
[问答]

STM32F4在APP运行时导致IAP程序被修改怎么解决?

  IAP程序被修改无法运行,导致过程IAP卡死。
已验证该错误发生在APP程序(地址0x08020000)中,仅IAP程序的首地址0x08000000和0x08000004两个数据被改写,且每次复现都是相同的现象(如图),复现概率较低。

请问各位大佬,这种诡异情况是如何发生的?我已经摸不着头脑了,按说如果是软件出问题,跑飞了导致Flash数据被人为修改,那也应该是先将整个扇区的数据擦除,很难出现只修改部分数据的情况,再说每次复现的被修改的数据都一模一样,基本可以排除是干扰等因素导致的了。



回帖(1)

北冥有熊

2024-5-18 17:28:56
根据您的描述,STM32F4在APP运行时导致IAP程序被修改,可能是由于以下原因导致的:

1. 程序错误:APP程序中可能存在一些错误,导致在运行过程中意外地修改了IAP程序的首地址。请检查APP程序中的代码,确保没有错误的指针操作或数组越界等问题。

2. 内存泄漏:APP程序可能存在内存泄漏问题,导致内存被错误地写入IAP程序的地址空间。请检查APP程序的内存管理,确保没有内存泄漏。

3. 中断处理:APP程序中的中断处理可能存在问题,导致在中断处理过程中修改了IAP程序的首地址。请检查APP程序中的中断处理代码,确保中断处理过程中不会修改IAP程序的地址空间。

4. 硬件问题:虽然您已经排除了干扰等因素,但仍然有可能是硬件问题导致的。请检查STM32F4的硬件连接,确保没有短路或接触不良等问题。

为了解决这个问题,您可以尝试以下方法:

1. 仔细检查APP程序的代码,确保没有错误或潜在的问题。

2. 使用内存检测工具(如Valgrind)检查APP程序的内存泄漏问题。

3. 优化APP程序的中断处理代码,确保中断处理过程中不会修改IAP程序的地址空间。

4. 检查STM32F4的硬件连接,确保没有硬件问题。

5. 如果问题仍然存在,您可以尝试使用其他版本的STM32F4或更换硬件,以排除硬件问题的可能性。

希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分