色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ARMv8分為SecureWorld和Non-Secure World(NormalWorld),四種異常級別從高到低分別為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是一個特權(quán)模式,能夠執(zhí)行一些特權(quán)指令,用于運(yùn)行各類操作系統(tǒng)例如LinuxFreeRTOS、TEE等)。

  3. EL2:Hypervisor虛擬層

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

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

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

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

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

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

ATF:Arm TrustedFirmware(ARM安全固件),運(yùn)行在EL3異常級別,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 出廠時就被寫死了。為什么要寫死,這里有一個安全驅(qū)動概念(Secure Boot)。CPU上電啟動的時候,加載鏡像的順序?yàn)锽L1 -》 BL2 -》 BL31 -》 BL32 -》BL33(uboot)-》OS(Linux),但是如果其中的一個鏡像被換掉了怎么辦?這里不是說網(wǎng)絡(luò)攻擊換掉,就是物理上拿到電路板,然后把存儲SD卡拔掉換了自己的OS,那不是想干啥就干啥,完全控制了硬件設(shè)備,俗稱“越獄”。答案就是沒一個鏡像進(jìn)行簽名校驗(yàn)。

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

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

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

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

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

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

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

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,然后新建一個run目錄,把各個鏡像軟連接進(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)啟動了,我們輸入u-boot支持的version命令會有輸出。

這里主要分析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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9091

    瀏覽量

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

    關(guān)注

    0

    文章

    91

    瀏覽量

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

    關(guān)注

    69

    文章

    4937

    瀏覽量

    87427

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    安全微控制器的固件

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

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

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

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

    軟件或TrustZone固件不能訪問。由于這個地址空間,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ā),分別描述了下面幾個部分內(nèi)容:ARM編程的基本知識,BOOT代碼
    發(fā)表于 02-10 10:57 ?193次下載

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

    在本篇博文中,我們將探討如何在 Vitis 中調(diào)試 Zynq UltraScale 器件啟動鏡像。這些啟動鏡像包括 ARM 可信固件 (ATF) 和 U-boot。
    的頭像 發(fā)表于 08-02 10:14 ?3605次閱讀
    在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安全啟動和固件更新軟件入門

    UM2262_X_CUBE_SBSFU安全啟動和固件更新軟件入門
    發(fā)表于 11-22 19:16 ?0次下載
    UM2262_X_CUBE_SBSFU<b class='flag-5'>安全</b>啟動和<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ī)或者休眠的時候,這涉及到整個系統(tǒng)電源狀態(tài)的變化,為了安全性Linux內(nèi)核沒有權(quán)利去直接執(zhí)行了,需要陷入到EL3等級去執(zhí)行,可以參考之前文章ARM ATF入門-
    的頭像 發(fā)表于 07-16 11:25 ?5357次閱讀
    <b class='flag-5'>ARM</b> SCP<b class='flag-5'>入門</b>-AP與SCP通信

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

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

    ATF啟動流程介紹

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

    ATF的啟動過程介紹

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

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

    理解的機(jī)器代碼。 在本文中,我們將詳細(xì)介紹如何運(yùn)行Python代碼。我們將探討以下幾個方面:安裝Python,設(shè)置環(huán)境變量,選擇一個集成開發(fā)環(huán)境(IDE)或文本編輯器,編寫
    的頭像 發(fā)表于 11-28 16:02 ?896次閱讀
    主站蜘蛛池模板: 福利一区福利二区| 两性午夜色视频免费网站| 男污女XO猛烈的动态图| 亚洲国产韩国欧美在线不卡| seba51久久精品| 久久亚洲成a人片| 亚洲 无码 在线 专区| 超碰在线视频97| 蜜桃成熟时2在线观看完整版hd| 亚洲国产精品无码中文在线| 耽肉高h喷汁呻吟| 欧美色图一区二区三区| 找老女人泻火对白自拍| 后入内射国产一区二区| 无码AV熟妇素人内射V在线| 成人免费观看在线视频| 欧美 亚洲 另类 综合网| 中国午夜伦理片| 久久精品国产免费| 亚洲精品色情婷婷在线播放| 国产精品九九九久久九九| 日本福利片午夜免费观着| 99久视频只有精品2019| 久久这里只有精品国产精品99| 久久精品无码一区二区日韩av| 午夜免费体验30分| 国产成人精品区在线观看| 人人舔人人爱| 糙汉顶弄抽插HHHH| 欧美色偷偷亚洲天堂bt| A国产一区二区免费入口| 男生插女生下体| 99国产精品偷窥熟女精品视频| 久久久精品久久| 在线伦理电影网| 久久免费高清| 中文免费视频| 美女穿丝袜被狂躁动态图| 666永久视频在线| 免费夜色污私人影院网站| 98色精品视频在线|