作者簡介
baron,九年手機(jī)安全/SOC底層安全開發(fā)經(jīng)驗(yàn)。擅長trustzone/tee安全產(chǎn)品的設(shè)計(jì)和開發(fā)。是國內(nèi)較早一批做TEE的,對商用TEE、開源TEE研究也比較深入,對未來的安全架構(gòu)/安全趨勢也有著明確的看法...
1、什么是ATF
首先什么是TF-A(ATF)?ATF就是一個(gè)固件, 一段代碼,一個(gè)為armv7-A/armv8-A/armv9-A提供的參考實(shí)現(xiàn)代碼。(注意,這只是參考實(shí)現(xiàn),你也可以不用ATF,用自己寫的一個(gè)固件。)
2、那么ATF里都包括哪些東西呢?
最初的功能很簡單:
cpu_context的保存和恢復(fù),即: 雙系統(tǒng)的切換
電源管理、PSCI等
但是隨著技術(shù)的發(fā)展,功能也越來越多,越來越復(fù)雜,以下列舉了當(dāng)前的部分功能:
安全世界的初始化,例如異常向量表、一些控制寄存器和中斷寄存器
CPU reset和power down的時(shí)序。包括Arm DynamIQ cpu的支持
標(biāo)準(zhǔn)的system IP的驅(qū)動(dòng),例如Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI), Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone Controller (TZC).
一種通用的SCMI驅(qū)動(dòng)程序, 適用于電源控制接口,例如ARM SYSTEM Control Processor(SCP)
smc處理,using an EL3 runtime services framework
PSCI庫的支持,用于CPU/Cluster/system的電源管理,這個(gè)庫集成到了aarch64 el3的runtime中,也適用于aarch32 el3
secure monitor代碼,用于world切換、中斷routing
SPDs for the OP-TEE Secure OS, NVIDIA Trusted Little Kernel and Trusty Secure OS
SecureBoot實(shí)現(xiàn)
預(yù)集成TBB與Arm CryptoCell產(chǎn)品,利用其硬件Root的信任和加密加速服務(wù)。
3、ATF定義的啟動(dòng)模型
ATF將鏡像進(jìn)行了劃分,BL1 BL2屬于啟動(dòng)引導(dǎo)鏡像,BL3屬于runtime鏡像。BL3又分為BL31 BL32 BL33對應(yīng)的分別是ATF Runtime、REE Runtime、TEE Runtime。
(注:本文是Quick Start,不深入解釋這些概念,請自行理解:BL1 BL2 BL31 BL32 BL33的概念、EL3 S-EL1 NS-EL1的概念)
4、ATF的rt_svc介紹(runtime service)
4.1、SPD(opteed)舉例
例如負(fù)責(zé)雙系統(tǒng)切換的SPD,它是 OEN_TOS的RT-Service,它負(fù)責(zé)啟動(dòng)TEE和雙系統(tǒng)切換。
補(bǔ)充雙系統(tǒng)切換時(shí)寄存器的保存和恢復(fù)模型( switchcpu_context模型)
5、ATF參與的多系統(tǒng)交互模型
特權(quán)等級、security State之間的交互模型,ATF是一段跑在EL3特權(quán)等級的代碼。如下是一個(gè)特權(quán)等級、security State之間的切換模型,可以看出所有的交互和跳轉(zhuǎn)都是通過異常向量表進(jìn)行的。
異常特權(quán)等級之間的跳轉(zhuǎn)模型都是通過同步異?;虍惒疆惓_M(jìn)行的:
進(jìn)入ATF的方式觸發(fā)異常:同步異常(不限于smc)、異步異常(irq,fiq,serror)
? 如果是同步異常,那么會(huì)判斷是不是smc調(diào)用觸發(fā)的同步異常,如果是則進(jìn)入跳轉(zhuǎn)ATF中異常向量表中的同步異常程序smchandler64或smchandler32 在該程序中,解析smc id,來選擇跳轉(zhuǎn)到具體哪一個(gè)rt-svc(runtime service)
? 如果是異步異常,那么一定是觸發(fā)了irq或fiq或serror中斷等,此時(shí)進(jìn)入跳轉(zhuǎn)ATF中異常向量表中的異步異常程序,進(jìn)而跳轉(zhuǎn)到響應(yīng)的中斷處理函數(shù)。
6、ATF如何處理業(yè)務(wù)邏輯的呢
那么ATF里都有哪些業(yè)務(wù)邏輯呢,如何區(qū)分和處理的呢?
當(dāng)有異常進(jìn)來后,進(jìn)行一些判斷,如您是同步異常還是異步異常? 如果是異步異常,那么你是 dosomething 還是 轉(zhuǎn)發(fā)中斷 ?如果是同步異常,那么你是 dosomething,還是執(zhí)行 RT-Service?
審核編輯 :李倩
-
驅(qū)動(dòng)程序
+關(guān)注
關(guān)注
19文章
848瀏覽量
48161 -
代碼
+關(guān)注
關(guān)注
30文章
4821瀏覽量
68889
原文標(biāo)題:ATF快速掃盲(Quick Start)
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論