背景
在很多时候,程序需要分段存储在 Flash 中,用以存放不同的数据、资源和函数,如此一来,内存就会被切割为多个分块。
不同系列的 STM32,其 Flash 被擦除后的默认值可能为 0x00,也可能为 0xFF,当一些应用中,需要添加 CRC 校验值来确保程序的完整性时,就需要格外注意这一点,当然如果将Flash 分块之间填充上一个固定值,即使在使用不同系列的 STM32 时,CRC 的计算和检验方法就可以保持一致,比较有利于平台化。
方法
如何在 STM32CubeIDE 中实现 Flash 的填充呢,方法有很多,这里列举两项都是直接通过 STM32CubeIDE 来实现的。
方法一:在 www.stmcu.com.cn 上,有一篇文档-“LAT1306 使用 STM32CubeIDE 填充未用 FLASH 区域”,该文档介绍了通过 ld 链接文件的方式来填充 Flash 的方法。
方法二:我这里再告诉大家另外一种快捷的方法,可通过 GCC 的命令来实现。我们作这样的一个小测试,在 STM32G70RBT6 的 FLASH 的结尾处,存放一个 864 字节的 CheckSUM。然后通过 GCC 命令,将程序的结尾和 CheckSUM 之间的空白 flash 填充固定的值。
小结
通过上述比较可以看出,这种通过 GCC 命令来填充 Flash 的方式是非常容易实施的。希望这个方法可以给正在使用 STM32CubeIDE 的客户提供一个参考。