Armv8-M的TrustZone技术之内存属性单元

news2024/11/24 12:33:07

如果处理器包含Armv8-M安全扩展,则内存区域的安全状态由内部安全属性单元(SAU,Secure Attribution Unit)或外部实现定义的属性单元(IDAU,Implementation Defined Attribution Unit)的组合控制。SAU区域的数量在处理器实现期间定义。在复位时,SAU处于禁用状态。

如果未定义任何SAU区域,或者SAU被禁用,并且系统中没有包含IDAU,则整个内存地址空间被定义为安全,并且处理器无法切换到非安全状态。任何尝试切换到非安全状态都会导致故障。这是处理器的默认状态。

a2bdc4b75d74499b82b995d9a42b9ab2.png

SAU在安全状态下可编程,具有类似于内存保护单元(MPU)的程序员模型。SAU的实现可由设计人员配置。SAU始终存在,但设计人员定义了区域的数量。设计人员还可以使用IDAU定义固定的内存映射,并使用SAU来覆盖内存的某些部分的安全属性。一个简单的用法是使用IDAU将内存分割为500Mb的交替安全和非安全内存块。

微控制器或SoC器件的设计者将内存空间划分为安全和非安全区域。软件使用安全属性单元(SAU)或通过连接到特殊实现定义的处理器上的属性单元(IDAU)接口特定于设备的控制器逻辑来定义一些区域。内存分区还用于将外设定义为安全或非安全。

SAU和IDAU还为每个内存区域定义了区域号。区域号是8位的,并且由Test Target(TT)指令使用,以允许软件确定内存中对象的访问权限和安全属性。

只有在处理器中包含Armv8-M安全扩展时,才会实现SAU。包含在SAU中的区域的数量可以配置为0、4或8。

SAU只能在安全状态下进行编程。使用SAU区域编号寄存器(SAU_RNR)、SAU区域基地址寄存器(SAU_RBAR)和SAU区域限制地址寄存器(SAU_RLAR)对区域进行编程。可以使用SAU控制寄存器(SAU_CTRL)启用SAU。

【注意】:在对SAU的非安全区域进行编程时,必须确保不将安全数据和代码暴露给非安全应用程序。

处理器中的安全属性和内存保护由可选的SAU和可选的内存保护单元(MPU)提供。对于指令和数据,SAU返回与地址关联的安全属性。

对于指令,该属性确定了处理器在执行指令时允许的安全状态。它还可以识别是否可以从非安全状态调用安全地址的代码。它通过应用NSC属性来实现。

对于数据,该属性确定是否可以从非安全状态访问内存地址,以及外部内存请求是否标记为安全或非安全。

如果从非安全状态进行数据访问到标记为安全的地址,则处理器会触发安全故障异常。如果从安全状态到标记为非安全的地址进行数据访问,则相关的外部内存访问将被标记为非安全。

 

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

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

相关文章

【WinForm.NET开发】ToolStrip 控件体系结构

本文内容 ToolStripToolStripItem附件类 ToolStrip 和 ToolStripItem 类提供了一种灵活的可扩展系统,用于显示工具栏、状态和菜单项。 这些类都包含在 System.Windows.Forms 命名空间中 ,它们的名称通常都带有“ToolStrip”前缀(如 ToolStr…

yolov8 opencv dnn部署自己的模型

源码地址 本人使用的opencv c github代码,代码作者非本人 使用github源码结合自己导出的onnx模型推理自己的视频 推理条件 windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv4.7.0 (opencv4.5.5在别的地方看到不支持yolov8的推理,所以只使用opencv…

HDMI、VGA、DVI、DB接口的区别

HDMI、VGA、DVI和DB(也称为DisplayPort)是不同类型的视频接口标准,它们用于连接计算机、显示器、电视和其他视频设备。 HDMI(High-Definition Multimedia Interface,高清晰度多媒体接口):HDMI支…

C语言——静态通讯录的实现

今天我们来实现一下一个静态的通讯录: 我就先展示一下几个功能: 实现一个通讯录; 通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 提供方法: 添加联系人信息删除指定…

rancher和k8s接口地址,Kubernetes监控体系,cAdvisor和kube-state-metrics 与 metrics-server

为了能够提前发现kubernetes集群的问题以及方便快捷的查询容器的各类参数,比如,某个pod的内存使用异常高企 等等这样的异常状态(虽然kubernetes有自动重启或者驱逐等等保护措施,但万一没有配置或者失效了呢)&#xff0…

容器技术2-镜像与容器储存

目录 一、镜像制作 1、ddocker build 2、docker commit 二、镜像存储 1、公共仓库 2、私有仓库 三、镜像使用 四、容器存储 1、镜像元数据 2、存储驱动 3、数据卷 一、镜像制作 1、ddocker build 基于 Dockerfile 自动构建镜像 其机制为:每一行都会基于…

Go 的 Http 请求系统指南

文章目录 快速体验请求方法URL参数响应信息BodyStatusCodeHeaderEncoding 图片下载定制请求头复杂的POST请求表单提交提交文件 CookieClient 上设置 Cookie请求上设置 Cookie 重定向和请求历史超时设置总超时连接超时读取超时 请求代理错误处理总结 前几天在 “知乎想法” 谈到…

linux安装docker(入门一)

环境:centos 7(linux) 网站 官网: https://docs.docker.com/ Docker Hub 网站: https://hub.docker.com/ 容器官方概述 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包 &…

Python小细节之代码极致简化到一行(5)(列表推导式)(技法慎用)

列表、推导式 引言简化前简化后讲解简化前简化后 应用结尾 引言 简单快速 大行其道 现在我又带着简化代码来了 我思考了下 简化的代码是技巧的体现 但是简短的代码里面 蕴藏着的是Python的精华 所以 我会更加详细的解析代码的内容 致力于让每个零基础的人都看懂 简化前 m…

DP活动:HMI-Board以太网数据监视器(一)以太网外设的使用

HMI-Board以太网数据监视器 开发工具  RT-Thread Studio/Keil MDK5(固件开发、编译)  SquareLine Studio(LVGL UI设计工具) 资料链接  RT-Thread Studio下载链接: https://download_redirect.rt-thread.org/…

C# 控制台进度条

最简单 namespace ProcessStu01 {internal class Program{static void Main(string[] args){for (int i 1; i < 100; i){Console.Write("\r{0,3}%",i);Thread.Sleep(50);}}} }第三方库 https://github.com/Mpdreamz/shellprogressbar using ShellProgressBar…

ubuntu source: not found

1、原因分析&#xff1a; shell 的解释器不是 bash&#xff0c;需把 shell 的解释器更改为 bash 2、ls -l /bin/sh 3、sudo dpkg-reconfigure dash 选择No 4、ls -l /bin/sh 5、reboot&#xff08;此步必须持续&#xff0c;否则无效&#xff09;

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

020-信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

020-信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间 #知识点&#xff1a; 1、工具项目-红蓝队&自动化部署 2、工具项目-自动化侦查收集提取 3、工具项目-综合&网络空间&信息 演示案例&#xff1a; ➢自动化-武器库部署-F8x ➢自…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

如何在科技创新中发挥国有企业的战略支撑作用?

要在科技创新中发挥国有企业的战略支撑作用&#xff0c;需要采取以下措施&#xff1a; 1. 强化国有企业创新主体地位&#xff1a;鼓励和支持国有企业加强技术创新、产品创新、组织创新和市场创新&#xff0c;提高自主创新能力。政府可以给予国有企业一定的政策和资金支持&…

MATLAB数据处理: 每种样本类型随机抽样

tn5;% 每种类型随机抽样数 indextrain[];% 训练样本序号集 for i1:typenumber index301 find(typemat i); n2length(index301); index302randperm(n2); index401index301(index302(1:tn)); indextrain[indextrain; index401]; end 该代码可以对大样…

【ZYNQ入门】第十篇、基于FPGA的图像白平衡算法实现

目录 第一部分、关于白平衡的知识 1、MATLAB 自动白平衡算法的实现 1.1、matlab代码 1.2、测试效果 1.3 测试源图 2、为什么摄像头采集的图像要做白平衡 3、自动白平衡算法总结 4、FPGA设计思路 4.1、实时白平衡的实现 4.2、计算流程优化思路 第二部分、硬件实…

使用PSIM软件生成DSP28335流水灯程序

最近在学习DSP28335芯片&#xff0c;然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片&#xff0c;于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…

Docker Ipvlan l3s模式说明

看到Docker Ipvlan中有三种模式L2、L3、L3S模式&#xff0c;查阅了L3S&#xff0c;记录如下&#xff1a; 起因 Docker链接: IPvlan network driver 概念 注释说明&#xff08;摘选自: ipvlan-l3s模式&#xff09; L3S mode与L3 mode 的区别在于启用了iptables (conn-track…