0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(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)驗(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è)固件。)

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

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的概念)

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é)啟動(dòng)TEE和雙系統(tǒng)切換。

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

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

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

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

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

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

異常特權(quán)等級之間的跳轉(zhuǎn)模型都是通過同步異?;虍惒疆惓_M(jìn)行的:

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

進(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?

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

審核編輯 :李倩

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

收藏 人收藏

    評論

    相關(guān)推薦

    折疊屏2024的新東西、好東西、舊東西

    折疊屏2024的新東西、好東西、舊東西
    的頭像 發(fā)表于 12-21 16:05 ?3048次閱讀
    折疊屏2024的新<b class='flag-5'>東西</b>、好<b class='flag-5'>東西</b>、舊<b class='flag-5'>東西</b>

    FDC2114手冊說的shield和gnd是具體連擊到哪里

    請問手冊說的shield和gnd是具體連擊到哪里?有點(diǎn)搞不明白,做了測試感覺沒效果啊!
    發(fā)表于 12-16 08:03

    LMX2820DBLR_CAL_EN和INSTCAL_DBLR_EN如果不使用即時(shí)校準(zhǔn)是否需要打開?

    您好,關(guān)于DBLR_CAL_EN和INSTCAL_DBLR_EN如果不使用即時(shí)校準(zhǔn)是否需要打開?我看到手冊DBLR_CAL_EN的默認(rèn)值是1,INSTCAL_DBLR_EN的默認(rèn)值是0,而
    發(fā)表于 11-11 07:11

    INA111BP的Offset Voltage的TYP欄“+-100+-500/G”(uV)表示什么意思?

    數(shù)據(jù)手冊“Offset Voltage”不太會(huì)看。例如 INA111BP的 Offset Voltage的TYP欄“+-100+-500/G”(uV)表示什么意思?望專家前輩指教指教哦
    發(fā)表于 09-23 07:02

    INA118U的封裝是什么?另外紅色框的是什么東西?

    我想問問INA118U的封裝是什么?另外紅色框的是什么東西?
    發(fā)表于 09-20 13:47

    多封裝的運(yùn)放芯片,沒有使用的運(yùn)放管腳怎么處理

    如題,一個(gè)芯片中封裝了多個(gè)運(yùn)放,沒有使用的運(yùn)放管腳怎么處理?
    發(fā)表于 09-18 08:11

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

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

    電源模塊是什么東西

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

    如何燒錄程序進(jìn)入自己畫的CYW20829板?

    Hi,請問如何燒錄程序進(jìn)入自己畫的CYW20829板?可以使用20829EVK的J11來實(shí)現(xiàn)么?或者有沒有其它的燒錄工具?
    發(fā)表于 05-28 07:01

    晶振的誤差是怎么回事?如何有效控制晶振誤差的出現(xiàn)?

    不是所有的東西都完美無瑕疵,就像電子產(chǎn)品都會(huì)出現(xiàn)一定的誤差一個(gè)道理。今天小編將要說的就是晶振誤差的相關(guān)問題,晶振的誤差是怎么回事?
    的頭像 發(fā)表于 05-09 14:33 ?1074次閱讀

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

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

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

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

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

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

    扼流圈是什么東西呀?作用?

    扼流圈是一種電感器,通常由線圈纏繞在磁芯上構(gòu)成。它在電子設(shè)備和電路中起著重要的作用,能夠阻止高頻交流電流的通過,同時(shí)允許低頻率的交變電流和直流電流通過。
    的頭像 發(fā)表于 01-30 10:35 ?6293次閱讀

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

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