有客戶開發(fā)LPC54608做產(chǎn)品,已經(jīng)到量產(chǎn)階段,最后想把固件配置為禁止ISP boot功能,禁止SWD功能。
客戶看了手冊(cè)(UM10912)中有關(guān)配置加密的章節(jié): Chapter 43: LPC546xx Enhanced Code Read Protection(ECRP),看完之后還是有一些疑問。現(xiàn)場(chǎng)工程師讓我?guī)兔纯?,感覺手冊(cè)里確實(shí)寫的有點(diǎn)霧里看花,不容易參透。
LPC546xx出了好多年了,網(wǎng)上一搜竟然沒有把ECRP寫的特別細(xì),特別明白的文章。
好在有大神同事的指點(diǎn)和PPT支持,今天這篇文章就將ECRP扒個(gè)底朝天!
ECRP是啥?
ECRP全稱為Enhanced Code Read Protection。 直譯過來就是”高級(jí)代碼保護(hù)機(jī)制”。
這個(gè)高級(jí)對(duì)應(yīng)之前的CRP(用在LPC546xx之前的LPC產(chǎn)品上)。 所以ECRP就算是CRP的升級(jí),功能更強(qiáng)大。作用嘛:就是給代碼提供保護(hù)啦,比如設(shè)置為Flash不可讀,禁止ROM bootloader、禁止調(diào)試口之類的。
每個(gè)廠家的MCU都會(huì)有類似的配置,大同小異。沒啥新鮮的,相信大家都接觸過類似的機(jī)制。
ECRP可以實(shí)現(xiàn):
Protect FLASH from ISP Erase/Write(禁止/使能ISP擦寫Flash)
Protect FLASH from IAP Erase/Write(禁止/使能IAP擦寫Flash)
ISP Entry from bootloader(禁止/使能 進(jìn)入ROM bootloader)
ISP Entry from IAP call(禁止/使能 在程序中調(diào)用ROM API )
SWD Enable/Disable(禁止/使能 調(diào)試接口)
ECRP本身在手冊(cè)中的描述還好,比較清晰,但主要是ECRP的這些功能還和OTP模塊耦合。兩者共同作用來決定最終的芯片保護(hù)行為,這塊內(nèi)容手冊(cè)寫的不多,總有一種”我似乎懂了但是有些地方好像又沒有懂”的尷尬。
FLASH ECRP的位置
ECRP的位置在中斷向量表的0x20位置,就是一個(gè)uint32_t,類似一個(gè)特殊寄存器,往里面寫不同值來決定保護(hù)行為(直接修改.s文件中的中斷向量表0x20位置數(shù)據(jù)就可以)。
FLASH_ECRP有定義的部分只占0-17位,其他位保留。默認(rèn)出廠時(shí),其值為0xFFFF_FFFF(Flash全擦就是1嘛)。
具體的位段定義請(qǐng)參考手冊(cè)。這塊手冊(cè)寫的挺清楚的。
OTP ECRP的位置
OTP是一段特殊的非易失存儲(chǔ)器,只能被編程1次。默認(rèn)為全0.位置如下圖:
OTP不是Flash,也不和Flash統(tǒng)一編址,只能由IAP函數(shù)來寫入,且只能寫一次。
可以看到它由3個(gè)Bank組成,我們只關(guān)心Bank3。Bank3又由3個(gè)word組成,word0也叫做ECRP。
我們姑且叫他OTP_ECRP。于是,我們把Flash地址0x20那個(gè)ECRP重命名叫做FLASH_ECRP。
OTP_ECRP和FLASH_ECRP的值,共同決定芯片代碼保護(hù)行為
FLASH_ECRP 和OTP_ECRP都具有一些相同的行為控制功能,但是!但是!他們的位定義卻不一樣(需要特別留意),如下表所示:
另外,芯片最終的代碼保護(hù)行為是到底是聽OTP_ECRP還是FLASH_ECRP呢? 答案是優(yōu)先OTP_ECRP的設(shè)定,并且優(yōu)先采取更嚴(yán)格的設(shè)定,舉個(gè)例子:比如ISP ENTRY from bootloader這個(gè)功能,結(jié)果如下表:
(E代表使能功能,D代表禁止功能)
最后,F(xiàn)LASH_ECRP還有2個(gè)特殊值,被定義如下:
所以FLASH_ECRP默認(rèn)的值0xFFFF_FFFF才能被識(shí)別為最低限制(使能所有功能,不進(jìn)行任何保護(hù))。
來源:恩智浦MCU加油站
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17357瀏覽量
352794 -
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121282 -
ISP
+關(guān)注
關(guān)注
6文章
480瀏覽量
52052
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【秀秀資源】LPC546系列經(jīng)典資料合集
帶FATFS的LPC546xx SD卡應(yīng)用手冊(cè)
LPC546xx外部RAM/Flash內(nèi)部 AM/Flash、鏈接腳本和MCUXpresso項(xiàng)目設(shè)置問題求解
SDK API Reference Manual LPC546x
Release Notes for LPC546xx
優(yōu)化TPS546xx的布局以實(shí)現(xiàn)熱性能
![優(yōu)化TPS<b class='flag-5'>546xx</b>的布局以實(shí)現(xiàn)熱性能](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論