《瑞薩RA產(chǎn)品家族初學(xué)者指南》系列文章已收錄成合集,歡迎點擊上方查看合集并訂閱!
11. 安全性和TrustZone
本章目錄
-
什么是TrustZone,它有什么作用?
-
安全環(huán)境和非安全環(huán)境的劃分
-
器件生命周期管理
-
TrustZone用例
11.2 安全環(huán)境和非安全環(huán)境的劃分
現(xiàn)在我們已經(jīng)清楚,程序需要劃分為安全和非安全環(huán)境,我們該如何相應(yīng)地對軟件進(jìn)行分區(qū)?為此,基于TrustZone的系統(tǒng)始終包含兩個不同的項目:一個安全項目,另一個是非安全項目。二者都可以利用SRAM以及代碼和數(shù)據(jù)閃存,但只有安全代碼可以直接訪問兩個(安全和非安全)分區(qū)。
可借助e2 studio中的項目配置器設(shè)置這些項目。創(chuàng)建新項目后,系統(tǒng)將提示您選擇項目應(yīng)具有的類型:
-
扁平化(非TrustZone)項目
-
TrustZone安全項目
-
TrustZone非安全項目

圖11-4:通過項目配置器的“Type Selector”(類型選擇器)頁面,可以在扁平化、安全和非安全項目之間進(jìn)行選擇
請注意,如果選擇扁平化(非TrustZone)項目,則微控制器將在引導(dǎo)后保持安全模式。另外,在設(shè)置TrustZone項目時需要格外小心,以確保正確管理安全和非安全分區(qū)之間的連接。在項目配置器中創(chuàng)建非安全項目時,將非安全項目與安全項目或捆綁包進(jìn)行關(guān)聯(lián)以實現(xiàn)此要求。在“Project Type Selection”(項目類型選擇)屏幕上選擇“TrustZone Non-secure Project”(TrustZone非安全項目)并單擊“Next”(下一步)后,e2 studio將要求您為非安全項目指定一個對應(yīng)的安全項目。
創(chuàng)建安全項目后,即可將安全的堆和驅(qū)動程序提供給非安全環(huán)境。為此,右鍵單擊最上面的模塊,從彈出的菜單中選擇“Non-secure Callable”(非安全可調(diào)用)。選擇該條目后,請注意左側(cè)的小箭頭:它指示此模塊現(xiàn)在為非可安全調(diào)用模塊(參見圖11-5)。

圖11-5:可以將安全項目中堆棧的最頂層模塊設(shè)為非安全可調(diào)用模塊
最后一點是,也可以在e2 studio內(nèi)對內(nèi)存進(jìn)行分區(qū):轉(zhuǎn)到“Run → Renesas Device Partition Manager”(運行 → 瑞薩器件分區(qū)管理器),將運行一個實用程序。器件分區(qū)管理器可以在開發(fā)期間執(zhí)行生命周期狀態(tài)管理,另外還允許設(shè)置和查詢IDAU區(qū)域,以及解鎖已擦除的閃存模塊。

圖11-6:器件分區(qū)管理器可以定義各種內(nèi)存分區(qū)的大小
如果要深入了解用于配置RA產(chǎn)品家族微控制器專用的Arm TrustZone的工具和相關(guān)工作流程,您可以識別下方二維碼或復(fù)制對應(yīng)的網(wǎng)址在瀏覽器中打開查看瑞薩網(wǎng)站上提供的RA Arm TrustZone工具入門,介紹有關(guān)使用工具和設(shè)置項目的基礎(chǔ)知識:

https://www.renesas.cn/cn/zh/document/apn/ra-arm-trustzone-tooling-primer
11.2.1 跨邊界的函數(shù)調(diào)用
現(xiàn)在,如果位于非安全環(huán)境的應(yīng)用程序的一部分要調(diào)用位于安全環(huán)境的閃存外設(shè),以對非安全數(shù)據(jù)閃存進(jìn)行編程,會發(fā)生什么情況?為此,Arm v8M Cortex-M33內(nèi)核的指令集中添加了一條新指令:SG或安全網(wǎng)關(guān)。該指令必須位于內(nèi)存的安全和非安全部分之間的非安全可調(diào)用(NSC)區(qū)域。這可確保即使在安全環(huán)境的其他位置找到SG操作碼,也不能將其用作入口點。在SG指令之后,可以對安全端的代碼進(jìn)行調(diào)用(參見圖11-7)。

圖11-7:從非安全環(huán)境中調(diào)用安全函數(shù)
將通過BXNS LR(BXNS = 跳轉(zhuǎn)并交換到非安全狀態(tài))操作碼從安全端返回到非安全端,此操作將跳轉(zhuǎn)到BL Func_A_Entry分支期間放置在鏈接寄存器(LR)中的地址。在函數(shù)返回時,函數(shù)的返回狀態(tài)被存儲在LR中返回地址的LSB中。這一位的數(shù)值將和返回到調(diào)用函數(shù)時的狀態(tài)進(jìn)行比較,以防止從非安全代碼調(diào)用的安全API返回到一個指向安全地址的假返回地址。
在第一條指令不是NSC區(qū)域中的SG操作碼的情況下,執(zhí)行位于非安全環(huán)境中的代碼對安全環(huán)境中的代碼的調(diào)用,則在帶CM33內(nèi)核的微控制器上會發(fā)生安全故障。將在安全狀態(tài)下處理該故障。
還可以從安全代碼調(diào)用非安全代碼,但不建議這樣做,因為這有可能導(dǎo)致數(shù)據(jù)泄露,導(dǎo)致安全問題。安全代碼可以通過參數(shù)將某些寄存器值傳輸?shù)椒前踩h(huán)境,并且編譯器將從其余寄存器中清除其他安全數(shù)據(jù)。該機制還隱藏了安全軟件的返回地址,從而確保非安全環(huán)境中的代碼不會操縱返回地址(參見圖11-8)。

圖11-8:從安全環(huán)境中調(diào)用非安全函數(shù)
通過BLXNS(通過鏈接跳轉(zhuǎn)并交換到非安全狀態(tài))指令從安全代碼調(diào)用非安全代碼的推薦方法是:在第一次啟動時初始化安全環(huán)境中的代碼,然后將程序控制傳遞給非安全環(huán)境。此后,從非安全環(huán)境到安全環(huán)境的任何數(shù)據(jù)傳輸均應(yīng)通過FSP回調(diào)進(jìn)行管理。
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第11章(2)
文章出處:【微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
mcu
+關(guān)注
關(guān)注
146文章
17978瀏覽量
366663 -
瑞薩
+關(guān)注
關(guān)注
36文章
22382瀏覽量
88031
原文標(biāo)題:瑞薩RA產(chǎn)品家族初學(xué)者指南-第11章(2)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【RA-Eco-RA4M2開發(fā)板評測】初學(xué)瑞薩-使用瑞薩flash programmer燒錄程序
瑞薩RA8快速上手指南:Cortex-M85內(nèi)核瑞薩RA8開發(fā)環(huán)境搭建 并點亮一個LED

【瑞薩RA2L1入門學(xué)習(xí)】+開箱評測
【瑞薩RA2L1入門學(xué)習(xí)】RA2L1開發(fā)環(huán)境搭建
EE-269:以太網(wǎng)802.3初學(xué)者指南

瑞薩電子RZ MPU家族精品RZ/N2L產(chǎn)品介紹

評論