STM32讀取Flash出現亂碼,重新刷入進入HardFault

問題描述
之前是在Flash中寫入了一些參數,讀取一直是正常的,但是今天修改了一些程序後再次刷入程序,跑的時候卻發現寫在Flash中的參數崩了。
解決方案
Debug觀察Flash中的數據,發現在寫參數的扇區中的數據變成了亂碼,懷疑是刷入了程序,於是檢查了程序的大小對比當前Flash的地址,發現果然是程序的大小超過了寫參數的Flash地址的大小。

這裏寫圖片描述
程序總大小 (129520+7152+836+23356)/1024=157KB
這裏寫圖片描述
參數寫在扇區5 5個扇區總大小 16+16+16+16+64=128KB<157KB
因此 刷的程序與寫參數的內存地址產生了衝突導致出現問題,而不進行修改直接強行刷參數會導致刷進去的程序被強行修改,從而進入HardFault

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章