0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ATF里都包括哪些東西呢?

Linux閱碼場 ? 來源:代碼改變世界ctw ATF ? 作者:代碼改變世界ctw ? 2022-06-08 09:56 ? 次閱讀

作者簡介

baron,九年手機(jī)安全/SOC底層安全開發(fā)經(jīng)驗。擅長trustzone/tee安全產(chǎn)品的設(shè)計和開發(fā)。是國內(nèi)較早一批做TEE的,對商用TEE、開源TEE研究也比較深入,對未來的安全架構(gòu)/安全趨勢也有著明確的看法...

1、什么是ATF

首先什么是TF-A(ATF)?ATF就是一個固件, 一段代碼,一個為armv7-A/armv8-A/armv9-A提供的參考實現(xiàn)代碼。(注意,這只是參考實現(xiàn),你也可以不用ATF,用自己寫的一個固件。)

b06f37a4-e6c0-11ec-ba43-dac502259ad0.png

2、那么ATF里都包括哪些東西呢?

最初的功能很簡單:

cpu_context的保存和恢復(fù),即: 雙系統(tǒng)的切換

電源管理、PSCI等

但是隨著技術(shù)的發(fā)展,功能也越來越多,越來越復(fù)雜,以下列舉了當(dāng)前的部分功能:

安全世界的初始化,例如異常向量表、一些控制寄存器和中斷寄存器

CPU reset和power down的時序。包括Arm DynamIQ cpu的支持

標(biāo)準(zhǔn)的system IP的驅(qū)動,例如Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI), Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone Controller (TZC).

一種通用的SCMI驅(qū)動程序, 適用于電源控制接口,例如ARM SYSTEM Control Processor(SCP)

smc處理,using an EL3 runtime services framework

PSCI庫的支持,用于CPU/Cluster/system的電源管理,這個庫集成到了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實現(xiàn)

預(yù)集成TBB與Arm CryptoCell產(chǎn)品,利用其硬件Root的信任和加密加速服務(wù)。

3、ATF定義的啟動模型

ATF將鏡像進(jìn)行了劃分,BL1 BL2屬于啟動引導(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的概念)

b0ae77de-e6c0-11ec-ba43-dac502259ad0.png

4、ATF的rt_svc介紹(runtime service)

b0de612e-e6c0-11ec-ba43-dac502259ad0.png

4.1、SPD(opteed)舉例

例如負(fù)責(zé)雙系統(tǒng)切換的SPD,它是 OEN_TOS的RT-Service,它負(fù)責(zé)啟動TEE和雙系統(tǒng)切換。

b10927a6-e6c0-11ec-ba43-dac502259ad0.png

補充雙系統(tǒng)切換時寄存器的保存和恢復(fù)模型( switchcpu_context模型)

b12ec0ba-e6c0-11ec-ba43-dac502259ad0.png

5、ATF參與的多系統(tǒng)交互模型

特權(quán)等級、security State之間的交互模型,ATF是一段跑在EL3特權(quán)等級的代碼。如下是一個特權(quán)等級、security State之間的切換模型,可以看出所有的交互和跳轉(zhuǎn)都是通過異常向量表進(jìn)行的。

b15ad8d0-e6c0-11ec-ba43-dac502259ad0.png

異常特權(quán)等級之間的跳轉(zhuǎn)模型都是通過同步異常或異步異常進(jìn)行的:

b178a37e-e6c0-11ec-ba43-dac502259ad0.png

進(jìn)入ATF的方式觸發(fā)異常:同步異常(不限于smc)、異步異常(irq,fiq,serror)

? 如果是同步異常,那么會判斷是不是smc調(diào)用觸發(fā)的同步異常,如果是則進(jìn)入跳轉(zhuǎn)ATF中異常向量表中的同步異常程序smchandler64或smchandler32 在該程序中,解析smc id,來選擇跳轉(zhuǎn)到具體哪一個rt-svc(runtime service)

? 如果是異步異常,那么一定是觸發(fā)了irq或fiq或serror中斷等,此時進(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?

b1c34230-e6c0-11ec-ba43-dac502259ad0.png

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動程序
    +關(guān)注

    關(guān)注

    19

    文章

    798

    瀏覽量

    47777
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67770

原文標(biāo)題:ATF快速掃盲(Quick Start)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    在ESP32使用esp-idf框架該如何獲取系統(tǒng)上電時間?

    ESP8266面可以通過 esp_get_time()函數(shù) 獲取系統(tǒng)上電時間, 在 ESP32 使用 esp-idf 框架 該如何獲取系統(tǒng)上電時間? 謝謝
    發(fā)表于 06-19 07:13

    電源模塊是什么東西

    電源模塊是什么東西 電源模塊是一種電子設(shè)備,用于將輸入的電能轉(zhuǎn)換為所需的電壓和電流,以滿足各種電子設(shè)備和系統(tǒng)的需求。電源模塊的設(shè)計和制造涉及到多個領(lǐng)域,包括電力電子、控制理論、熱設(shè)計、電磁兼容性等
    的頭像 發(fā)表于 06-10 16:20 ?982次閱讀

    智慧教室建設(shè)內(nèi)容包括哪些?探索教育的未來

    的重要手段。那么,廣凌智慧教室建設(shè)內(nèi)容包括哪些方面?本文將對此進(jìn)行詳細(xì)探討。廣凌智慧教室建設(shè)內(nèi)容包括高效的信息技術(shù)設(shè)施。這是智慧教室最基本的配置,
    的頭像 發(fā)表于 02-23 18:41 ?322次閱讀
    智慧教室建設(shè)內(nèi)容<b class='flag-5'>包括</b>哪些?探索教育的未來

    請問core2的程序可以直接使用core1的全局變量嗎?

    如題,core2的程序可以直接使用core1的全局變量嗎?就是不同核之前可以直接通信嗎?是否還需要配置一些東西才能實現(xiàn)核間通信?
    發(fā)表于 02-20 08:05

    請問GTM模塊的ATOM和TOM有什么區(qū)別?

    如題,GTM模塊的ATOM和TOM有什么區(qū)別?
    發(fā)表于 02-06 06:35

    USB字符串描述符里面的序列號字符串到底是什么東西?

    在設(shè)備描述符里面,有一個表示序列號字符串描述符的編號,請問這個序列號字符串的描述符是什么東西? 廠商字符串和設(shè)備字符串都能理解,而且在電腦的“設(shè)備與打印機(jī)”里面找到了。但請問這個序列號字符串有什么用
    發(fā)表于 01-24 08:06

    電機(jī)振動都要查哪些東西?

    請教個問題 ,電機(jī)振動都要查哪些東西? 一臺高壓10KV 450KW高壓電機(jī),送修好幾次了,還是振動, 負(fù)載是水泵。
    發(fā)表于 12-12 06:42

    非變頻電機(jī)配變頻器,要注意哪些東西?

    非變頻電機(jī)配變頻器,要注意哪些東西? 另外環(huán)境溫度與機(jī)使用有什么關(guān)系? 電機(jī)溫升與絕緣有什么樣的關(guān)系??
    發(fā)表于 12-11 07:44

    什么是差分輸出方式?什么東西會影響差分輸出幅值?

    什么是差分輸出方式?什么東西會影響差分輸出幅值? 差分輸出方式是一種電路設(shè)計技術(shù),常用于提取信號的變化情況,以及對信號進(jìn)行放大和處理。它可以將輸入信號通過差動放大器進(jìn)行放大,然后輸出兩個相位
    的頭像 發(fā)表于 11-20 16:36 ?1914次閱讀

    ATF中bl32的啟動方法

    ATF中bl32的啟動 bl31中的runtime_svc_init函數(shù)會初始化OP-TEE對應(yīng)的服務(wù),通過調(diào)用該服務(wù)項的初始化函數(shù)來完成OP-TEE的啟動。對于OP-TEE的服務(wù)項會通
    的頭像 發(fā)表于 11-07 16:32 ?477次閱讀
    <b class='flag-5'>ATF</b>中bl32的啟動方法

    code層面 ATF中bl1的啟動

    系統(tǒng)上電之后首先會運行ChipRom,之后會跳轉(zhuǎn)到ATF的bl1中繼續(xù)執(zhí)行。bl1主要初始化CPU、設(shè)定異常向量、將bl2的鏡像加載到安全RAM中,然后跳轉(zhuǎn)到bl2中開始運行。 bl1的主要代碼
    的頭像 發(fā)表于 11-07 15:53 ?795次閱讀
    code層面 <b class='flag-5'>ATF</b>中bl1的啟動

    ATF的啟動過程介紹

    ATF的啟動過程根據(jù)ARMv8的運行模式(AArch32/AArch64)會有所不同,但基本一致。 在AArch32中是不會去加載bl31而是將EL3或者M(jìn)onitor模式的運行代碼保存在bl32中
    的頭像 發(fā)表于 11-07 15:48 ?1037次閱讀
    <b class='flag-5'>ATF</b>的啟動過程介紹

    C語言內(nèi)存五大區(qū)詳解

    相信各位讀者應(yīng)該聽過堆棧,那么它們是一個東西,還是兩個東西,它們有啥區(qū)別,這就是這篇推文
    的頭像 發(fā)表于 11-03 09:25 ?873次閱讀
    C語言內(nèi)存五大區(qū)詳解

    ATF啟動流程介紹

    一、BL32(TEE OS)的準(zhǔn)備 ATF啟動流程 ATF流程 ATF冷啟動實現(xiàn)分為5個步驟: ? BL1 - AP Trusted ROM,一般為BootRom。 ? BL2 - Trusted
    的頭像 發(fā)表于 11-02 17:51 ?1015次閱讀
    <b class='flag-5'>ATF</b>啟動流程介紹

    自研的regression腳本yrun都有哪些東西?

    yrun是處芯積律自研的regression腳本,yrun都有哪些東西?
    的頭像 發(fā)表于 10-12 09:26 ?1237次閱讀
    自研的regression腳本yrun都有哪些<b class='flag-5'>東西</b><b class='flag-5'>呢</b>?