女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

armv8/armv9的執行狀態的跳轉和切換

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:baron ? 2022-05-16 09:54 ? 次閱讀

作者簡介

baron (網名:代碼改變世界ctw),九年手機安全/SOC底層安全開發經驗。擅長trustzone/tee安全產品的設計和開發

思考:1、我們知道arm有2個執行狀態:aarch32/aarch64,他們之間是如何跳轉,如何切換的/2、我們知道arm有4個安全狀態:secure security/non-secure security/ Root/ Realm,他們之間是如何跳轉,如何切換的?3、我們知道arm有4個特權級別:secure security/non-secure security,他們之間是如何跳轉,如何切換的?4、在開機啟動是,有著不同的階段,如bootrom、bootloader、kernel,他們都是64位的?他們之間都是怎樣跳轉和切換的?5、uboot怎樣切換到Linux Kernel的?

說明:1、以下知識點,看似簡單和清晰,實則零散在整個10000多頁的 ARM TRM之中,另外也有許多理論知識在實踐中不常見。所以也許會有描述不準確的地方(但但致都是準確的),精確的學習還是請以 ARM TRM官方文檔為準。2、本文講解的主要是armv8/armv9架構。

1、前言

注意本文標題所說的“程序之間的跳轉模型”,主要講解如下這么樣子的大系統大程序之中:

5c6f4804-d4ac-11ec-bce3-dac502259ad0.png

啟動時鏡像之間是如何跳轉的

runtime是鏡像之間是如何跳轉的

閱讀本文需要一點點基礎,請自行補習:

4個特權等級、4個安全狀態、2個執行狀態

啟動模型中的BL1 BL2 BL31 BL32 BL33的概念

2、4個特權等級/4個安全狀態之間的跳轉模型

先弄懂最最最基礎的本質原理,10000多頁的 ARM TRM文檔散裝了很多場景, 我們總結之后再總結,最后濃縮成了下面這一張框圖,通常我們也只要理解下面這張圖就可以了:

5cc5de9e-d4ac-11ec-bce3-dac502259ad0.png

其中:

EL0的所有異常(同步異常和異步異常)都可以將core切到EL1中

EL1的所有異步異常、hvc/smc指令 都可以將core切到EL2中

EL2的所有異步異常、smc指令 都可以將core切到EL3中

所有的返回指令,都是ERET

其實呢,下面這種情況也是可以出現的,(只不過呢查略大多數代碼,我都沒有找到這樣使用的例子)

5d1b1350-d4ac-11ec-bce3-dac502259ad0.png

另外呢svc也是可以被trapped到EL2的,EL3調用ERET返回EL1時,也是可以被EL2 trapped的,即下面這種情況也是可以出現的, (只不過呢查略大多數代碼,我也沒有找到這樣使用的例子)

5d3f530a-d4ac-11ec-bce3-dac502259ad0.png

3、啟動時鏡像之間的跳轉模型

由于這些底層的東西,都會和具體的SOC廠家的設計強相關,所以我們也就只好介紹common的場景。

很多人都學習過Secure Boot或是即將學習Secure boot,他們的重點也許都放在了如何簽名驗簽的地方。那么你知道BL1到BL2是怎樣跳轉?uboot到kernel是怎樣跳轉的嗎?

以下是參在TF-A代碼做出的總結,當然了也是比較理想的場景:

5d988560-d4ac-11ec-bce3-dac502259ad0.png

可是在你的實際使用中:

BL32可能不是S-EL1,也是有可能是S-EL2的

BL33可能不是EL1,也是有可能是EL2的

BL1 BL2 BL33 BL32 BL33 每一級鏡像,也許不是aarch64的,也許是aarch32的

如上的場景中,看似也就那么回事吧,無非就是不同特權等級之間,調用同步異常指令或返回指令,切來切去而已。那么如果是相同的特權等級,那么如何切換呢?

如uboot(EL1)到kernel(EL1), 至少有以下三種方式(其實我還能列出第4種第5種,這里留給大家思考):

5db45844-d4ac-11ec-bce3-dac502259ad0.png

如下再展示了一個稍微復雜的場景,aarch64和aarch32摻雜地使用,也許你的SOC就是這樣設計的哦:

5e043396-d4ac-11ec-bce3-dac502259ad0.png

4、runtime程序之間的跳轉模型

5e3bff7e-d4ac-11ec-bce3-dac502259ad0.png

在runtime模型中,你的cpu可能會同時在aarch32和aarch64之間運行,aarch32和aarch64之間的切換,其實也很好理解,模型如下所示,就是進入高特權等級,切換一下cpu context而已。

5e5cd668-d4ac-11ec-bce3-dac502259ad0.png

燃鵝,以上依然是最理想的場景吧。在實際使用中,也許你會有各種各樣的需求,例如:我不想跳轉特權等級,但還想切換執行狀態。比如你的SOC實現定義了EL3,你的EL3既aarch32的程序,也有aarch64的程序,那么兩個程序是如何切換的呢?

5e850bce-d4ac-11ec-bce3-dac502259ad0.png

這個時候,利用同步異常/異步異常的知識點已經無法滿足需求了,可能就得利用架構中的warm reset技術了。例如,你可以在aarch32的程序中去寫RMREL3的相關比特,觸發warm reset, cpu復位進入提前設置好的RVBAREL3的地址出,進入aarch64程序。其實還真有很多廠家,使用這種方式完成的鏡像之間的跳轉。

原文標題:armv8/armv9不同特權程序之間的跳轉模型

文章出處:【微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

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

    關注

    134

    文章

    9304

    瀏覽量

    374927
  • Linux
    +關注

    關注

    87

    文章

    11456

    瀏覽量

    212755
  • runtime
    +關注

    關注

    0

    文章

    17

    瀏覽量

    2266

原文標題:armv8/armv9不同特權程序之間的跳轉模型

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Arm下一代指令架構“Armv9”已經問世

    Arm的下一代CPU指令集架構(ISA:指令集架構) Armv9開始推出。該公司正在逐步擴展當前的ISA Armv8,而擴展的高潮最終將成為Armv9的搭建橋梁。至于Armv9,一位C
    的頭像 發表于 11-13 11:55 ?4.5w次閱讀

    ARM重新定義ARMv8新架構,ARMv8新架構特性解說

    本文從ARMv8-A產生的背景開始,對它進行一個簡單的介紹,使大家從整體上,對ARMv8有一個簡單的了解。
    的頭像 發表于 10-08 17:02 ?1.1w次閱讀
    ARM重新定義<b class='flag-5'>ARMv8</b>新架構,<b class='flag-5'>ARMv8</b>新架構特性解說

    ARMV8/ARMV9為什么會有執行狀態切換呢?

    在一個大系統中,我們所說這它是64位的,還是32位的,往往說的是kernel內核。
    發表于 09-08 15:40 ?1030次閱讀
    <b class='flag-5'>ARMV8</b>/<b class='flag-5'>ARMV9</b>為什么會有<b class='flag-5'>執行狀態</b>的<b class='flag-5'>切換</b>呢?

    ARMv8架構資料分享

    ,大大提升了處理器的性能。從目前的的了解來看,基本上 ARMv8 與上代架構的差別是非常大的。除了 A64 指令集之外,還有許多地方都有較大改動,下面列出幾個目前比較關注的點:  · 執行狀態與異常級別
    發表于 03-21 14:50

    ARMv8架構的兩種執行狀態分別是什么

    、A64與A32的切換對于A32來說,ARM和thumb的切換,通過bx指令即可切換。但是對于A64和A32兩種執行狀態,只能通過異常,進行切換
    發表于 04-06 10:49

    armv8架構中Arch32切換到Arch64是如何運作的

    各位大神,armv8架構中,如果Arch32要去切換到Arch64,是如何運作的?狀態會清空嗎?
    發表于 06-06 16:13

    ARM Cortex-A系列ARMv8-A程序員指南

    ARMv8-A是針對應用配置文件的最新一代ARM架構。 在本書中,名稱ARMv8用于描述整個體系結構,它現在包括32位執行狀態和64位執行狀態。 A
    發表于 08-22 07:22

    重磅!Arm正式推出Armv9架構

    V8架構發布于2011年10月。 Arm首席執行官Simon Segars說:“當我們預測到AI將定義未來時,我們必須為領先的計算打下基礎,為即將到來的獨特挑戰做好準備?!?“Armv9將處于下一個3000億Arm芯片的最前沿,
    發表于 03-31 09:43 ?2788次閱讀
    重磅!Arm正式推出<b class='flag-5'>Armv9</b>架構

    淺談ARM發布Armv9的三大改進

    英國芯片設計公司Arm周二發布了Armv9,這是其在2011年發布Armv8之后十年來首次推出新的芯片架構。Arm表示,與以前的架構相比,Armv9提供了三大主要改進,即安全性更高,更好的AI性能,以及總體上速度更快。
    的頭像 發表于 04-01 15:17 ?2554次閱讀

    Arm微架構之Armv9時代

    在介紹Armv9系列前,我們先看一下ARM的Cortex-X定制CPU計劃。Cortex-X方案先于Armv9發布,在Arm發布A78時,同時也發布了Cortex-X1這一顆性能強大的CPU,后續大家習慣稱之為超級大核。
    的頭像 發表于 02-06 14:43 ?9629次閱讀

    Armv8架構和Armv9架構的區別分析

    新的Armv9兼容CPU所承諾的最大的新功能可能是開發人員和用戶可以立即看到的——SVE2作為NEON的后繼產品。
    發表于 03-10 14:02 ?6424次閱讀

    Armv9Armv8服務器有何不同

    新的Armv9兼容CPU所承諾的最大的新功能可能是開發人員和用戶可以立即看到的——SVE2作為NEON的后繼產品。 可伸縮矢量擴展(SVE)的于2016年首次亮相,并首次在富士通的A64FX CPU內核中實現,該芯片已為日本排名第一的超級計算機Fukagu提供支持。
    發表于 03-29 14:02 ?990次閱讀

    Armv8架構及虛擬化介紹

    ARMv8基本概念 (1)執行狀態(execution state):處理器運行時的環境,包括寄存器的位寬、支持的指令集、異常模型、內存管理及編程模型等。ARMv8體系結構定義了兩個執行
    的頭像 發表于 04-16 10:45 ?7311次閱讀

    ARMv8工作模式有哪些

    ),虛擬機管理器 EL3:最底層的安全固件,如 ARM Trusted Firmware(ATF/TF-A) ARMv8 提供了兩種安全狀態:Secure 和 Non-secure,也就是安全和非安全,Non-secure 也就是正常
    的頭像 發表于 09-11 16:34 ?2100次閱讀
    <b class='flag-5'>ARMv8</b>工作模式有哪些

    u-boot armv8鏈接腳本

    u-boot armv8鏈接腳本 在進行源碼分析之前,首先看看u-boot的鏈接腳本,通過鏈接腳本可以從整體了解一個u-boot的組成,并且可以在啟動分析中知道某些邏輯是在完成什么工作。 在
    的頭像 發表于 12-07 11:19 ?929次閱讀