我正在使用
STM32F405,不确定我是否在正确的地方提问,或者它是否重要......我正在为 CRC FLASH 进行自检(不能使用库,只能使用基本代码)。我注意到,对于非优化代码,生成的 BIN 文件与 FLASH 匹配,但对于优化代码则不匹配。具体来说:
1) 在这两种情况下,BIN 文件和 FLASH 直到 BIN 文件的末尾(大小)都是相同的。
2)在非优化的情况下,剩余的FLASH为空(假设在编程之前擦除)。因此,为了在 PC 端(通过 BIN 文件)生成正确的 CRC,我只是用 0xFF 字节填充 BIN 文件,直到 FLASH 大小。
3)在优化的情况下,剩余的FLASH(原BIN的past end)里面有额外的数据。
这是预期的吗?谁能解释这些额外字节的作用?或者提供有关该主题的一些阅读材料的链接?我可以解决这个问题,在我的例子中,只要从闪存中读取 BIN 内容就停止 CRC 检查,但不希望外部要求 BIN 文件大小。BIN 映像中是否有任何可以在运行时解析出的暗示原始 BIN 大小的内容?
作为参考,我正在使用 SystemWorkbench、GCC/G++、-O2 优化。
提前致谢!