0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

LPC546xx加密配置-ECRP詳解

jf_pJlTbmA9 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2023-09-27 16:24 ? 次閱讀

有客戶開發(fā)LPC54608做產(chǎn)品,已經(jīng)到量產(chǎn)階段,最后想把固件配置為禁止ISP boot功能,禁止SWD功能。

客戶看了手冊(UM10912)中有關配置加密的章節(jié): Chapter 43: LPC546xx Enhanced Code Read Protection(ECRP),看完之后還是有一些疑問?,F(xiàn)場工程師讓我?guī)兔纯?,感覺手冊里確實寫的有點霧里看花,不容易參透。

LPC546xx出了好多年了,網(wǎng)上一搜竟然沒有把ECRP寫的特別細,特別明白的文章。

好在有大神同事的指點和PPT支持,今天這篇文章就將ECRP扒個底朝天!

ECRP是啥?

ECRP全稱為Enhanced Code Read Protection。 直譯過來就是”高級代碼保護機制”。

這個高級對應之前的CRP(用在LPC546xx之前的LPC產(chǎn)品上)。 所以ECRP就算是CRP的升級,功能更強大。作用嘛:就是給代碼提供保護啦,比如設置為Flash不可讀,禁止ROM bootloader、禁止調(diào)試口之類的。

每個廠家的MCU都會有類似的配置,大同小異。沒啥新鮮的,相信大家都接觸過類似的機制。

ECRP可以實現(xiàn):

Protect FLASH from ISP Erase/Write(禁止/使能ISP擦寫Flash)

Protect FLASH from IAP Erase/Write(禁止/使能IAP擦寫Flash)

ISP Entry from bootloader(禁止/使能 進入ROM bootloader)

ISP Entry from IAP call(禁止/使能 在程序中調(diào)用ROM API )

SWD Enable/Disable(禁止/使能 調(diào)試接口)

ECRP本身在手冊中的描述還好,比較清晰,但主要是ECRP的這些功能還和OTP模塊耦合。兩者共同作用來決定最終的芯片保護行為,這塊內(nèi)容手冊寫的不多,總有一種”我似乎懂了但是有些地方好像又沒有懂”的尷尬。

FLASH ECRP的位置

ECRP的位置在中斷向量表的0x20位置,就是一個uint32_t,類似一個特殊寄存器,往里面寫不同值來決定保護行為(直接修改.s文件中的中斷向量表0x20位置數(shù)據(jù)就可以)。

FLASH_ECRP有定義的部分只占0-17位,其他位保留。默認出廠時,其值為0xFFFF_FFFF(Flash全擦就是1嘛)。

具體的位段定義請參考手冊。這塊手冊寫的挺清楚的。

wKgaomUD8vaAcCfmAAHTCwxwM-g824.png

OTP ECRP的位置

OTP是一段特殊的非易失存儲器,只能被編程1次。默認為全0.位置如下圖:

wKgaomUD8viAFnefAAFvXOCfb2g505.png

OTP不是Flash,也不和Flash統(tǒng)一編址,只能由IAP函數(shù)來寫入,且只能寫一次。

可以看到它由3個Bank組成,我們只關心Bank3。Bank3又由3個word組成,word0也叫做ECRP。

我們姑且叫他OTP_ECRP。于是,我們把Flash地址0x20那個ECRP重命名叫做FLASH_ECRP。

OTP_ECRP和FLASH_ECRP的值,共同決定芯片代碼保護行為

FLASH_ECRP 和OTP_ECRP都具有一些相同的行為控制功能,但是!但是!他們的位定義卻不一樣(需要特別留意),如下表所示:

wKgZomUD8vmATGpSAAMgEpmVKJs305.png

另外,芯片最終的代碼保護行為是到底是聽OTP_ECRP還是FLASH_ECRP呢? 答案是優(yōu)先OTP_ECRP的設定,并且優(yōu)先采取更嚴格的設定,舉個例子:比如ISP ENTRY from bootloader這個功能,結(jié)果如下表:

wKgZomUD8vuAOSGwAAAjrQKUEj4971.png

(E代表使能功能,D代表禁止功能)

最后,F(xiàn)LASH_ECRP還有2個特殊值,被定義如下:

wKgaomUD8v-ACEaiAABbYFrEIzw180.jpg

所以FLASH_ECRP默認的值0xFFFF_FFFF才能被識別為最低限制(使能所有功能,不進行任何保護)。

來源:恩智浦MCU加油站

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16667

    瀏覽量

    347786
  • 寄存器
    +關注

    關注

    31

    文章

    5253

    瀏覽量

    119205
  • ISP
    ISP
    +關注

    關注

    6

    文章

    473

    瀏覽量

    51554
收藏 人收藏

    評論

    相關推薦

    【秀秀資源】LPC546系列經(jīng)典資料合集

    本帖最后由 wujianwei3980 于 2017-3-17 14:52 編輯 喜歡請在原帖右下角點贊支持,謝謝!有關LPC546系列的資料合集1. LPC54608原理圖https
    發(fā)表于 03-17 09:23

    LPC546xx快速應用手冊

    LPC546xx外部總線接口支持SDRAM的應用手冊
    發(fā)表于 12-07 07:10

    帶FATFS的LPC546xx SD卡應用手冊

    LPC546xx 帶有FATFS文件系統(tǒng)的SD卡接口應用手冊
    發(fā)表于 12-07 07:08

    LPC546xx MCU相關資料分享

    LPC546xx MCU系列 - 概況介紹
    發(fā)表于 12-07 07:11

    LPC546xx勘誤表資料分享

    LPC546xx勘誤表
    發(fā)表于 12-07 06:20

    LPC546xx產(chǎn)品數(shù)據(jù)手冊

    LPC546xx數(shù)據(jù)手冊
    發(fā)表于 12-09 07:12

    LPC546xx外部RAM/Flash內(nèi)部 AM/Flash、鏈接腳本和MCUXpresso項目設置問題求解

    。 不應使用函數(shù) __RAMFUNC() 或 __TEXT()。 MCUXpresso 項目是否可以配置為 startup_lpc54628.c、SystemInit()、所有中斷(ADC、定時器
    發(fā)表于 05-06 08:47

    SDK v.2.0 for LPC546xx

    LPC546xx SDK2.0用戶手冊,有需要的下載看看
    發(fā)表于 03-17 09:14 ?36次下載

    SDK API Reference Manual LPC546x

    SDK API Reference Manual LPC546xx,用戶手冊
    發(fā)表于 03-17 08:29 ?33次下載

    Release Notes for LPC546xx

    SDK v.2.0.0 Release Notes for LPC546xx Derivatives
    發(fā)表于 03-17 08:25 ?39次下載

    LPC546xx數(shù)據(jù)手冊

    發(fā)表于 12-09 18:49 ?0次下載
    <b class='flag-5'>LPC546xx</b>數(shù)據(jù)手冊

    LPC546xx勘誤表

    發(fā)表于 12-09 18:49 ?0次下載
    <b class='flag-5'>LPC546xx</b>勘誤表

    LPC546xx數(shù)據(jù)手冊

    發(fā)表于 12-12 18:55 ?0次下載
    <b class='flag-5'>LPC546xx</b>數(shù)據(jù)手冊

    LPC546xx數(shù)據(jù)手冊

    發(fā)表于 12-13 07:36 ?0次下載
    <b class='flag-5'>LPC546xx</b>數(shù)據(jù)手冊

    LPC546xx勘誤表

    發(fā)表于 12-13 07:37 ?0次下載
    <b class='flag-5'>LPC546xx</b>勘誤表