背景
在很多時(shí)候,程序需要分段存儲(chǔ)在 Flash 中,用以存放不同的數(shù)據(jù)、資源和函數(shù),如此一來,內(nèi)存就會(huì)被切割為多個(gè)分塊。
不同系列的 STM32,其 Flash 被擦除后的默認(rèn)值可能為 0x00,也可能為 0xFF,當(dāng)一些應(yīng)用中,需要添加 CRC 校驗(yàn)值來確保程序的完整性時(shí),就需要格外注意這一點(diǎn),當(dāng)然如果將Flash 分塊之間填充上一個(gè)固定值,即使在使用不同系列的 STM32 時(shí),CRC 的計(jì)算和檢驗(yàn)方法就可以保持一致,比較有利于平臺(tái)化。
方法
如何在 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)。我們作這樣的一個(gè)小測(cè)試,在 STM32G70RBT6 的 FLASH 的結(jié)尾處,存放一個(gè) 864 字節(jié)的 CheckSUM。然后通過 GCC 命令,將程序的結(jié)尾和 CheckSUM 之間的空白 flash 填充固定的值。
小結(jié)
通過上述比較可以看出,這種通過 GCC 命令來填充 Flash 的方式是非常容易實(shí)施的。希望這個(gè)方法可以給正在使用 STM32CubeIDE 的客戶提供一個(gè)參考。