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