Armv8-M的TrustZone技术之在安全状态和非安全状态之间切换

news2024/10/5 22:23:33

 Armv8-M安全扩展允许在安全和非安全软件之间直接调用。

Armv8-M处理器提供了几条指令来处理状态转换:

4f1b437105bf4fef8bc27429c63ad225.png

下图显示了安全状态转换。

0825f8228bde456d9ff97e77e2aff63d.png

如果入口点的第一条指令是SG且位于非安全可调用内存位置中,则允许从非安全到安全软件的直接API函数调用。

e34a55fb5e714935b695edc171e068c1.png

当非安全程序调用安全API时,API通过使用BXNS指令返回到非安全状态。如果非安全程序尝试分支或调用安全程序地址而不使用有效的入口点,则会生成故障事件。在Armv8-M体系结构中,Secure状态下的HardFault处理故障事件。在具有Main Extension的Armv8-M体系结构中,使用SecureFault异常类型。

Armv8-M安全扩展还允许安全程序调用非安全软件。在这种情况下,安全程序使用BLXNS指令调用非安全程序。在状态转换期间,将返回地址和一些处理器状态信息推送到安全栈,而链接寄存器(LR)上的返回地址设置为称为FNC_RETURN的特殊值。函数地址的最低有效位(LSB)必须为0。

下图显示了在安全程序调用非安全函

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

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

相关文章

Linux系统管理和Shell脚本笔试题

1、写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB #写入内…

JavaWeb前端——HTML/CSS

HTML/CSS概述 HTML:学习标签,CSS:学习样式 HTML 1. 不区分大小写。 2. 属性可以使用单引号/双引号 3. 在记事本/编辑器中编写html语言,通过浏览器解析渲染语言 4. 语法结构松散(编写时要尽量严谨) VSc…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

AI大模型开发架构设计(7)——人人都需要掌握的AI编程及应用案例实战

文章目录 人人都需要掌握的AI编程及应用案例实战1 AI代码生成模型与AI编程助手介绍程序设计方式的发展自动代码生成AI编程工具 2 AI编程助手的代码生成模型架构剖析以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模…

『C++成长记』string使用指南

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 📒2.1string类对象的常…

线下店铺的商品如何查价

品牌渠道主要分为线上和线下,线上的价格查价方式可以通过系统完成,系统筛选不同平台的数据,然后做价格的比较,输出是否破价的监测报表,这个过程多依赖系统去操作,但线下店铺的产品价格查价方式则没有固定的…

Windows下Cloudreve WebDAV挂载失败解决方法

如果你正在使用Windows的资源管理器挂载WebDAV,并且发现挂载失败,无论你如何去配置他 首先,Cloudreve 中可以为每个用户组单独设置“是否允许使用WebDAV访问”的开关,但是这玩意儿默认是开启的,所以如果不小心手残关掉…

机器学习系列——(六)数据降维

引言 在机器学习领域,数据降维是一种常用的技术,旨在减少数据集的维度,同时保留尽可能多的有用信息。数据降维可以帮助我们解决高维数据带来的问题,提高模型的效率和准确性。本文将详细介绍机器学习中的数据降维方法和技术&#…

解锁文档处理的全新维度:ONLYOFFICE 文档开发者版

前言 相信大家对于 ONLYOFFICE 这款办公软件可能已经有所耳闻,最近因工作需要,我在众多办公协作工具中选择了 ONLYOFFICE,原因主要是它开源经济实惠,可以部署在自己的服务器上并且能够轻松集成到我们的平台中。在数字化信息时代&…

10、数据结构与算法——堆

一、什么是堆 堆是一种特殊的树形数据结构,通常实现为完全二叉树或满二叉树。堆又分为两种类型最大堆(Max Heap) 和 最小堆(Min Heap) 1.1、什么是二叉树 二叉树是一种数据结构,它是由n(n≥0&a…

Python 计算两个时间之间的耗时

博主按照自己的需求写的一个可以计算程序耗时的函数,各位有需要的自行改写哈 实现的大致功能 功能1 记录开始时间,返回一个时间字典。数据包括:开始时间的日期格式、文本格式 功能2 记录结束时间和耗时,返回一个时间字典。数据包…

Web3智能合约:重新定义商业合作的未来

随着区块链技术的飞速发展,Web3时代正逐渐到来,而其中的智能合约成为推动商业合作变革的关键力量。本文将深入探讨Web3智能合约的概念、特点以及对商业合作未来的巨大影响。 什么是Web3智能合约? 智能合约是一种以代码形式编写、自动执行合同…

Oracle 面试题 | 05.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Flask 入门4:Flask 模板

1. 前言 Flask 拥有丰富的扩展方法,且都有统一的特点:简单和即学即用。当我们要实现某个功能之前,可以提前去搜一搜这个功能包是否已经存在,这样也能帮助我剩下很多时间。那么要去哪里找到这些扩展包呢,这里推荐两个方…

Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

前言: RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库&#xff1…

微信小程序可以一个人开发么?

随着移动互联网的飞速发展,微信小程序已经成为了人们日常生活中不可或缺的一部分。它以其便捷性和高效性赢得了广大用户的青睐。对于许多有志于进入小程序领域的开发者来说,一个常见的问题是:微信小程序可以一个人开发吗?答案是肯…

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…

【笔记】React-Native Navigation页面导航

/** * 须知:a bare React Native Project(not an Expo managed project) * * React官方文档:https://reactnative.dev/docs/navigation * * 当前文档基于6.x * React Navigation文档:https://reactnavigation.org/docs/getting-started * …

C++ Webserver从零开始:基础知识(七)——多进程编程

前言 在学习操作系统时,我们知道现代计算机往往都是多进程多线程的,多进程和多线程技术能大大提高了CPU的利用率,因此在web服务器的设计中,不可避免地要涉及到多进程多线程技术。 这一章将简要讲解web服务器中的多进程编程&#x…

AI与数字孪生

源自:译文 “人工智能技术与咨询”发布 AI和数字孪生 预测分析:网络安全水晶球 面对不断变化的威胁,提供自适应安全防护 自然语言处理:解码威胁语言 先进技术:人工智能作为数字孪生安全的基础 道德考量 …