本文介紹了如何解決STM32芯片F(xiàn)lash寫保護(hù)導(dǎo)致無(wú)法下載程序,無(wú)法在線調(diào)試的問(wèn)題默责;如果您遇到相同的問(wèn)題贬循,希望本文可以帶來(lái)一些幫助;
1 FLASH的寫保護(hù)
如果對(duì)Flash設(shè)置了寫保護(hù)桃序,那就無(wú)法對(duì)Flash進(jìn)行編程和擦除杖虾。
在開(kāi)發(fā)STM32的時(shí)候,如果出現(xiàn)這種情況媒熊,通常仿真器都支持對(duì)Flash進(jìn)行解鎖奇适,像jlink,stlink等仿真器都支持這個(gè)功能泛释。
2 錯(cuò)誤提示
在使用MDK進(jìn)行調(diào)試的時(shí)候滤愕,出現(xiàn)報(bào)錯(cuò) ==Flash Timeout.Reset Target and try it again==,具體如下圖所示怜校;
折騰了一番之后间影,并沒(méi)有解決問(wèn)題,因?yàn)槭褂玫姆抡嫫魇?b>stlink茄茁,因此下載了stlink utility嘗試解決問(wèn)題魂贬;
3 stlink utility
3.1 基本功能
stlink utility是ST官方提供的免費(fèi)軟件巩割,支持STM32 ST-LINK的程序包括帶有命令行界面(CLI)的圖形用戶界面(GUI)。該工具還提供了較多的其他功能付燥,具體如下宣谈;
可以對(duì)STM32?內(nèi)部存儲(chǔ)器?(Flash,RAM键科,OTP和其他存儲(chǔ)器)闻丑,外部存儲(chǔ)器進(jìn)行編程;
驗(yàn)證程序內(nèi)容(校驗(yàn)和勋颖,在編程期間和之后進(jìn)行校驗(yàn)嗦嗡,與文件進(jìn)行比較等)
還能實(shí)現(xiàn) STM32編程自動(dòng)化;
另外還提供其他的功能饭玲;
3.2 解鎖Flash
在stlink連接目標(biāo)板的情況下侥祭,打開(kāi)stlink utility,在菜單欄的Target下選擇connect茄厘,因?yàn)檫@時(shí)候Flash已經(jīng)被鎖住了矮冬,所以同樣地也看到相應(yīng)的錯(cuò)誤提示?Can not read memory Disable Read Out Protection and retry,具體如下圖所示次哈;
OK胎署,下面只需要接觸寫保護(hù)就行了,所以在菜單欄target里打開(kāi)Option Bytes...選項(xiàng)亿乳,或者直接通過(guò)快捷鍵ctrl+B打開(kāi)硝拧,請(qǐng)確保當(dāng)前已經(jīng)正確連接了stlink和目標(biāo)板径筏,否則會(huì)出現(xiàn)報(bào)錯(cuò)葛假;
正確連接的情況下,打開(kāi)Option Bytes...滋恬,發(fā)現(xiàn)在這里Read Out Protection選項(xiàng)是enable聊训,這個(gè)表示無(wú)法通過(guò)swd讀取STM32內(nèi)部Flash的程序。
關(guān)鍵點(diǎn):將Read Out Protection選項(xiàng)設(shè)置為disable恢氯,點(diǎn)擊Apply带斑,這時(shí)候Flash已經(jīng)成功解鎖了。但是同時(shí)發(fā)現(xiàn)勋拟,內(nèi)部Flash已經(jīng)被擦除了勋磕;
這可能STM32的保護(hù)機(jī)制有關(guān),防止程序被拷機(jī)敢靡,然后進(jìn)行反編譯破解挂滓,這樣也可以提高破解的門檻。具體顯示如下圖所示啸胧;
完成以上步驟之后赶站,在菜單欄Target下選擇Disconnect幔虏,或者通過(guò)快捷鍵ctrl+D斷開(kāi)和目標(biāo)板的連接;重新進(jìn)入MDK贝椿,就能正常對(duì)目標(biāo)板進(jìn)行調(diào)試想括,仿真,以及程序的燒寫烙博。
3.3 寫保護(hù)
在菜單欄target里打開(kāi)Option Bytes...選項(xiàng)瑟蜈,我們還看到下面有Flash sector protection選項(xiàng);選擇Select all之后渣窜,發(fā)現(xiàn)所有Page都已經(jīng)寫保護(hù)了踪栋,只要選擇apply選項(xiàng)就可以對(duì)Flash進(jìn)行寫保護(hù);具體如下所示图毕;
4 總結(jié)
對(duì)于Flash寫保護(hù)的問(wèn)題可以結(jié)合STM32參考手冊(cè)進(jìn)行相應(yīng)的學(xué)習(xí)夷都,其內(nèi)部Flash提供相應(yīng)的保護(hù)機(jī)制,本文只是結(jié)合ST官方工具stlink utility解決一下常見(jiàn)的這個(gè)簡(jiǎn)單的問(wèn)題予颤。
【文章福利】自己的stm32學(xué)習(xí)技術(shù)交流群【943552345】囤官,進(jìn)群可領(lǐng)取全套編程資料(超20G文檔、教程蛤虐、題庫(kù)党饮、項(xiàng)目)有需要的可以自行添加哦!驳庭!