本文介紹了如何解決STM32芯片Flash寫保護導致無法下載程序,無法在線調試的問題;如果您遇到相同的問題,希望本文可以帶來一些幫助;
1 FLASH的寫保護
如果對Flash設置了寫保護,那就無法對Flash進行編程和擦除。
在開發STM32的時候,如果出現這種情況,通常仿真器都支持對Flash進行解鎖,像jlink,stlink等仿真器都支持這個功能。
2 錯誤提示
在使用MDK進行調試的時候,出現報錯 ==Flash Timeout.Reset Target and try it again==,具體如下圖所示;
折騰了一番之后,并沒有解決問題,因為使用的仿真器是stlink,因此下載了stlink utility嘗試解決問題;
3 stlink utility
3.1 基本功能
stlink utility是ST官方提供的免費軟件,支持STM32 ST-LINK的程序包括帶有命令行界面(CLI)的圖形用戶界面(GUI)。該工具還提供了較多的其他功能,具體如下;
可以對STM32內部存儲器(Flash,RAM,OTP和其他存儲器),外部存儲器進行編程;
驗證程序內容(校驗和,在編程期間和之后進行校驗,與文件進行比較等)
還能實現 STM32編程自動化;
另外還提供其他的功能;
3.2 解鎖Flash
在stlink連接目標板的情況下,打開stlink utility,在菜單欄的Target下選擇connect,因為這時候Flash已經被鎖住了,所以同樣地也看到相應的錯誤提示Can not read memory Disable Read Out Protection and retry,具體如下圖所示;
OK,下面只需要接觸寫保護就行了,所以在菜單欄target里打開Option Bytes...選項,或者直接通過快捷鍵ctrl+B打開,請確保當前已經正確連接了stlink和目標板,否則會出現報錯;
正確連接的情況下,打開Option Bytes...,發現在這里Read Out Protection選項是enable,這個表示無法通過swd讀取STM32內部Flash的程序。
關鍵點:將Read Out Protection選項設置為disable,點擊Apply,這時候Flash已經成功解鎖了。但是同時發現,內部Flash已經被擦除了;
這可能STM32的保護機制有關,防止程序被拷機,然后進行反編譯破解,這樣也可以提高破解的門檻。具體顯示如下圖所示;
完成以上步驟之后,在菜單欄Target下選擇Disconnect,或者通過快捷鍵ctrl+D斷開和目標板的連接;重新進入MDK,就能正常對目標板進行調試,仿真,以及程序的燒寫。
3.3 寫保護
在菜單欄target里打開Option Bytes...選項,我們還看到下面有Flash sector protection選項;選擇Select all之后,發現所有Page都已經寫保護了,只要選擇apply選項就可以對Flash進行寫保護;具體如下所示;
4 總結
對于Flash寫保護的問題可以結合STM32參考手冊進行相應的學習,其內部Flash提供相應的保護機制,本文只是結合ST官方工具stlink utility解決一下常見的這個簡單的問題。
責任編輯:xj
原文標題:如何優雅地解決STM32的Flash寫保護的問題?
文章出處:【微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。
-
單片機
+關注
關注
6023文章
44376瀏覽量
628426 -
FlaSh
+關注
關注
10文章
1598瀏覽量
147339 -
STM32
+關注
關注
2258文章
10828瀏覽量
352499
原文標題:如何優雅地解決STM32的Flash寫保護的問題?
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論