說在前面:站長在恩智浦技術(shù)社區(qū)看到了這篇文章,特分享給大家,但有些話還是要說在前面,本文介紹的方法也許適合在LPC55系列不帶S的產(chǎn)品中,但對(duì)于型號(hào)中具有S的產(chǎn)品,強(qiáng)烈建議使用debug authentication功能實(shí)現(xiàn)調(diào)試接口的禁用保護(hù)。
本文介紹的方法,不能防止通過其他手段(例如通信接口注入)借助代碼從內(nèi)部再次打開調(diào)試接口,只有debug authentication功能才能阻止這種情況。
在LPC早期發(fā)布的一些產(chǎn)品中,如LPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xx等,使用 CRP 實(shí)現(xiàn)代碼保護(hù),CRP有三種不同的安全級(jí)別:CRP1、CRP2和CRP3,各自的安全級(jí)別大體如圖1所示。
圖1
LPC55系列 (LPC55(S)0x, 1x,2x,6x) 不再使用CRP機(jī)制進(jìn)行安全保護(hù),而是用Secure boot,配置PFR(Protected Flash Region)等方式實(shí)現(xiàn)。其中,所有帶S (LPC55S) 的芯片支持Secure boot,如LPC55S28,LPC55S06等等。而非S系列產(chǎn)品,如LPC5506,LPC5528等等,只能通過配置FPR相關(guān)字段來實(shí)現(xiàn)代碼保護(hù)。
在CRP的三個(gè)安全等級(jí)中,CRP2最為常用。在使用CRP2時(shí),SWD的訪問將被阻止,所以SWD沒有辦法對(duì)Flash進(jìn)行讀寫或者擦除操作,ISP也無法對(duì)Flash內(nèi)容進(jìn)行讀取。此外,未經(jīng)授權(quán)的用戶并不能通過擦除部分Flash方式修改現(xiàn)有代碼,一旦設(shè)置為CRP2, 只有Mass Erase Flash后才能繼續(xù)正常使用,這樣便有效地阻止了他人讀取和修改代碼。
遺憾的是LPC55系列(LPC55(S)0x, 1x,2x,6x) 沒有和CRP2完全一樣的功能機(jī)制,這也是很多初識(shí)LPC55的用戶感到不適應(yīng)的地方。不過,若想實(shí)現(xiàn)與CRP2相似的功能我們可以通過配置CMPA實(shí)現(xiàn),即禁用ISP和關(guān)閉SWD調(diào)試口。
1.禁用ISP
客戶制造編程區(qū)域 (CMPA) 屬于PFR的一部分,通過配置BOOT_CFG來選擇ISP模式的啟用情況。 表1為CMPA中9E40字地址開始的字段表,ISP控制域已用紅色標(biāo)識(shí)(如表1),表2為ISP域的模式選擇,111為ISP禁用。若禁用ISP模式,設(shè)置BOOT_CFG=0b1110000。 表1 表2 ?
2. 關(guān)閉SWD調(diào)試接口
搭配使用 CC_SOCU_PIN 以及 CC_SOCU_DFLT 寄存器,用于定義模塊的SWD調(diào)試訪問權(quán)限。其中,CC_SOCU_PIN寄存器將調(diào)試域細(xì)分,不同位代表不同的調(diào)試域,對(duì)該位置1表示可操作。CC_SOCU_DFLT 寄存器設(shè)置可操作調(diào)試域的最終訪問級(jí)別,置1表示禁用。也就是說,將CC_SOCU_PIN及CC_SOCU_DFLT寄存器相對(duì)應(yīng)的位同時(shí)置1,便能禁用該模塊。如圖2。
圖2
兩寄存器低8位的每一位都代表某一子域,將兩寄存器的低8位全部置1,即可關(guān)閉全部子域的SWD訪問權(quán)限。
3.代碼中實(shí)現(xiàn)關(guān)閉/開啟ISP和SWD
以LPC5506為例,配置CMPA字段:
關(guān)閉ISP和SWD:
除上圖被標(biāo)紅的三處外,其余皆保持CMPA默認(rèn)值。
設(shè)置BOOT_CFG為0x70,禁用通過ISP 引腳進(jìn)入ISP 模式功能。
其余兩處0xFF分別為寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,即將調(diào)試訪問的子域全部關(guān)閉。
開啟ISP及SWD: 除上圖被標(biāo)紅的三處外,其余皆保持CMPA默認(rèn)值。
設(shè)置BOOT_CFG為0x00,開啟自動(dòng)ISP模式。
其余兩處0x00分別為寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,對(duì)調(diào)試訪問的子域不做修改。
通過串口命令(1或0)開啟或關(guān)閉SWD及ISP功能:
注意
1. CMPA的設(shè)置在Reset或重啟生效,一旦在CMPA里關(guān)閉了ISP和SWD, 在斷電前不要擦除或下載其他程序!否則開發(fā)板的ISP和SWD口將永遠(yuǎn)鎖死無法使用。
2. 從系統(tǒng)安全的角度考慮,客戶必須了解NXP不承諾可以防范所有的攻擊,客戶需對(duì)產(chǎn)品的安全性在系統(tǒng)級(jí)別進(jìn)行詳細(xì)評(píng)估并采取相應(yīng)安全措施。
-
接口
+關(guān)注
關(guān)注
33文章
8575瀏覽量
151021 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68525 -
CMPA
+關(guān)注
關(guān)注
0文章
1瀏覽量
1289
原文標(biāo)題:禁用ISP和SWD實(shí)現(xiàn)代碼保護(hù)
文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論