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