在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

ARM ATF入門-安全固件軟件介紹和代碼運(yùn)行

yzcdx ? 來源:OS與AUTOSAR研究 ? 2023-02-03 17:19 ? 次閱讀

大家都知道硬件之上是軟件,本公眾號(hào)主要介紹“OS與AUTOSAR”,那么除了這兩種類型的軟件,是否還有別的軟件?本文以ARM SOC硬件為例,“打破砂鍋,問到底”,來看看還有哪些軟件我們沒接觸到,在OS之下和SOC硬件之上的,各種賣給我們底層軟件的廠商(一般都是SOC芯片原廠)所掩蓋的核心技術(shù),另外結(jié)合開源代碼進(jìn)行理解。

  1. 1.OS之下,SOC硬件之上有什么軟件?

我們?cè)诙ㄎ籓S的問題的時(shí)候突然一個(gè)SMC指令之后的代碼找不到了,代碼不在OS里面也不在u-boot里面,到底在哪里,之后的運(yùn)行又是什么,帶著這個(gè)問題,我們“打破砂鍋問到底”,看看到底怎么回事。

在之前的文章AUTOSAR入門-汽車電子構(gòu)架演進(jìn)(四) 未來已來,有一個(gè)NXP汽車軟件方案圖,可以同時(shí)支持AP和BP,很經(jīng)典,我們回顧下:

f32f15e2-a3a2-11ed-bfe3-dac502259ad0.png

可以看到標(biāo)識(shí)的是Firmware(固件),我們首先會(huì)想到這就像電腦里面的BIOS,焊在電腦主板上的一個(gè)存儲(chǔ)芯片,開機(jī)啟動(dòng)的時(shí)候,CPU尋址就會(huì)去執(zhí)行里面的代碼。那么這個(gè)東西的確是個(gè)軟件啊,有軟件就有代碼,有代碼就有開源的,來一起盤它。

NXP的圖,以功能為核心是給客戶看的,掩蓋了其使用ARM技術(shù)的細(xì)節(jié),也就是軟件實(shí)現(xiàn)的細(xì)節(jié),并不能直接反映ARM軟件的框架。然后重新起個(gè)高大上的模塊名字,好忽啊,我們直接來看ARM的特權(quán)級(jí)(重要:本文以下都是針對(duì)ArmA核):

f39ce0b8-a3a2-11ed-bfe3-dac502259ad0.png

這個(gè)圖了解ARM的都太熟悉了,EL(exception level)就是異常等級(jí),為什么會(huì)有異常等級(jí),那就是特權(quán)(privilege),不同的軟件有不同的特權(quán),EL0的特權(quán)最小,只能運(yùn)行App,EL3的特權(quán)是最大的,也就是說對(duì)所有硬件的訪問權(quán)限也是最大的。

ARMv8分為SecureWorld和Non-Secure World(NormalWorld),四種異常級(jí)別從高到低分別為EL3,EL2,EL1,EL0。

  1. EL0:非安全態(tài)的Apps,安全態(tài)的Trusted Apps,EL0是無特權(quán)模式,所有APP應(yīng)用都在EL0。

  2. EL1:非安全態(tài)的Normal world OS,安全態(tài)的Trusted OS ,EL1是一個(gè)特權(quán)模式,能夠執(zhí)行一些特權(quán)指令,用于運(yùn)行各類操作系統(tǒng)例如LinuxFreeRTOS、TEE等)。

  3. EL2:Hypervisor虛擬層

  4. EL3:Secure Monitor,Arm trusted firmware安全固件,EL3具有最高管理權(quán)限,是一個(gè)微型的runtime系統(tǒng),為OS提供服務(wù),負(fù)責(zé)安全監(jiān)測(cè)和Secure World和Normal World之間的切換。

關(guān)于ARM體系結(jié)構(gòu)的基礎(chǔ)知識(shí)可以自己找資料看看。OS下面的軟件有Hypervisor和Securemonitor。Hypervisor是虛擬機(jī),后續(xù)有機(jī)會(huì)了介紹下,本文聚焦到Secure monitor。

Secure monitor到底是什么,如下圖中紅框中:

f3cd7836-a3a2-11ed-bfe3-dac502259ad0.png

其中有U-Boot大家都比較熟悉,是一個(gè)bootloader, bootloader程序會(huì)先初始化 DDR等外設(shè),然后將 Linux內(nèi)核從 flash(NAND NOR FLASH SD MMC等 )拷貝到 DDR中,最后啟動(dòng) Linux內(nèi)核。后續(xù)有文章再詳細(xì)介紹。

這里我們看BL1、BL2、BL31、BL32、BL33是什么東西,下面介紹下ATF的概念:

ATF:Arm TrustedFirmware(ARM安全固件),運(yùn)行在EL3異常級(jí)別,ATF為Armv7-A 和 Armv8-A提供了一些安全可信固件。具體包括上面說的:ATF= BL1、BL2、BL31、BL32、BL33,其中BL33有就是U-Boot。都運(yùn)行在EL3模式。具體為:

BL1:也叫bootrom,rom的意思就是只讀的,具有最高的執(zhí)行權(quán)限EL3,在 CPU 出廠時(shí)就被寫死了。為什么要寫死,這里有一個(gè)安全驅(qū)動(dòng)概念(Secure Boot)。CPU上電啟動(dòng)的時(shí)候,加載鏡像的順序?yàn)锽L1 -》 BL2 -》 BL31 -》 BL32 -》BL33(uboot)-》OS(Linux),但是如果其中的一個(gè)鏡像被換掉了怎么辦?這里不是說網(wǎng)絡(luò)攻擊換掉,就是物理上拿到電路板,然后把存儲(chǔ)SD卡拔掉換了自己的OS,那不是想干啥就干啥,完全控制了硬件設(shè)備,俗稱“越獄”。答案就是沒一個(gè)鏡像進(jìn)行簽名校驗(yàn)。

例如BL33加載OS,需要OS鏡像算出hash利用私鑰加密,然后BL31在加載OS的時(shí)候會(huì)讀取這個(gè)加密的Hash,利用自己的公鑰解密,解密后的hash是對(duì)的就進(jìn)行加載。那么這么一級(jí)一級(jí)按照加密向前傳遞,那第一個(gè)根BL1如果可以在SD卡上偽造,那校驗(yàn)就沒用了。所以BL1需要只讀,并且作為只讀硬件直接搞進(jìn)到CPU里面,你從板子上也拆不下來,更替換不了。因?yàn)橐獙懰赖紺PU內(nèi)部,所以獨(dú)立出來了,也是其由來的原因。

BL2:BL2在flash中的一段可信安全啟動(dòng)代碼,主要完成一些平臺(tái)相關(guān)的初始化,比如對(duì)ddr的初始化等。因?yàn)锽L31和BL32是一個(gè)runtime,也就是上電后一直運(yùn)行的程序,那么需要加載到內(nèi)存里面,需要先初始化內(nèi)存ddr,BL2就干這個(gè)事情的。所謂的Loder。

BL31:作為EL3最后的安全堡壘,它不像BL1和BL2是一次性運(yùn)行的。如它的runtime名字暗示的那樣,它通過SMC指令為Non-Secure OS持續(xù)提供設(shè)計(jì)安全的服務(wù),在Secure World和Non-Secure World之間進(jìn)行切換。是對(duì)硬件最基礎(chǔ)的抽象,對(duì)OS提供服務(wù)。例如一個(gè)EL3級(jí)別的特權(quán)指令,比如關(guān)機(jī)、休眠等OS是無權(quán)處理的,就會(huì)交給BL31來繼續(xù)操作硬件處理。

BL32:是所謂的secure os,運(yùn)行在Secure mode。在ARM平臺(tái)下是ARM 家的 Trusted Execution Environment(TEE)實(shí)現(xiàn)。OP-TEE 是基于ARMTrustZone硬件架構(gòu)所實(shí)現(xiàn)的軟件Secure OS。

一般在BL32會(huì)運(yùn)行OPTee OS + 安全app,它是一個(gè)可信安全的OS運(yùn)行在EL1并在EL0啟動(dòng)可信任APP(如指紋信息,移動(dòng)支付的密碼等),并在Trust OS運(yùn)行完成后通過SMC指令返回BL31,BL31切換到Non-Seucre World繼續(xù)執(zhí)行BL33。關(guān)于OPTEE和Secure mode及TurstZone的機(jī)制,有機(jī)會(huì)再寫一個(gè)文章介紹。

BL33:這里就是Normal Wrold了,運(yùn)行的都是非安全固件,也就是我們常見的UEFI firmware或者u-boot,也可能是直接啟動(dòng)Linux kernel。

啟動(dòng)BL1,BL2,BL31,BL32則是一個(gè)完整的ATF信任鏈建立流程(ARM Trusted Firmware),像常見的PSCI(Power State Coordination Interface)功能則是在ATF的BL31上實(shí)現(xiàn)。對(duì)基本概念有認(rèn)識(shí)了后,你就知道OS之下還有的這些軟件通常稱為ATF,其啟動(dòng)流程如下:

f3fb4afe-a3a2-11ed-bfe3-dac502259ad0.png

詳細(xì)為:

f40eb274-a3a2-11ed-bfe3-dac502259ad0.png

2. ATF代碼下載編譯運(yùn)行

2.1 ATF代碼下載編譯

ATF代碼下載:


	
git clone https://github.com/ARM-software/arm-trusted-firmware.git
ATF代碼編譯:

	
makeCROSS_COMPILE=aarch64-linux-gnu-PLAT=qemuDEBUG=1all

f4303fca-a3a2-11ed-bfe3-dac502259ad0.png

編譯完成后在arm-trusted-firmware/build/qemu/debug目錄下生成bl1.bin、bl2.bin、bl31.bin。

ATF的BL33使用的u-boot,代碼下載:


	
git clone https://source.denx.de/u-boot/u-boot.git
編譯:

	
cd u-boot
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make qemu_arm64_defconfig
make -j8

	

編譯完成后在當(dāng)前目錄下生成u-boot.bin。

2.2 qemu運(yùn)行ATF

首先需要qemu,執(zhí)行

qemu-system-aarch64 –version

看下系統(tǒng)是否安裝過,如果沒安裝過,需要安裝:


	
git clone https://git.qemu.org/git/qemu.git
cd qemu
./configure --target-list=aarch64-softmmu --prefix=
make -j8
sudo make install

	

有了qemu,然后新建一個(gè)run目錄,把各個(gè)鏡像軟連接進(jìn)來:

mkdir run
cd run
ln-s ~/arm/arm-trusted-firmware/build/qemu/debug/bl1.binbl1.bin
ln-s~/arm/arm-trusted-firmware/build/qemu/debug/bl2.bin bl2.bin
ln-s ~/arm/arm-trusted-firmware/build/qemu/debug/bl31.binbl31.bin
ln -s ~/arm/u-boot/u-boot.bin bl33.bin

在run目錄執(zhí)行命令:

qemu-system-aarch64-nographic-machine virt,secure=on
-cpu cortex-a53 
-smp 2 -m 2048 
-d guest_errors,unimp 
-bios ./bl1.bin 
-semihosting-config enable=on,target=native

f44e39a8-a3a2-11ed-bfe3-dac502259ad0.png

可以看到u-boot已經(jīng)啟動(dòng)了,我們輸入u-boot支持的version命令會(huì)有輸出。

這里主要分析ATF,qemu只加載了ATF包括u-boot。如果想一塊加載Linux可以參考:https://zhuanlan.zhihu.com/p/521196386

審核編輯 :李倩


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

    關(guān)注

    134

    文章

    9111

    瀏覽量

    368034
  • OS
    OS
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    34778
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4973

    瀏覽量

    87734

原文標(biāo)題:ARM ATF入門-安全固件軟件介紹和代碼運(yùn)行

文章出處:【微信號(hào):OS與AUTOSAR研究,微信公眾號(hào):OS與AUTOSAR研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    安全微控制器的固件庫(kù)

    ?強(qiáng)烈建議TI開發(fā)Hercules? ARM?安全微控制器的固件庫(kù)?。。☆愃芐T的STM32系列的固件庫(kù)!安全不單強(qiáng)調(diào) MCU的硬件
    發(fā)表于 05-22 01:15

    關(guān)于TF-A(ATF)固件的基本知識(shí)詳解

    1、什么是ATF首先什么是TF-A(ATF)?ATF就是一個(gè)固件, 一段代碼,一個(gè)為armv7-A/armv8-A/armv9-A提供的參考
    發(fā)表于 06-15 16:57

    Arm的領(lǐng)域管理擴(kuò)展(RME)介紹

    軟件或TrustZone固件不能訪問。由于這個(gè)地址空間,Arm CCA構(gòu)造了受保護(hù)的執(zhí)行環(huán)境,稱為領(lǐng)域。 領(lǐng)域允許保護(hù)權(quán)限較低的軟件,如應(yīng)用程序或虛擬機(jī)(VM)其內(nèi)容。領(lǐng)域還可以防止
    發(fā)表于 08-02 11:40

    ATMEL CPLD ATF15XX器件的下載軟件 (for

    ATMEL CPLD ATF15XX器件的下載軟件 (for Windows)
    發(fā)表于 03-21 11:52 ?45次下載

    ARM入門 Study ARM Step by Step

    ARM入門 Study ARM Step by Step本文從學(xué)習(xí)者的角度出發(fā),分別描述了下面幾個(gè)部分內(nèi)容:ARM編程的基本知識(shí),BOOT代碼
    發(fā)表于 02-10 10:57 ?193次下載

    在Vitis中調(diào)試ARM可信固件和U-boot

    在本篇博文中,我們將探討如何在 Vitis 中調(diào)試 Zynq UltraScale 器件啟動(dòng)鏡像。這些啟動(dòng)鏡像包括 ARM 可信固件 (ATF) 和 U-boot。
    的頭像 發(fā)表于 08-02 10:14 ?3698次閱讀
    在Vitis中調(diào)試<b class='flag-5'>ARM</b>可信<b class='flag-5'>固件</b>和U-boot

    UM1467_STM32F4DISCOVERY 套件的軟件固件環(huán)境入門

    UM1467_STM32F4DISCOVERY 套件的軟件固件環(huán)境入門
    發(fā)表于 11-22 08:21 ?0次下載
    UM1467_STM32F4DISCOVERY 套件的<b class='flag-5'>軟件</b>和<b class='flag-5'>固件</b>環(huán)境<b class='flag-5'>入門</b>

    UM1523_STM32F0DISCOVERY探索套件軟件固件環(huán)境入門

    UM1523_STM32F0DISCOVERY探索套件軟件固件環(huán)境入門
    發(fā)表于 11-22 08:22 ?0次下載
    UM1523_STM32F0DISCOVERY探索套件<b class='flag-5'>軟件</b>與<b class='flag-5'>固件</b>環(huán)境<b class='flag-5'>入門</b>

    UM1562_STM32F3DISCOVERY探索套件軟件固件環(huán)境入門

    UM1562_STM32F3DISCOVERY探索套件軟件固件環(huán)境入門
    發(fā)表于 11-22 08:22 ?1次下載
    UM1562_STM32F3DISCOVERY探索套件<b class='flag-5'>軟件</b>與<b class='flag-5'>固件</b>環(huán)境<b class='flag-5'>入門</b>

    UM2262_X_CUBE_SBSFU安全啟動(dòng)和固件更新軟件入門

    UM2262_X_CUBE_SBSFU安全啟動(dòng)和固件更新軟件入門
    發(fā)表于 11-22 19:16 ?0次下載
    UM2262_X_CUBE_SBSFU<b class='flag-5'>安全</b>啟動(dòng)和<b class='flag-5'>固件</b>更新<b class='flag-5'>軟件</b><b class='flag-5'>入門</b>

    ARM SCP入門-AP與SCP通信

    當(dāng)Linux想要關(guān)機(jī)或者休眠的時(shí)候,這涉及到整個(gè)系統(tǒng)電源狀態(tài)的變化,為了安全性Linux內(nèi)核沒有權(quán)利去直接執(zhí)行了,需要陷入到EL3等級(jí)去執(zhí)行,可以參考之前文章ARM ATF入門-
    的頭像 發(fā)表于 07-16 11:25 ?5452次閱讀
    <b class='flag-5'>ARM</b> SCP<b class='flag-5'>入門</b>-AP與SCP通信

    車規(guī)MCU的安全啟動(dòng)固件

    安全啟動(dòng)固件(Secure Boot Firmware) 車規(guī)MCU的安全啟動(dòng)固件(Secure Boot Firmware)是一種用于保護(hù)汽車電子系統(tǒng)免受惡意
    的頭像 發(fā)表于 10-27 17:20 ?2345次閱讀
    車規(guī)MCU的<b class='flag-5'>安全</b>啟動(dòng)<b class='flag-5'>固件</b>

    ATF啟動(dòng)流程介紹

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

    ATF的啟動(dòng)過程介紹

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

    python軟件怎么運(yùn)行代碼

    理解的機(jī)器代碼。 在本文中,我們將詳細(xì)介紹如何運(yùn)行Python代碼。我們將探討以下幾個(gè)方面:安裝Python,設(shè)置環(huán)境變量,選擇一個(gè)集成開發(fā)環(huán)境(IDE)或文本編輯器,編寫
    的頭像 發(fā)表于 11-28 16:02 ?915次閱讀
    主站蜘蛛池模板: 一级毛片一级毛片| 夜操| 天天摸夜夜添夜夜添国产| 欧美色欧美色| 亚洲欧美人成网站综合在线| 好黄好硬好爽好刺激| 爽天天天天天天天| www.色五月.com| 簧 色 成 人| 欧美人另类zooz| 色操网| 午夜免费看片| 好紧好湿好黄的视频| semm亚洲欧美在线高清| 国产精品资源网站在线观看| 天堂w| 成人丁香乱小说| 国产精品久久久久久久免费| 边摸边吃奶边做视频叫床韩剧| 人人揉揉香蕉大青草| 国产午夜视频| 久久国产午夜精品理论片34页| 午夜 在线播放| 影音先锋色天使| freesex欧美| 色综合亚洲天天综合网站| 天天狠天天插| 国产一级鲁丝片| 4438x全国免费| 亚洲综合免费| h网站在线| 99久久国产免费中文无字幕| 美女被网站免费看九色视频| 性瘾高h姚蕊全文免费阅读| 久久久五月天| 手机在线色| 天天舔天天摸| 一个人看的www片免费高清视频| 特级全黄一级毛片免费| 色视网站| 欧美色婷婷天堂网站|