Other Parts Discussed in Thread: MSP430FR5969
器件型号: MSP430FR5969
我正在使用 MSP430FR5969、 在特定的固件版本中、当执行某个功能时、FRAM 代码存储器的部分会被覆盖。
受影响的区域位于地址 0x12A00 至 0x12C00 附近。 覆盖的数据属于程序存储器部分。
此问题可重现、但仅在大约 250 个器件中的一个器件上发生。 所有其他设备都运行相同的固件、而不会出现任何问题。
如果在被覆盖的地址设置了(条件)断点、则不再发生问题。
堆栈大小就足够了。 不使用动态内存分配。 未使用 DMA。
当进行极少的代码更改(例如,小变量更改)时、受影响的地址区域会略有漂移、例如从 0x12A05 到 0x12C05。 因此、该问题仍然存在于同一个通用 FRAM 区域、但会根据代码布局影响不同的特定地址。
系统配置:
- CPU 时钟:8MHz
- 无 FRAM 等待状态
- IAR 用作编译器
- 启用高编译器优化(大小)
以下几点已经过验证:
- 排除栈溢出
- 无堆或 malloc 使用
- 没有明显的指针错误
- 不同的编译会发生变化、但始终会重现问题
- 当地址处被覆盖的条件断点处于活动状态时、问题就会消失