軟件提供商正在開(kāi)發(fā)被稱為IP(知識(shí)產(chǎn)權(quán))代碼的復(fù)雜中間件解決方案,保護(hù)它們對(duì)微控制器而言是一個(gè)非常重要的問(wèn)題。為了滿足這一重要要求,STM32L4、STM32L4 +和STM32G4系列MCU可提供以下保護(hù)功能:
? 讀取保護(hù)(RDP):防止進(jìn)行讀取操作
? 寫(xiě)保護(hù):防止進(jìn)行不需要的寫(xiě)入或擦除操作
? 專利代碼讀取保護(hù)(PCROP):防止在閃存和SRAM存儲(chǔ)器上進(jìn)行讀寫(xiě)操作。
? 防火墻:針對(duì)外部進(jìn)程為敏感代碼和數(shù)據(jù)提供訪問(wèn)保護(hù)。
本應(yīng)用筆記對(duì)這些閃存保護(hù)功能進(jìn)行了說(shuō)明,重點(diǎn)介紹了專利代碼讀取保護(hù)(PCROP),并提供了PCROP保護(hù)的基本示例。防火墻保護(hù)(在STM32L4和STM32L4 +系列上可用)在www.st.com上的“ STM32L0 / L4防火墻概述”(AN4729)中進(jìn)行了介紹。
目錄預(yù)覽
1 單分區(qū)存儲(chǔ)器保護(hù)說(shuō)明
2PCROP示例
3 結(jié)論
1.單分區(qū)存儲(chǔ)器保護(hù)說(shuō)明
基于Arm(a)內(nèi)核的STM32L4、STM32L4+和STM32G4系列微控制器采用多種機(jī)制,可對(duì)整個(gè)存儲(chǔ)器或特定存儲(chǔ)段進(jìn)行讀寫(xiě)保護(hù)。讀保護(hù)用于保護(hù)代碼免受外部訪問(wèn)的轉(zhuǎn)儲(chǔ)(SW IP保護(hù)),而寫(xiě)保護(hù)用于保護(hù)代碼或數(shù)據(jù)不被意外改寫(xiě)或擦除。除閃存外,這些保護(hù)還擴(kuò)展到STM32L4和STM32L4+系列的SRAM2,以及STM32G4系列的CCM(內(nèi)核耦合存儲(chǔ)器)SRAM。STM32L4xx MCU還具有防火墻機(jī)制,可在存儲(chǔ)器中創(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ù)適用于:
? 主閃存? 實(shí)時(shí)時(shí)鐘(RTC)中的備份寄存器
? SRAM2(STM32L4/STM32L4+)或CCM-SRAM(STM32G4)
? 選項(xiàng)字節(jié)(僅限級(jí)別 2)。以下章節(jié)中對(duì)三個(gè)RDP級(jí)別(0,1和2)進(jìn)行定義和描述
1.1.1 讀保護(hù)級(jí)別0
級(jí)別0是默認(rèn)級(jí)別,閃存完全打開(kāi),可在所有引導(dǎo)配置(調(diào)試功能,從RAM、從系統(tǒng)內(nèi)存引導(dǎo)加載程序或從閃存啟動(dòng))下進(jìn)行全部?jī)?nèi)存操作。在這種模式下沒(méi)有保護(hù),該模式可滿足開(kāi)發(fā)和調(diào)試需求。
1.1.2 讀保護(hù)級(jí)別1
激活讀保護(hù)級(jí)別1時(shí),即使是從SRAM或系統(tǒng)內(nèi)存引導(dǎo)加載程序來(lái)啟動(dòng),也不能使用調(diào)試功能(如串行線路或JTAG)分別訪問(wèn)(讀取,擦除和編程)STM32L4/L4+和STM32G4系列的閃存或SRAM2和CCM-SRAM。在這些情況下,任何對(duì)受保護(hù)區(qū)域的讀請(qǐng)求都會(huì)生成總線錯(cuò)誤。
但是,當(dāng)從閃存啟動(dòng)時(shí),則允許從用戶代碼訪問(wèn)閃存和SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)。
將RDP選項(xiàng)字節(jié)重新編程為級(jí)別0,可禁用RDP級(jí)別1保護(hù),這會(huì)導(dǎo)致閃存被批量擦除;而且SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)和備份寄存器會(huì)復(fù)位。
1.1.3 讀保護(hù)級(jí)別2
激活RDP級(jí)別2時(shí),級(jí)別1下提供的所有保護(hù)均有效,MCU受到全面保護(hù)。RDP選項(xiàng)字節(jié)和所有其他選項(xiàng)字節(jié)都會(huì)被凍結(jié),不能再修改。JTAG、SWV(單線查看器)、ETM和邊界掃描全部禁用。
從閃存啟動(dòng)時(shí),用戶代碼可以訪問(wèn)內(nèi)存內(nèi)容。但是,不再能從SRAM或從系統(tǒng)內(nèi)存引導(dǎo)加載程序啟動(dòng)。這種保護(hù)是不可逆的(JTAG熔斷),所以不能回到保護(hù)級(jí)別1或0。
表 1根據(jù)保護(hù)級(jí)別和執(zhí)行模式總結(jié)讀取訪問(wèn)權(quán)限。
?
?1.1.4 受RDP保護(hù)的STM32內(nèi)部閃存內(nèi)容更新
當(dāng)Flash RDP保護(hù)激活時(shí)(級(jí)別1或級(jí)別2),內(nèi)部閃存內(nèi)容不能通過(guò)調(diào)試進(jìn)行更新,或者當(dāng)從SRAM或系統(tǒng)內(nèi)存引導(dǎo)程序啟動(dòng)時(shí)也不能更新。
因此對(duì)最終產(chǎn)品的一個(gè)重要要求就是,能夠?qū)?nèi)部閃存中的固件升級(jí)為新的固件版本,添加新功能并修正潛在問(wèn)題。該需求可以通過(guò)實(shí)現(xiàn)用戶專用固件來(lái)解決,使用諸如USART的通信協(xié)議來(lái)進(jìn)行重新編程過(guò)程,從而執(zhí)行內(nèi)部閃存的應(yīng)用內(nèi)編程(IAP)。
關(guān)于IAP的更多詳細(xì)內(nèi)容,請(qǐng)參考應(yīng)用筆記AN3965,可在www.st.com上獲取。
1.2 寫(xiě)保護(hù)
寫(xiě)保護(hù)用來(lái)保護(hù)指定內(nèi)存區(qū)域的內(nèi)容,避免更新或擦除代碼段或非易失性數(shù)據(jù)。
1.2.1 閃存寫(xiě)保護(hù)
寫(xiě)保護(hù)區(qū)域的數(shù)量取決于閃存架構(gòu)。對(duì)于STM32L4和STM32L4+系列,每個(gè)閃存中可以以2KB粒度定義最多2個(gè)區(qū)域。STM32G4 3類設(shè)備能夠以單分區(qū)或雙分區(qū)工作。
? 在單分區(qū)模式(DBANK = 0)中,最多能夠以4 KB的粒度定義四個(gè)寫(xiě)保護(hù)區(qū)域。
? 在雙分區(qū)模式(DBANK = 1)中,最多可以定義兩個(gè)寫(xiě)保護(hù)區(qū)域每個(gè)存儲(chǔ)庫(kù)中2 KB的粒度。
STM32G4 Cat2設(shè)備只能在單個(gè)閃存庫(kù)中工作。能夠以2 KB粒度定義兩個(gè)寫(xiě)保護(hù)區(qū)域。
圖 1中的灰色區(qū)域是具有兩個(gè)粒度為2 KB的寫(xiě)保護(hù)(WRP)區(qū)域的雙分區(qū)結(jié)構(gòu)的示例。

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

長(zhǎng)按掃碼關(guān)注公眾號(hào)
更多資訊,盡在STM32
▽點(diǎn)擊“閱讀原文”,可下載原文檔
原文標(biāo)題:應(yīng)用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護(hù)
文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
單片機(jī)
+關(guān)注
關(guān)注
6078文章
45592瀏覽量
673986 -
STM32
+關(guān)注
關(guān)注
2313文章
11195瀏覽量
374754
原文標(biāo)題:應(yīng)用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護(hù)
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM32L151xC和STM32L152xC微控制器:低功耗設(shè)計(jì)的理想之選
STM32F334x4/6/8微控制器:高性能與低功耗的完美結(jié)合
LAT1596一文說(shuō)明白STM32G4雙Bank啟動(dòng)與升級(jí)
深入剖析STM32L010F4/K4:低功耗32位MCU的卓越之選
STM32F042x4/STM32F042x6微控制器深度解析:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)
Atmel SAM4L系列微控制器:低功耗與高性能的完美結(jié)合
STM32F412xE/G微控制器:性能與應(yīng)用深度解析
LAT1596 一文說(shuō)明白 STM32G4 雙 Bank 啟動(dòng)與升級(jí)
STM32L072xx系列微控制器:低功耗設(shè)計(jì)的優(yōu)選之選
LAT1180+STM32L4R9 的 QuadSPI Flash 通訊速率不理想應(yīng)用筆記
AN5289 使用 STM32WB 系列微控制器構(gòu)建射頻應(yīng)用筆記
?基于STM32G474的數(shù)字電源控制板設(shè)計(jì)解析與應(yīng)用指南
STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊(cè)
手機(jī)APP遠(yuǎn)程控制,智能家居監(jiān)測(cè)、智能控制系統(tǒng)(STM32L4、服務(wù)器、安卓源碼)實(shí)例項(xiàng)目打包下載
昂科燒錄器支持ST意法半導(dǎo)體的超低功耗微控制器STM32L4S5VIT
應(yīng)用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護(hù)
評(píng)論