背景
在很多時候,程序需要分段存儲在 Flash 中,用以存放不同的數(shù)據(jù)、資源和函數(shù),如此一來,內(nèi)存就會被切割為多個分塊。
不同系列的 STM32,其 Flash 被擦除后的默認(rèn)值可能為 0x00,也可能為 0xFF,當(dāng)一些應(yīng)用中,需要添加 CRC 校驗(yàn)值來確保程序的完整性時,就需要格外注意這一點(diǎn),當(dāng)然如果將Flash 分塊之間填充上一個固定值,即使在使用不同系列的 STM32 時,CRC 的計算和檢驗(yàn)方法就可以保持一致,比較有利于平臺化。
方法
如何在 STM32CubeIDE 中實(shí)現(xiàn) Flash 的填充呢,方法有很多,這里列舉兩項(xiàng)都是直接通過 STM32CubeIDE 來實(shí)現(xiàn)的。
方法一:在 www.stmcu.com.cn 上,有一篇文檔-“LAT1306 使用 STM32CubeIDE 填充未用 FLASH 區(qū)域”,該文檔介紹了通過 ld 鏈接文件的方式來填充 Flash 的方法。
方法二:我這里再告訴大家另外一種快捷的方法,可通過 GCC 的命令來實(shí)現(xiàn)。我們作這樣的一個小測試,在 STM32G70RBT6 的 FLASH 的結(jié)尾處,存放一個 864 字節(jié)的 CheckSUM。然后通過 GCC 命令,將程序的結(jié)尾和 CheckSUM 之間的空白 flash 填充固定的值。
小結(jié)
通過上述比較可以看出,這種通過 GCC 命令來填充 Flash 的方式是非常容易實(shí)施的。希望這個方法可以給正在使用 STM32CubeIDE 的客戶提供一個參考。