之前也看到有網友提出代碼保護的問題,辛苦寫的程序,怎么著也不想被別人拿去用!
剛好前一段有個項目完成了,在產品發出去的時候按照老總吩咐,加了代碼的讀保護!
現在就把之前的工作做個總結,以便哪天忘記,可來此查詢,也方便網友使用,當然,這個也可能有人發現了,如果你已經知道該方法,或者有更好的方法,請不吝賜教
步驟:
1.準備工作:HEX文件和JLINK驅動(本人使用的是Setup_JLinkARM_V415e)
安裝完畢后,可以在開始--所有程序--SEGGER--J-Flash ARM打開該應用程序,如下圖
先進行一下設置,對要寫入的芯片和寫入方式
選擇JATG還是SWD
選擇芯片型號
2.打開要燒寫的HEX文件:File--Open data file ,可以下拉選擇HEX文件類型
3.連接要寫入的芯片:Target--Connect
4.寫入代碼:Target--Program & Verify(F6)
(到此,就是代碼的寫入過程,下面是加讀保護的步驟)
5.加讀保護:Target---Secure chip,點擊是,就是加上了讀保護!
驗證方法,可以使用一個沒有加讀保護的芯片,重復步驟中的3,連接上之后,read back一下,看看是否能讀出?
然后再使用一個加了讀保護的芯片,重復步驟中的3,連接之后,read back一下,看看是不是真的不能讀出了,如果成功加了讀保護,它會一直停在那里,數據一直讀不出來,最后彈出一個錯誤警告!
到此,讀保護已經加載進去了!
可是有的時候,你突然發現你的代碼需要更新,如果你不解除讀保護功能的話,你將很難再次將程序寫入,解除方法也就是步驟中的5項中的反操作:Target---Unsecure chip
解除成功后,你就可以再次寫入你更新后的代碼了。并沒有網友所說的要更改BOOT0和BOOT1的設置,等等。。。
這個加載代碼讀保護功能的步驟可能對有些人來說還是比較麻煩的,畢竟產品多的時候,寫入之后還要按一下寫保護命令,對于產線操作員來說,可能一時疏忽忘記其中一個,就會造成代碼的外泄,是不是應該還有更簡單的辦法一鍵寫入呢,答案是肯定的!
可惜此方法不是我發現的,是我們的項目經理
具體做法,就是要在生成HEX文件之前,要多幾個步驟
1.首先,加載: C:\Keil\ARM\Boards\Keil\MCBSTM32\Blinky文件夾中的一個STM32F10xOPT.s文件
2.修改下面兩個值為1
3.生成HEX文件之前務必進行一下此配置
這樣的話,就簡單的一個HEX文件就會使你的產品流入市場之后,即便是被抄板成功,也不會是代碼流出了
當然,必須保證自己公司的員工不會外泄。。。
個人之見,如果大家有更好的方法,請指教一下!謝謝