armv8/armv9不同特权程序之间的跳转模型

news2024/12/28 19:03:29

目录

        • 1、前言
        • 2、4个特权等级/4个安全状态之间的跳转模型
        • 3、启动时镜像之间的跳转模型
        • 4、runtime程序之间的跳转模型
        • 推荐

本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,secureboot,资深安全架构专家,11年手机安全/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、本文注重讲解基础原理。实战经验中,真的没办法去说,因为很多SOC厂家会视为他们的启动流程为机密吧,受到NDA保护。

如果你看到了这里 :,那么恭喜你,您已经看到了ARM最最最最精髓的地方了。我早就说过:学习安全其实就是学习ARM架构、学习ARM架构其实就是学习4个特权等级、4个安全状态、2个执行状态之间是如何切来切去的. 本文将详细介绍这些知识点。

1、前言

注意本文标题所说的“程序之间的跳转模型”,主要讲解如下这么样子的大系统大程序之中:
在这里插入图片描述

  • 启动时镜像之间是如何跳转的
  • runtime是镜像之间是如何跳转的

阅读本文需要一点点基础,请自行补习:

  • 4个特权等级、4个安全状态、2个执行状态
  • 启动模型中的BL1 BL2 BL31 BL32 BL33的概念
2、4个特权等级/4个安全状态之间的跳转模型

先弄懂最最最基础的本质原理,10000多页的ARM TRM文档散装了很多场景, 我们总结之后再总结,最后浓缩成了下面这一张框图,通常我们也只要理解下面这张图就可以了:
在这里插入图片描述
其中:

  • EL0的所有异常(同步异常和异步异常)都可以将core切到EL1中
  • EL1的所有异步异常、hvc/smc指令 都可以将core切到EL2中
  • EL2的所有异步异常、smc指令 都可以将core切到EL3中
  • 所有的返回指令,都是ERET

其实呢,下面这种情况也是可以出现的,(只不过呢查略大多数代码,我都没有找到这样使用的例子)
在这里插入图片描述
另外呢svc也是可以被trapped到EL2的,EL3调用ERET返回EL1时,也是可以被EL2 trapped的,即下面这种情况也是可以出现的, (只不过呢查略大多数代码,我也没有找到这样使用的例子)
在这里插入图片描述

3、启动时镜像之间的跳转模型

由于这些底层的东西,都会和具体的SOC厂家的设计强相关,所以我们也就只好介绍common的场景。

很多人都学习过Secure Boot或是即将学习Secure boot,他们的重点也许都放在了如何签名验签的地方。
那么你知道BL1到BL2是怎样跳转? uboot到kernel是怎样跳转的吗?

以下是参在TF-A代码做出的总结,当然了也是比较理想的场景:
在这里插入图片描述

可是在你的实际使用中:

  • BL32可能不是S-EL1,也是有可能是S-EL2的
  • BL33可能不是EL1,也是有可能是EL2的
  • BL1 BL2 BL33 BL32 BL33 每一级镜像,也许不是aarch64的,也许是aarch32的

如上的场景中,看似也就那么回事吧,无非就是不同特权等级之间,调用同步异常指令或返回指令,切来切去而已。那么如果是相同的特权等级,那么如何切换呢?

如uboot(EL1)到kernel(EL1), 至少有以下三种方式(其实我还能列出第4种第5种,这里留给大家思考):
在这里插入图片描述

如下再展示了一个稍微复杂的场景,aarch64和aarch32掺杂地使用,也许你的SOC就是这样设计的哦:
在这里插入图片描述

4、runtime程序之间的跳转模型

在这里插入图片描述
在runtime模型中,你的cpu可能会同时在aarch32和aarch64之间运行,aarch32和aarch64之间的切换,其实也很好理解,模型如下所示,就是进入高特权等级,切换一下cpu context而已。
在这里插入图片描述
燃鹅,以上依然是最理想的场景吧。在实际使用中,也许你会有各种各样的需求,例如:我不想跳转特权等级,但还想切换执行状态。
比如你的SOC实现定义了EL3,你的EL3既aarch32的程序,也有aarch64的程序,那么两个程序是如何切换的呢?

在这里插入图片描述
这个时候,利用同步异常/异步异常的知识点已经无法满足需求了,可能就得利用架构中的warm reset技术了。
例如,你可以在aarch32的程序中去写RMR_EL3的相关比特,触发warm reset, cpu复位进入提前设置好的RVBAR_EL3的地址出,进入aarch64程序。 其实还真有很多厂家,使用这种方式完成的镜像之间的跳转。


推荐
  • ARMv8/ARMv9架构从入门到精通 --博客专栏
  • 《Armv8/Armv9架构从入门到精通 第二期》 --大课程
  • 8天入门ARM架构 --入门课程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1508006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搜索组件的编写与数据的联动

src\components\SearchInput\index.vue 搜索组件编写 <template><div class"search-wrap"><input type"text":placeholder"placeholder":maxlength"maxlength":value"inputValue"input"searchData($ev…

力扣每日一题 找出数组的第 K 大和 小根堆 逆向思维(TODO:二分+暴搜)

Problem: 2386. 找出数组的第 K 大和 文章目录 思路复杂度&#x1f496; 小根堆&#x1f496; TODO&#xff1a;二分 暴搜 思路 &#x1f468;‍&#x1f3eb; 灵神题解 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂…

Python之Web开发中级教程----搭建Web框架一

准备环境&#xff1a;ubuntu,Python3.6.9 一、Web应用程序的原理 接收并解析HTTP请求&#xff0c;获取客户的请求信息->处理完成请求的业务逻辑->返回处理结果HTTP响应。 Web框架的架构是这样的&#xff1a; 基于python的web框架&#xff0c;如tornado、flask、webpy都是…

便宜的生骨肉冻干可以买吗?价格实惠、排行榜靠前的生骨肉冻干分享

养猫知识的不断普及&#xff0c;让生骨肉冻干喂养逐渐受到铲屎官的青睐。然而&#xff0c;价格仍是部分铲屎官的考虑因素。事实上&#xff0c;像我这样的资深铲屎官&#xff0c;早已开始生骨肉冻干喂养。虽然价格高于烘焙粮和膨化粮&#xff0c;但其对猫咪的健康益处显而易见。…

2024 年系统架构设计师(全套资料)

2024年5月系统架构设计师最新第2版教材对应的全套视频教程、历年真题及解析、章节分类真题及解析、论文写作及范文、教材、讲义、模拟题、答题卡等资料 1、2023年11月最新第2版本教材对应全套教程视频&#xff0c;2022年、2021年、2020年、2018年、2016年五套基础知识精讲视频、…

SIGMATEK西格玛泰克CPU模块控制器维修CCP531 12-104-531

Sigmatek的“解决方案”有两方面含义&#xff1a;一方面是指Sigmatek从控制系统、人机界面、伺服驱动系统直到开发平台&#xff0c;都能够提供解决方案&#xff1b;另一方面是指从方案的一开始&#xff0c;Sigmatek便能够位客户提供独特的、量身定做的产品实施方案。 Sigmatek产…

【3月11日】云服务器推荐-京东云上新1年档,阿里云活动页大改,16G6个月149高性价比服务器很隐蔽!

3月11日更新&#xff0c; 本文纯原创&#xff0c;侵权必究 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更新】云服务器1分钟教会你如何选择教程 https://docs.qq.com/document/DV0RCS0lGe…

Visual Studio 2019重装vs2019打不开.netcore项目

无法打开项目文件。 .NET SDK 的版本 7.0.306 至少需要 MSBuild 的 17.4.0 版本。当前可用的 MSBuild 版本为 16.11.2.50704。请将在 global.json 中指定的 .NET SDK 更改为需要当前可用的 MSBuild 版本的旧版本。 无法打开项目文件。 .NET SDK 的版本 7.0.306 至少需要 MSBui…

一次线上JVM GC 长暂停排查,加班搞了好久

背景 在高并发下&#xff0c;Java程序的GC问题属于很典型的一类问题&#xff0c;带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」&#xff0c;由于GC期间都存在Stop The World问题&#xff0c;因此很容易导致服务超时&#xff0c;引发性能问题。 事情…

特种劳动防护用品安全标志申办管理系统-144-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword144 说明 : 06年元旦前后的一个作品,里面涉及一个表格控件, 作出了ACCESS的表格控件的无限筛选,就是说,N个字段筛选后,还可以在此基础上继续筛选 :) 效果很COOL的 该系统有完整的附件存储,业务关系 ... 当然代码里少不…

自然语言处理(NLP)—— 词义消歧与词语相似性(Word similarity)

1. 词义消歧 1.1 词义消歧的概念 词义消歧&#xff08;Word Sense Disambiguation, WSD&#xff09;的概念及其在自然语言处理中的应用之一。词义消歧是确定一个词在特定语境下使用时所指的具体含义。 在提到的例子中&#xff0c;“Do you believe in clubs for young people?…

当金蝶遇上BI,马上就能看到数据可视化效果

最近整理咨询内容时发现&#xff0c;很多企业用户在咨询时都会问是否有行业案例&#xff0c;究其原因时他们没用过BI数据分析&#xff0c;不知道BI可以做什么&#xff0c;能做到什么地步。其实&#xff0c;要知道这些东西还不简单&#xff0c;只需要注册奥威BI软件&#xff0c;…

leetcode刷题(3):双指针和哈希表的使用

文章目录 1. 两数之和解题思路c实现 15. 三数之和解题思路c实现 11. 盛最多水的容器解题思路c实现 7. 整数反转解题思路c 实现 34. 在排序数组中查找元素的第一个和最后一个位置思路c实现 704. 二分查找解题思路c 实现 35.搜索插入位置解题思路c实现 153. 寻找旋转排序数组中的…

站库分离技术--反向代理技术-雷池云WAF-给自己搭建一个安全点的网站

文章目录 概要整体架构流程技术名词解释技术细节ssh-ubuntu服务器docker-映射-链接-通信nginx反代mysql设置数据库新密码 小结我的mysql映射目录我的wordpress映射目录 成果展示 概要 新买了一个云服务器&#xff0c;想搭建一个站库分离的wordpress为主的网站&#xff0c;采用d…

/etc/shadow文件详解

前言 /etc/shadow 是 Linux 系统中存储用户加密密码的文件&#xff0c;每行对应一个用户的加密信息。该文件只有系统管理员 root 用户可以访问。 字段详解 该文件的每一行包含 9 个字段&#xff0c;以冒号 (“:”) 分隔 用户名:加密密码:最后一次修改时间:最小修改时间间隔…

【人才测评】某冷库企业人才测评管理咨询项目纪实

企业都知道要重视优秀人才&#xff0c;要将合适的人安排到合适的岗位&#xff0c;但是&#xff0c;到底哪些人员是优秀人才呢&#xff1f;每个人的能力水平又应该怎么测评呢&#xff1f;这是很多企业管理者的困惑。该冷库企业为了支撑企业的进一步发展&#xff0c;引入了大量技…

【机器学习】进阶学习:详细解析Sklearn中的MinMaxScaler---原理、应用、源码与注意事项

【机器学习】进阶学习&#xff1a;详细解析Sklearn中的MinMaxScaler—原理、应用、源码与注意事项 这篇文章的质量分达到了97分&#xff0c;虽然满分是100分&#xff0c;但已经相当接近完美了。请您耐心阅读&#xff0c;我相信您一定能从中获得不少宝贵的收获和启发~ &#x1f…

Spring Security入门教程:利用Spring Security实现安全控制

在现今这个数码大展拳脚的时代&#xff0c;安全问题无疑是咱们这些搞软件开发的人需要谨慎应对的一块烫手山芋&#xff0c;无论是那些大型企业应用&#xff0c;还是那种小打小闹的个人项目&#xff0c;对我们宝贵的数据和服务的保护都显得尤为关键。 试想一下&#xff0c;若是…

2024年,如何使用chatgpt4.0为工作赋能?

ChatGPT 4.0的工作原理和功能 ChatGPT 4.0的工作原理和功能可以从以下几个方面进行详细说明&#xff1a; 工作原理 ChatGPT 4.0的工作原理主要基于深度学习技术&#xff0c;特别是Transformer模型的应用。它通过大量的文本数据进行训练&#xff0c;学习语言的模式和规律&…

从空白镜像创建Docker hello world

文章目录 写在前面基础知识方法一&#xff1a;使用echo工具方法二&#xff0c;使用c语言程序方法三&#xff0c;使用汇编语言小结 写在前面 尝试搞了下docker&#xff0c;网上的教程大多是让下载一个ubuntu这种完整镜像&#xff0c;寥寥几篇从空白镜像开始创建的&#xff0c;也…