專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

分享STM32代碼讀保護(hù)個人解決方案

作者:黃賓山   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年03月03日   【字體:

之前也看到有網(wǎng)友提出代碼保護(hù)的問題,辛苦寫的程序,怎么著也不想被別人拿去用!
剛好前一段有個項目完成了,在產(chǎn)品發(fā)出去的時候按照老總吩咐,加了代碼的讀保護(hù)!
現(xiàn)在就把之前的工作做個總結(jié),以便哪天忘記,可來此查詢,也方便網(wǎng)友使用,當(dāng)然,這個也可能有人發(fā)現(xiàn)了,如果你已經(jīng)知道該方法,或者有更好的方法,請不吝賜教

步驟:
1.準(zhǔn)備工作:HEX文件和JLINK驅(qū)動(本人使用的是Setup_JLinkARM_V415e)
安裝完畢后,可以在開始--所有程序--SEGGER--J-Flash ARM打開該應(yīng)用程序,如下圖
 

先進(jìn)行一下設(shè)置,對要寫入的芯片和寫入方式
選擇JATG還是SWD
選擇芯片型號
 

 

2.打開要燒寫的HEX文件:File--Open data file ,可以下拉選擇HEX文件類型
 

3.連接要寫入的芯片:Target--Connect
 

4.寫入代碼:Target--Program & Verify(F6)
 

(到此,就是代碼的寫入過程,下面是加讀保護(hù)的步驟)
5.加讀保護(hù):Target---Secure chip,點擊是,就是加上了讀保護(hù)!

驗證方法,可以使用一個沒有加讀保護(hù)的芯片,重復(fù)步驟中的3,連接上之后,read back一下,看看是否能讀出?
 

然后再使用一個加了讀保護(hù)的芯片,重復(fù)步驟中的3,連接之后,read back一下,看看是不是真的不能讀出了,如果成功加了讀保護(hù),它會一直停在那里,數(shù)據(jù)一直讀不出來,最后彈出一個錯誤警告!
 

 

到此,讀保護(hù)已經(jīng)加載進(jìn)去了!
可是有的時候,你突然發(fā)現(xiàn)你的代碼需要更新,如果你不解除讀保護(hù)功能的話,你將很難再次將程序?qū)懭,解除方法也就是步驟中的5項中的反操作:Target---Unsecure chip
解除成功后,你就可以再次寫入你更新后的代碼了。并沒有網(wǎng)友所說的要更改BOOT0和BOOT1的設(shè)置,等等。。。


這個加載代碼讀保護(hù)功能的步驟可能對有些人來說還是比較麻煩的,畢竟產(chǎn)品多的時候,寫入之后還要按一下寫保護(hù)命令,對于產(chǎn)線操作員來說,可能一時疏忽忘記其中一個,就會造成代碼的外泄,是不是應(yīng)該還有更簡單的辦法一鍵寫入呢,答案是肯定的!
可惜此方法不是我發(fā)現(xiàn)的,是我們的項目經(jīng)理

具體做法,就是要在生成HEX文件之前,要多幾個步驟
1.首先,加載: C:\Keil\ARM\Boards\Keil\MCBSTM32\Blinky文件夾中的一個STM32F10xOPT.s文件
 
2.修改下面兩個值為1
 

3.生成HEX文件之前務(wù)必進(jìn)行一下此配置
 



這樣的話,就簡單的一個HEX文件就會使你的產(chǎn)品流入市場之后,即便是被抄板成功,也不會是代碼流出了
當(dāng)然,必須保證自己公司的員工不會外泄。。。

個人之見,如果大家有更好的方法,請指教一下!謝謝

關(guān)閉窗口

相關(guān)文章