軟件提供商正在開發被稱為IP(知識產權)代碼的復雜中間件解決方案,保護它們對微控制器而言是一個非常重要的問題。為了滿足這一重要要求,STM32L4、STM32L4 +和STM32G4系列MCU可提供以下保護功能:
? 讀取保護(RDP):防止進行讀取操作
? 寫保護:防止進行不需要的寫入或擦除操作
? 專利代碼讀取保護(PCROP):防止在閃存和SRAM存儲器上進行讀寫操作。
? 防火墻:針對外部進程為敏感代碼和數據提供訪問保護。
本應用筆記對這些閃存保護功能進行了說明,重點介紹了專利代碼讀取保護(PCROP),并提供了PCROP保護的基本示例。防火墻保護(在STM32L4和STM32L4 +系列上可用)在www.st.com上的“ STM32L0 / L4防火墻概述”(AN4729)中進行了介紹。
目錄預覽
1 單分區存儲器保護說明
2PCROP示例
3 結論
1.單分區存儲器保護說明
基于Arm(a)內核的STM32L4、STM32L4+和STM32G4系列微控制器采用多種機制,可對整個存儲器或特定存儲段進行讀寫保護。讀保護用于保護代碼免受外部訪問的轉儲(SW IP保護),而寫保護用于保護代碼或數據不被意外改寫或擦除。除閃存外,這些保護還擴展到STM32L4和STM32L4+系列的SRAM2,以及STM32G4系列的CCM(內核耦合存儲器)SRAM。STM32L4xx MCU還具有防火墻機制,可在存儲器中創建受信執行區域。
1.1 讀取保護(RDP)
讀取保護是全局閃存讀保護,可保護片內固件代碼,可以預防復制、逆向工程、使用調試工具讀出或其他方式的入侵攻擊。該保護應在二進制代碼載入片內閃存后,由用戶進行設置。讀取保護適用于:
? SRAM2(STM32L4/STM32L4+)或CCM-SRAM(STM32G4)
? 選項字節(僅限級別 2)。以下章節中對三個RDP級別(0,1和2)進行定義和描述
1.1.1 讀保護級別0
級別0是默認級別,閃存完全打開,可在所有引導配置(調試功能,從RAM、從系統內存引導加載程序或從閃存啟動)下進行全部內存操作。在這種模式下沒有保護,該模式可滿足開發和調試需求。
1.1.2 讀保護級別1
激活讀保護級別1時,即使是從SRAM或系統內存引導加載程序來啟動,也不能使用調試功能(如串行線路或JTAG)分別訪問(讀取,擦除和編程)STM32L4/L4+和STM32G4系列的閃存或SRAM2和CCM-SRAM。在這些情況下,任何對受保護區域的讀請求都會生成總線錯誤。
但是,當從閃存啟動時,則允許從用戶代碼訪問閃存和SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)。
將RDP選項字節重新編程為級別0,可禁用RDP級別1保護,這會導致閃存被批量擦除;而且SRAM2(STM32L4/L4+)或CCM-SRAM(STM32G4)和備份寄存器會復位。
1.1.3 讀保護級別2
激活RDP級別2時,級別1下提供的所有保護均有效,MCU受到全面保護。RDP選項字節和所有其他選項字節都會被凍結,不能再修改。JTAG、SWV(單線查看器)、ETM和邊界掃描全部禁用。
從閃存啟動時,用戶代碼可以訪問內存內容。但是,不再能從SRAM或從系統內存引導加載程序啟動。這種保護是不可逆的(JTAG熔斷),所以不能回到保護級別1或0。
表 1根據保護級別和執行模式總結讀取訪問權限。
? ?1.1.4 受RDP保護的STM32內部閃存內容更新
當Flash RDP保護激活時(級別1或級別2),內部閃存內容不能通過調試進行更新,或者當從SRAM或系統內存引導程序啟動時也不能更新。
因此對最終產品的一個重要要求就是,能夠將內部閃存中的固件升級為新的固件版本,添加新功能并修正潛在問題。該需求可以通過實現用戶專用固件來解決,使用諸如USART的通信協議來進行重新編程過程,從而執行內部閃存的應用內編程(IAP)。
關于IAP的更多詳細內容,請參考應用筆記AN3965,可在www.st.com上獲取。
1.2 寫保護
寫保護用來保護指定內存區域的內容,避免更新或擦除代碼段或非易失性數據。
1.2.1 閃存寫保護
寫保護區域的數量取決于閃存架構。對于STM32L4和STM32L4+系列,每個閃存中可以以2KB粒度定義最多2個區域。STM32G4 3類設備能夠以單分區或雙分區工作。
? 在單分區模式(DBANK = 0)中,最多能夠以4 KB的粒度定義四個寫保護區域。
? 在雙分區模式(DBANK = 1)中,最多可以定義兩個寫保護區域每個存儲庫中2 KB的粒度。
STM32G4 Cat2設備只能在單個閃存庫中工作。能夠以2 KB粒度定義兩個寫保護區域。
圖 1中的灰色區域是具有兩個粒度為2 KB的寫保護(WRP)區域的雙分區結構的示例。
受保護區域無法被擦除和編程,任何寫請求都會產生寫保護錯誤。如果要擦除/編程的地址屬于閃存中處于寫保護狀態的區域,則通過硬件將WRPERR標志置位。例如,如果閃存中至少有一頁是寫保護的,則不能對其進行批量擦除,并且設置WRPERR標志。
可通過嵌入式用戶代碼或使用STM32 ST-Link Utility軟件和調試接口,進行使能或禁用寫保護管理
1.2.2SRAM2 CCM-SRAM寫保護
在STM32L4/L4 +上,32KB的SRAM2可以通過1 KB頁面單獨進行寫保護。該保護的設置由32位系統配置寄存器進行控制,并在啟用后,只有系統復位才能對其進行禁用。
在STM32G4中,CCM-SRAM也可以通過1 KB的段進行寫保護(3類設備為32 KB,2類設備為10 KB)。
本文檔隨附的X-CUBE-PCROP固件封裝包含了PCROP示例的源代碼,以及基于STM32L4系列微控制器運行示例所需的所有固件模塊,并且該封裝可輕松移植到STM32L4 +和STM32G4系列微控制器上。
本應用筆記必須與產品數據手冊以及以下參考手冊一起閱讀,這些參考手冊可從www.st.com獲得:
? RM0351(STM32L4x5xx、STM32L4x6xx)
? RM0392 (STM32L4x1xx)? RM0394(STM32L43xxx、STM32L44xxx、STM32L45xxx、STM32L46xxx)
? RM0432(STM32L4Rxxx和STM32L4Sxxx)
? RM0440 (STM32G4xx)
文章篇幅有限僅展示部分,完整內容請點擊“閱讀原文”下載原文檔。
長按掃碼關注公眾號
更多資訊,盡在STM32
▽點擊“閱讀原文”,可下載原文檔
原文標題:應用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護
文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
-
單片機
+關注
關注
6039文章
44579瀏覽量
636436 -
STM32
+關注
關注
2270文章
10910瀏覽量
356579
原文標題:應用筆記|STM32L4、STM32L4+和STM32G4系列微控制器上的專利代碼讀取保護
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論