STM32CubeIDE调试中的异常现象——全局结构体在调试器中显示全零,但代码运行却如同数据已正确填充!
我在STM32F4上开发了一个包含Bootloader和Main application的项目。这两个程序都会读取外部Flash来获取配置数据。Bootloader会检查主程序是否之前已将新固件上传至外部Flash,如果是,则用新应用程序重新烧写STM32的Flash,并修改外部Flash中的标志位以避免重复烧写。完成后,无论是否进行了重新烧写,都会跳转至主应用程序。
问题在于:在Bootloader阶段读取的配置数据在调试器中显示正常,但当程序跳转到主应用程序并再次读取配置数据时,调试器中却显示全零。然而,代码运行的表现却像是配置数据正确读取(全零是无效值,正常情况下会执行设置有效值的代码,但此时并未执行该代码,表明数据已被视为有效)。
根据调试器显示,两个配置结构体最终位于相同的RAM地址,但在主程序中查看该内存位置时却显示全零...
|