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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ARM ATF入門-安全固件軟件介紹和代碼運行

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

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

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

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

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

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

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

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

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

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

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

  1. EL0:非安全態的Apps,安全態的Trusted Apps,EL0是無特權模式,所有APP應用都在EL0。

  2. EL1:非安全態的Normal world OS,安全態的Trusted OS ,EL1是一個特權模式,能夠執行一些特權指令,用于運行各類操作系統例如LinuxFreeRTOS、TEE等)。

  3. EL2:Hypervisor虛擬層

  4. EL3:Secure Monitor,Arm trusted firmware安全固件,EL3具有最高管理權限,是一個微型的runtime系統,為OS提供服務,負責安全監測和Secure World和Normal World之間的切換。

關于ARM體系結構的基礎知識可以自己找資料看看。OS下面的軟件有Hypervisor和Securemonitor。Hypervisor是虛擬機,后續有機會了介紹下,本文聚焦到Secure monitor

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

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

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

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

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

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

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

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

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

BL32:是所謂的secure os,運行在Secure mode。在ARM平臺下是ARM 家的 Trusted Execution Environment(TEE)實現。OP-TEE 是基于ARMTrustZone硬件架構所實現的軟件Secure OS。

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

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

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

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

詳細為:

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

2. ATF代碼下載編譯運行

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

	

編譯完成后在當前目錄下生成u-boot.bin

2.2 qemu運行ATF

首先需要qemu,執行

qemu-system-aarch64 –version

看下系統是否安裝過,如果沒安裝過,需要安裝:


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

	

有了qemu,然后新建一個run目錄,把各個鏡像軟連接進來:

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目錄執行命令:

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已經啟動了,我們輸入u-boot支持的version命令會有輸出。

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

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9164

    瀏覽量

    368878
  • OS
    OS
    +關注

    關注

    0

    文章

    92

    瀏覽量

    34795
  • 軟件
    +關注

    關注

    69

    文章

    5007

    瀏覽量

    87998

原文標題:ARM ATF入門-安全固件軟件介紹和代碼運行

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

收藏 人收藏

    評論

    相關推薦

    安全微控制器的固件

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

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

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

    Arm的領域管理擴展(RME)介紹

    軟件或TrustZone固件不能訪問。由于這個地址空間,Arm CCA構造了受保護的執行環境,稱為領域。 領域允許保護權限較低的軟件,如應用程序或虛擬機(VM)其內容。領域還可以防止
    發表于 08-02 11:40

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

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

    ARM入門 Study ARM Step by Step

    ARM入門 Study ARM Step by Step本文從學習者的角度出發,分別描述了下面幾個部分內容:ARM編程的基本知識,BOOT代碼
    發表于 02-10 10:57 ?193次下載

    在Vitis中調試ARM可信固件和U-boot

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

    UM1467_STM32F4DISCOVERY 套件的軟件固件環境入門

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

    UM1523_STM32F0DISCOVERY探索套件軟件固件環境入門

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

    UM1562_STM32F3DISCOVERY探索套件軟件固件環境入門

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

    UM2262_X_CUBE_SBSFU安全啟動和固件更新軟件入門

    UM2262_X_CUBE_SBSFU安全啟動和固件更新軟件入門
    發表于 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通信

    當Linux想要關機或者休眠的時候,這涉及到整個系統電源狀態的變化,為了安全性Linux內核沒有權利去直接執行了,需要陷入到EL3等級去執行,可以參考之前文章ARM ATF入門-
    的頭像 發表于 07-16 11:25 ?5587次閱讀
    <b class='flag-5'>ARM</b> SCP<b class='flag-5'>入門</b>-AP與SCP通信

    車規MCU的安全啟動固件

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

    ATF啟動流程介紹

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

    ATF的啟動過程介紹

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

    python軟件怎么運行代碼

    理解的機器代碼。 在本文中,我們將詳細介紹如何運行Python代碼。我們將探討以下幾個方面:安裝Python,設置環境變量,選擇一個集成開發環境(IDE)或文本編輯器,編寫
    的頭像 發表于 11-28 16:02 ?958次閱讀
    主站蜘蛛池模板: 嗯好大好猛皇上好深用力 | 99蜜桃在线观看免费视频网站 | 精品免费久久久久久影院 | 操老太太的逼 | 在线看片福利无码网址 | 国产成a人片在线观看视频99 | 国产高潮久久精品AV无码 | 精品视频免费在线 | 精品麻豆一卡2卡三卡4卡乱码 | 大胸美女洗澡扒奶衣挤奶 | 女人和男人插曲视频大全 | 香蕉尹人综合精品 | 精品亚洲一区二区在线播放 | 嘟嘟嘟WWW在线观看视频高清 | 香港成人社区 | 久久se精品一区二区国产 | 国产免费不卡 | 日韩精品 中文字幕 有码 | 99精品国产第一福利网站 | 97人人看碰人免费公开视频 | 大学生第一次破女在线观看 | 海角国精产品一区一区三区糖心 | 亚洲午夜久久久精品电影院 | 一边捏奶头一边啪高潮会怎么样 | 5g在视影讯天天5g免费观看 | 超碰在线视频地址 | 97欧美精品大香伊蕉在人线 | 疯狂做受XXXX高潮欧美日本 | 忘忧草在线影院www日本 | 韩国伦理片2018在线播放免费观看 | 亚洲 欧美 国产 综合 在线 | 欧美精品AV无码一区二区 | 嫩草影院久久国产精品 | 成人AV精品视频 | 67194con免费福和视频 | 久久精品国产亚洲精品2020 | 精品无码无人网站免费视频 | 精品免费久久久久久影院 | 啪啪做羞羞事小黄文 | 久久久久婷婷国产综合青草 | 在线观看永久免费网站 |