STM32L5在trustzone使能情況下使用,需要用戶根據應用要求,規劃好Flash和SRAM上的安全區域和非安全區域。由于trustzone環境下CPU對存儲區訪問規則的限制,這套規劃方案會涉及到幾方面的設置
? IDE的鏈接文件
? 選項字節配置:Flash WM、啟動地址
? 寄存器配置:GTZC、SAU
目前STM32CubeL5固件包里所有例程采用相同的存儲區域劃分方案
? 區域劃分粒度較粗,不太符合實際應用需求
? 512K片上Flash
前256K作為安全區域
后256K作為非安全區域
前256K安全區域里的結尾8K用作NSC區域
? 256K片上SRAM
前96K作為安全區域
后160K作為非安全區域
TZ使能時訪問規則回顧:(存儲區上的)取指

(點擊圖片可放大查看)
TZ使能時訪問規則回顧:存儲區上的數據訪問

(點擊圖片可放大查看)
分析
我們以STM32CubeL5固件包里GPIO_Toggle_TrustZone例子來分析
? 當前的默認存儲區劃分方案,是如何通過以下措施來實現的
? 寄存器配置:GTZC、SAU
? 選項字節配置:Flash WM、啟動地址
? IDE的鏈接文件
? 然后按照自己的應用需求,修改對應配置
原有存儲區域劃分方案

(點擊圖片可放大查看)
原有存儲區域劃分方案的實現. SAU配置

(點擊圖片可放大查看)
原有存儲區域劃分方案的實現. 物理存儲區配置

(點擊圖片可放大查看)
原有存儲區域劃分方案的實現. IDE鏈接文件
以IAR為例
Linker文件里區域的指定,要和SAU、物理存儲區域的實際安全設定、啟動地址,相匹配

(點擊圖片可放大查看)
目標:根據應用需求調整存儲區域劃分方案

(點擊圖片可放大查看)
修改選項字節

(點擊圖片可放大查看)
修改GTZC.MPCBB配置

(點擊圖片可放大查看)
修改SAU配置

(點擊圖片可放大查看)
修改代碼

(點擊圖片可放大查看)
修改linker文件

(點擊圖片可放大查看)
END