軟件提供商正在開發(fā)被稱為IP(知識產(chǎn)權(quán))代碼的復(fù)雜中間件解決方案,保護(hù)它們對微控制器而言是一個非常重要的問題。為了滿足這一重要要求,STM32L4、STM32L4 +和STM32G4系列MCU可提供以下保護(hù)功能:
? 讀取保護(hù)(RDP):防止進(jìn)行讀取操作
? 寫保護(hù):防止進(jìn)行不需要的寫入或擦除操作
? 專利代碼讀取保護(hù)(PCROP):防止在閃存和SRAM存儲器上進(jìn)行讀寫操作。
? 防火墻:針對外部進(jìn)程為敏感代碼和數(shù)據(jù)提供訪問保護(hù)。
本應(yīng)用筆記對這些閃存保護(hù)功能進(jìn)行了說明,重點介紹了專利代碼讀取保護(hù)(PCROP),并提供了PCROP保護(hù)的基本示例。防火墻保護(hù)(在STM32L4和STM32L4 +系列上可用)在www.st.com上的“ STM32L0 / L4防火墻概述”(AN4729)中進(jìn)行了介紹。
目錄預(yù)覽
1 單分區(qū)存儲器保護(hù)說明
2PCROP示例
3 結(jié)論
1.單分區(qū)存儲器保護(hù)說明
基于Arm(a)內(nèi)核的STM32L4、STM32L4+和STM32G4系列微控制器采用多種機制,可對整個存儲器或特定存儲段進(jìn)行讀寫保護(hù)。讀保護(hù)用于保護(hù)代碼免受外部訪問的轉(zhuǎn)儲(SW IP保護(hù)),而寫保護(hù)用于保護(hù)代碼或數(shù)據(jù)不被意外改寫或擦除。除閃存外,這些保護(hù)還擴展到STM32L4和STM32L4+系列的SRAM2,以及STM32G4系列的CCM(內(nèi)核耦合存儲器)SRAM。STM32L4xx MCU還具有防火墻機制,可在存儲器中創(chuàng)建受信執(zhí)行區(qū)域。
1.1 讀取保護(hù)(RDP)
讀取保護(hù)是全局閃存讀保護(hù),可保護(hù)片內(nèi)固件代碼,可以預(yù)防復(fù)制、逆向工程、使用調(diào)試工具讀出或其他方式的入侵攻擊。該保護(hù)應(yīng)在二進(jìn)制代碼載入片內(nèi)閃存后,由用戶進(jìn)行設(shè)置。讀取保護(hù)適用于:
? SRAM2(STM32L4/STM32L4+)或CCM-SRAM(STM32G4)
? 選項字節(jié)(僅限級別 2)。以下章節(jié)中對三個RDP級別(0,1和2)進(jìn)行定義和描述
1.1.1 讀保護(hù)級別0
級別0是默認(rèn)級別,閃存完全打開,可在所有引導(dǎo)配置(調(diào)試功能,從RAM、從系統(tǒng)內(nèi)存引導(dǎo)加載程序或從閃存啟動)下進(jìn)行全部內(nèi)存操作。在這種模式下沒有保護(hù),該模式可滿足開發(fā)和調(diào)試需求。
1.1.2 讀保護(hù)級別1
激活讀保護(hù)級別1時,即使是從SRAM或系統(tǒng)內(nèi)存引導(dǎo)加載程序來啟動,也不能使用調(diào)試功能(如串行線路或JTAG)分別訪問(讀取,擦除和編程)STM32L4/L4+和STM32G4系列的閃存或SRAM2和CCM-SRAM。在這些情況下,任何對受保護(hù)區(qū)域的讀請求都會生成總線錯誤。
但是,當(dāng)從閃存啟動時,則允許從用戶代碼訪問閃存和SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)。
將RDP選項字節(jié)重新編程為級別0,可禁用RDP級別1保護(hù),這會導(dǎo)致閃存被批量擦除;而且SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)和備份寄存器會復(fù)位。
1.1.3 讀保護(hù)級別2
激活RDP級別2時,級別1下提供的所有保護(hù)均有效,MCU受到全面保護(hù)。RDP選項字節(jié)和所有其他選項字節(jié)都會被凍結(jié),不能再修改。JTAG、SWV(單線查看器)、ETM和邊界掃描全部禁用。
從閃存啟動時,用戶代碼可以訪問內(nèi)存內(nèi)容。但是,不再能從SRAM或從系統(tǒng)內(nèi)存引導(dǎo)加載程序啟動。這種保護(hù)是不可逆的(JTAG熔斷),所以不能回到保護(hù)級別1或0。
表 1根據(jù)保護(hù)級別和執(zhí)行模式總結(jié)讀取訪問權(quán)限。

1.1.4 受RDP保護(hù)的STM32內(nèi)部閃存內(nèi)容更新
當(dāng)Flash RDP保護(hù)激活時(級別1或級別2),內(nèi)部閃存內(nèi)容不能通過調(diào)試進(jìn)行更新,或者當(dāng)從SRAM或系統(tǒng)內(nèi)存引導(dǎo)程序啟動時也不能更新。
因此對最終產(chǎn)品的一個重要要求就是,能夠?qū)?nèi)部閃存中的固件升級為新的固件版本,添加新功能并修正潛在問題。該需求可以通過實現(xiàn)用戶專用固件來解決,使用諸如USART的通信協(xié)議來進(jìn)行重新編程過程,從而執(zhí)行內(nèi)部閃存的應(yīng)用內(nèi)編程(IAP)。
關(guān)于IAP的更多詳細(xì)內(nèi)容,請參考應(yīng)用筆記AN3965,可在www.st.com上獲取。
1.2 寫保護(hù)
寫保護(hù)用來保護(hù)指定內(nèi)存區(qū)域的內(nèi)容,避免更新或擦除代碼段或非易失性數(shù)據(jù)。
1.2.1 閃存寫保護(hù)
寫保護(hù)區(qū)域的數(shù)量取決于閃存架構(gòu)。對于STM32L4和STM32L4+系列,每個閃存中可以以2KB粒度定義最多2個區(qū)域。STM32G4 3類設(shè)備能夠以單分區(qū)或雙分區(qū)工作。
? 在單分區(qū)模式(DBANK = 0)中,最多能夠以4 KB的粒度定義四個寫保護(hù)區(qū)域。
? 在雙分區(qū)模式(DBANK = 1)中,最多可以定義兩個寫保護(hù)區(qū)域每個存儲庫中2 KB的粒度。
STM32G4 Cat2設(shè)備只能在單個閃存庫中工作。能夠以2 KB粒度定義兩個寫保護(hù)區(qū)域。
圖 1中的灰色區(qū)域是具有兩個粒度為2 KB的寫保護(hù)(WRP)區(qū)域的雙分區(qū)結(jié)構(gòu)的示例。

受保護(hù)區(qū)域無法被擦除和編程,任何寫請求都會產(chǎn)生寫保護(hù)錯誤。如果要擦除/編程的地址屬于閃存中處于寫保護(hù)狀態(tài)的區(qū)域,則通過硬件將WRPERR標(biāo)志置位。例如,如果閃存中至少有一頁是寫保護(hù)的,則不能對其進(jìn)行批量擦除,并且設(shè)置WRPERR標(biāo)志。
可通過嵌入式用戶代碼或使用STM32 ST-Link Utility軟件和調(diào)試接口,進(jìn)行使能或禁用寫保護(hù)管理
1.2.2SRAM2 CCM-SRAM寫保護(hù)
在STM32L4/L4 +上,32KB的SRAM2可以通過1 KB頁面單獨進(jìn)行寫保護(hù)。該保護(hù)的設(shè)置由32位系統(tǒng)配置寄存器進(jìn)行控制,并在啟用后,只有系統(tǒng)復(fù)位才能對其進(jìn)行禁用。
在STM32G4中,CCM-SRAM也可以通過1 KB的段進(jìn)行寫保護(hù)(3類設(shè)備為32 KB,2類設(shè)備為10 KB)。
本文檔隨附的X-CUBE-PCROP固件封裝包含了PCROP示例的源代碼,以及基于STM32L4系列微控制器運行示例所需的所有固件模塊,并且該封裝可輕松移植到STM32L4 +和STM32G4系列微控制器上。
本應(yīng)用筆記必須與產(chǎn)品數(shù)據(jù)手冊以及以下參考手冊一起閱讀,這些參考手冊可從www.st.com獲得:
? RM0351(STM32L4x5xx、STM32L4x6xx)
? RM0392 (STM32L4x1xx)? RM0394(STM32L43xxx、STM32L44xxx、STM32L45xxx、STM32L46xxx)
? RM0432(STM32L4Rxxx和STM32L4Sxxx)
? RM0440 (STM32G4xx)
文章篇幅有限僅展示部分,完整內(nèi)容請點擊“閱讀原文”下載原文檔。

長按掃碼關(guān)注公眾號
更多資訊,盡在STM32
▽點擊“閱讀原文”,可下載原文檔
原文標(biāo)題:應(yīng)用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護(hù)
文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機
+關(guān)注
關(guān)注
6064文章
44932瀏覽量
647537 -
STM32
+關(guān)注
關(guān)注
2290文章
11018瀏覽量
362674
原文標(biāo)題:應(yīng)用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護(hù)
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
手機APP遠(yuǎn)程控制,智能家居監(jiān)測、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)實例項目打包下載
【每周推薦】基于STM32開發(fā)項目實例下載(含PCB、原理圖、源碼等)

手機APP遠(yuǎn)程控制,智能家居監(jiān)測、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)
昂科燒錄器支持ST意法半導(dǎo)體的超低功耗微控制器STM32L4S5VIT

STM32F405xx和STM32F407xx微控制器數(shù)據(jù)手冊
STM32項目實戰(zhàn):基于STM32F4的智能燈光控制系統(tǒng)(LVGL),附項目教程/源碼

stm32g與stm32h的區(qū)別
stm32讀取boot引腳狀態(tài)
STM32G4系列芯片定時器的延時輸出問題

評論