加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

如何優(yōu)雅的使用MDK解除芯片讀保護(hù)?

2022/02/28
562
閱讀需 4 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

經(jīng)歷過產(chǎn)品量產(chǎn)的同學(xué)應(yīng)該都知道,芯片一般會(huì)在出廠時(shí)開啟讀保護(hù):要么在代碼中加入,要么在燒錄程序后人工通過軟件開啟該功能,比如 STM32 ST-LINK Utility:

 

當(dāng)然也可以使用該工具關(guān)閉讀保護(hù)功能。

為了保證程序不被讀取,大多數(shù)產(chǎn)品應(yīng)該會(huì)直接在量產(chǎn)代碼中加入該功能,但這樣會(huì)導(dǎo)致一個(gè)麻煩的問題:無法正常調(diào)試。

每次下載后,如果代碼出現(xiàn)問題,都需要在線調(diào)試,而你的代碼為了不忘記,默認(rèn)就是開啟讀保護(hù)功能的,所以每次下載后,如果發(fā)現(xiàn)問題,你可能要找一個(gè)工具,如 J-Flash 或者上面的軟件負(fù)責(zé)關(guān)閉讀保護(hù),讓我們的開發(fā)效率降低不少。

是否有更好的方法解除讀保護(hù)呢?

今天魚鷹介紹一種使用 MDK 解除讀保護(hù)的方法,畢竟 MDK 軟件絕大部分道友都會(huì)安裝,所以使用它是最合適的。

首先,說說它的讀保護(hù)原理。

讀保護(hù)功能是通過設(shè)置相應(yīng)的 Option Bytes 來實(shí)現(xiàn)的,并且掉電不會(huì)消失,和 ROM 類似。

而解除是則是復(fù)位相應(yīng)的 Option Bytes 來實(shí)現(xiàn),掉電也不會(huì)消失,但是不同的是,設(shè)置完之后,芯片自動(dòng)會(huì)擦除整顆芯片,這樣你也就不能通過解除讀保護(hù)進(jìn)而讀取整顆芯片代碼了。

但是,你會(huì)發(fā)現(xiàn)一個(gè)現(xiàn)象,即使你無法讀取 FLASH 的代碼,你仍然可以通過上述工具連接芯片,這樣就給我們使用 MDK 解除讀保護(hù)創(chuàng)造了條件。

在魚鷹以前的筆記里面,有介紹如何使代碼運(yùn)行在 RAM 中,既然讀保護(hù)保護(hù)的是 FLASH 區(qū),RAM 并不受影響,那么我們就可以將我們解除的代碼加載到 RAM 中運(yùn)行,如此就可以通過 MDK 解除芯片的讀保護(hù)了。

具體操作如下(如下操作不懂的,請(qǐng)看魚鷹以前寫的筆記《STM32工程模板建立之 RAM 目標(biāo)(五)》):

1、設(shè)置新的目標(biāo),比如:

然后設(shè)置該目標(biāo)的輸出目錄,這樣只要編譯一次,之后就可以直接切換目標(biāo)后直接點(diǎn)擊 debug,不需要重復(fù)編譯,相當(dāng)方便(和正常輸出目錄不同)。

新建兩個(gè)目錄,并選擇對(duì)應(yīng)的目錄即可

2、切換到新目標(biāo),然后在 C/C++ 選項(xiàng)卡中增加新宏 READ_PROTECT。

然后在代碼中根據(jù)該宏加入解除讀保護(hù)代碼

3、將代碼地址重新定位到 RAM 中(0x20000000 為 RAM 首地址,假設(shè) 64 K 空間)

4、新建 run_ram文件,內(nèi)容如下:

保存到工程目錄下,然后將其正確添加:

去掉勾選(這樣就不會(huì)下載程序到 FLASH了):

5、編譯,然后點(diǎn)擊Debug 即可,此時(shí)程序應(yīng)該自動(dòng)停止在斷點(diǎn)處 __breakpoint(0),說明解除代碼已經(jīng)順利運(yùn)行完成。

Enjoy it!!!

每次需要解除芯片讀保護(hù)功能時(shí),只要切換目標(biāo)后即可成功解除(前提是已經(jīng)編譯過一次了),相當(dāng)方便,當(dāng)然你如果不想編譯,也可以直接生成一個(gè) axf 文件保存起來,只要每次加載這個(gè)文件即可成功解除。

一次設(shè)置,永不煩惱,相當(dāng)?shù)膶?shí)用!

來源:公眾號(hào)【魚鷹談單片機(jī)

作者:魚鷹Osprey

ID   :emOsprey

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

六年開發(fā)經(jīng)驗(yàn),豐富的KEIL調(diào)試經(jīng)驗(yàn),STM32使用經(jīng)驗(yàn),C語言運(yùn)用經(jīng)驗(yàn)。