【ARMv8M Cortex-M33 系列 1 -- SAU 介绍】

文章目录

    • Cortex-M33 SAU 介绍
      • SAU 的主要功能包括
      • SAU 寄存器
      • 配置示例

在这里插入图片描述

Cortex-M33 SAU 介绍

在 ARMv8-M 架构中,SAU(Security Attribution Unit)是安全属性单元,用于配置和管理内存区域的安全属性。SAU 是 ARM TrustZone 技术的一部分,该技术提供了在单个处理器中创建安全(Secure)和非安全(Non-secure)状态的能力,允许系统同时运行受信任的安全代码和非受信任的非安全代码。

SAU 能够定义多个内存区域,并为每个内存区域指定其是否可被安全状态和/或非安全状态访问。这样,SAU 可以帮助创建一个隔离的安全环境,其中敏感的代码和数据可以被保护,不受非安全代码的影响。

SAU 的主要功能包括

  • 内存区域定义:SAU 允许你定义一系列的内存区域,并为每个区域指定安全属性。这些区域可以是 RAM、ROM、外设或其他类型的内存。
  • 安全属性配置:对于每个区域,可以配置其是否为安全或非安全访问。这是通过设置区域的属性位来完成的。
  • 默认内存映射:SAU 也允许配置默认内存映射,即对于没有明确通过 SAU 区域定义的内存,指定它们的安全状态。

SAU 寄存器

SAU 的配置是通过一系列的系统控制寄存器来完成的,主要包括:

AddressRegisterDescription
0xE000EDD0SAU_CTRLSAU Control Register
0xE000EDD4SAU_TYPESAU Type Register
0xE000EDD8SAU_RNRSAU Region Number Register
0xE000EDDCSAU_RBARSAU Region Base Address Register
0xE000EDE0SAU_RLARSAU Region Limit Address Register
0xE000EDE4SFSRSecure Fault Status Register
0xE000EDE8SFARSecure Fault Address Register
  • SAU_CTRL:SAU 控制寄存器,用于启用或禁用 SAU,以及配置默认的内存映射属性。
    • bit[1]:
      • 0- Memory is marked as Secure and is not Non-secure callable.
      • 1- Memory is marked as Non-secure.
    • bit[0]:
      • 0-SAU is disabled;
      • 1-SAU is enabled;
  • SAU_TYPE:SAU 类型寄存器,提供 SAU 支持的区域数量和配置信息。
    • bit[7:0]: SAU regions. The number of implemented SAU regions.
  • SAU_RNR: SAU 区域编号寄存器,用于选择要配置的 SAU 区域。
    • bit[7:0]:Region number. Indicates the SAU region accessed by SAU_RBAR and SAU_RLAR.
  • SAU_RBARSAU_RLAR:SAU 区域基址和限制寄存器,用于定义具体 SAU 区域的起始地址和结束地址,并指定区域的安全属性。
    • SAU_RBAR bits [31:5]: Base address. Holds bits [31:5] of the base address for the selected SAU region.
    • SAU_RLAR bits [31:5]: Limit address. Holds bits [31:5] of the limit address for the selected SAU region.
    • NSC, bit [1]: Non-secure callable. Controls whether Non-secure state is permitted to execute an SG instruction from this
      region.
      • 0: Region is not Non-secure callable.
      • 1: Region is Non-secure callable.
    • bit [0]:
      • 0-SAU region is disabled,
      • 1-SAU region is enabled.

配置示例

假设我们想要将一块内存区域配置为安全区域,我们可以按照以下步骤进行:

  1. 确定内存区域的起始地址和结束地址。
  2. 选择 SAU 区域编号并配置 SAU_RNR 寄存器。
  3. 设置 SAU_RBAR 寄存器,定义区域的起始地址和安全属性。
  4. 设置 SAU_RLAR 寄存器,定义区域的结束地址。
  5. 如果需要,配置 SAU_CTRL 寄存器以启用 SAU 并设置默认内存映射。

配置 SAU 通常在系统启动时进行,作为启动代码或安全初始化例程的一部分。正确配置 SAU 对于确保系统的安全性是至关重要的,因此需要仔细规划内存布局,并根据系统需求设置正确的安全属性。

由于 SAU 的配置涉及到系统的安全架构,因此需要具备相应的权限才能进行配置。在非安全状态下的代码通常无法修改 SAU 的设置,以保护安全状态下的资源不被非安全代码破坏。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.使用 Blazor 利用 ASP.NET Core 生成第一个 Web 应用

参考 https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/create 1.使用vs2022创建新项目 选择 C# -> Windows -> Blzxor Server 应用模板 2.项目名称BlazorApp下一步 3.选择 .NET6.0 或 .NET7.0 或 .NET8.0 创建 4.运行BlazorApp 5.全部选择是。 信…

页面级UI状态存储LocalStorage

目录 1、LocalStorageProp 2、LocalStorageLink 3、LocalStorage的使用 4、从UI内部使用LocalStorage 5、LocalStorageProp和LocalStorage单向同步的简单场景 6、LocalStorageLink和LocalStorage双向同步的简单场景 7、兄弟节点之间同步状态变量 LocalStorage是页面级的…

Python中__getitem__的奇妙应用

更多资料获取 📚 个人网站:ipengtao.com 理解 __getitem__ 方法 1 基本概念 在Python中,__getitem__ 是一个重要的魔法方法,用于实现对象的索引访问。当使用类似 obj[index] 的方式访问对象时,Python 解释器会自动调…

【toolschain algorithm cpp ros】cpp工厂模式实现--后续填充具体规划算法,控制器版的已填充了算法接入了仿真器

写在前面 现在局势危机,于是想复习一下之前写的设计模式,之前提到,做过一个闭环仿真器(借用ros),见https://blog.csdn.net/weixin_46479223/article/details/134864123我的控制器的建立遵循了工厂模式&…

Uniapp 开发 BLE

BLE 低功耗蓝牙(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart),用于医疗保健、运动健身、安防、工业控制、家庭娱乐等领域。在如今的物联网时代下大放异彩,扮演者重要一环&#xff…

threejs中修改鼠标cursor不生效的问题修复

需求: 当鼠标hover一个元素时,cursor为自定义的图标 问题描述: threejs中修改canvas的鼠标cursor为自定义的图标不生效。 问题原因: 引入了dragcontrols,查看dragControls的代码,可以看到代码中有对cur…

世微AP5101C高压线性LED恒流驱动芯片 3D打印机LED指示灯驱动IC

产品描述 AP5101C 是一款高压线性 LED 恒流 芯片 , 简单 、 内置功率管 , 适用于 6- 100V 输入的高精度降压 LED 恒流驱动 芯片。电流2.0A。 AP5101C 可实现内置MOS 做 2.0A, 外置MOS 可做 3.0A 的。 AP5101C 内置温度保护功能 ,温度保 护点…

3DMAX英文版怎么切换到中文版?

3DMAX英文换到中文版的方法 3dMax是专业三维建模、渲染和动画软件,它使你能够创建广阔的真实世界和各种高级设计。 -使用强大的建模工具为环境和景观注入活力。 -使用直观的纹理和着色工具创建精细的细节设计和道具。 -迭代并制作具有完全艺术控制的专业级渲染图…

深眸科技以AI+3D视觉技术引领技术创新,赋予工业自动化新的活力

随着工业4.0和智能制造时代的到来,3D机器视觉在工业各领域的应用越来越重要。这种技术改变了传统工业的生产方式,为现代工业带来了更高的生产效率和更精确的质量控制,广泛涉及物体识别、产品检测、尺寸测量、视觉引导定位等环节。 在工业领域…

【CMake保姆级教程】定义变量、指定C++标准、指定输出路径

文章目录 前言一、变量1.1 为什么需要变量?1.2 set的使用1.3 使用变量 二、指定C标准2.1 为什么需要指定C标准?2.2 指定使用的C标准 三、指定输出路径3.1 为什么需要指定输出路径?3.2 设置输出路径 总结 前言 CMake是一个强大的构建工具&…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextInput输入框组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextInput输入框组件 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、TextInput 接口 TextInput(value?:{placeholder?: ResourceStr, tex…

[每周一更]-(第38期):Go常见的操作消息队列

在Go语言中,常见的消息队列有以下几种: RabbitMQ:RabbitMQ是一个开源的AMQP(高级消息队列协议)消息代理软件,用于支持多种编程语言,包括Go语言。RabbitMQ提供了可靠的消息传递机制和灵活的路由…