【ARM CoreLink 系列 7 -- TZC-400控制器简介】

文章目录

    • 背景介绍
    • 1.1 TZC-400 简介
    • 1.2 TZC-400 使用示例
    • 1.3 TZC-400 interfaces
      • 1.3.1 FPID
      • 1.3.2 NSAID
    • Region
      • region 检查规则
    • 1.4 Features
    • 1.5 Register summary
    • 1.6 TZC-400和TZPC和TZASC区别

背景介绍

为了确保内存能够正确识别总线的信号控制位,新增一个TrustZone地址空间控制器(TrustZone Address Space Controller,TZASC)组件来实现对内存地址的安全扩展,将内存区域划分为安全内存区域和非安全内存区域,安全世界可以访问安全内存和非安全内存,而普通世界只能访问非安全内存,如下图所示:
在这里插入图片描述
内存区域的划分是在系统启动时通过配置TZASC组件(TZC-400/TZC-380)来实现的。

1.1 TZC-400 简介

TZC-400由 Control unitFilter unit 构成,其中Control unit 用于对每一个区域的安全设置进行编程,具体包括:

  • 使能情况;
  • 安全访问权限;
  • Base地址;
  • Top 地址;
  • Non-secure ID filtering(基于NSAID信号)。

在Control unit的配置下,始终存在 1 个全地址区域 Region 0,并且可以扩展 8 个分离的区域 Region 1 - Region 8。Region 1-Region 8 的区域互不交叉,如下图所示。
在这里插入图片描述
而 Filter unit 用于对访问进行安全检查,根据NSAID信号决定是否允许访问该地址。

1.2 TZC-400 使用示例

不同的 Master 会连接到不同的 filter unit。TZC-400通过ACE-Lite响应通道或中断上报检查错误。
在这里插入图片描述

TZC-400 在SoC 系统层面的使用:
在这里插入图片描述

1.3 TZC-400 interfaces

提供接口如下图所示:
在这里插入图片描述

  • clock 和 reset 信号,TZC-400 使用了下面clock domain:
    • PCLK domian: 给带APB接口的控制单元使用;
    • ACE-Lite clock domain,给每个 filter unit 使用,名字是ACLKx。
  • TZC-400 为每个clock 提供了一个异步复位信号。

其它的信号,这里不在做过多介绍,可以查看对应的SPCE 文档。接下来主要介绍下认证输入信号:

  • Fast Path IDentity inputs;
  • Non-Secure Access IDentity inputs。在这里插入图片描述

1.3.1 FPID

Fast Path IDentity (FPID)决定 filter unit 的读操作是使用低延时快速路径还是普通路径。每个filter unit有单独1 根 FPID 输入。fast path 依赖 speculative access,因此必须开启 master 和 slave 的 speculative access 功能。如果在读操作的过程中接入 ACE-Lite 上的 FPID 信号线拉高,那么filter uint 将会把访问路由到快速通道上,如果推测执行功能没有打开,那么会将访问路由到普通通道上。

1.3.2 NSAID

Non-secure Access IDentity (NSAID) 标识发起访问的 master。如上图所示,每个filter unit 有两组 NSAID 信号,每组4个bit,NSAIDR[3:0]用于标识读地址,NSAIDW[3:0]标识写地址。

Region

Region是一个连续的地址空间定义了start和end。

region有单独的安全级别配置。

TZC-400有9个regions:region0 是 default,部分编程,region1-8是完全编程。

通过control unit设置每个region的安全和地址空间。

region 检查规则

  • region必须使能,filter unit才能用来检查访问合法性
  • region0始终是使能的,只能修改安全访问属性。
    f- ilter unit如果在其他region找不到访问地址匹配,会使用region0的配置
  • Filter unit使用的region1-8空间不能有overlap memory,但是region1-8可以与region0有overlap memory,而且region1-8的规则会覆盖region0。
    在这里插入图片描述

1.4 Features

  • 可以在地址映射中最多定义8个region(完全编程)。
  • 一个默认的基本区域覆盖所有剩余的地址映射部分,即region0。
  • 通过APB4总线编程每个region的访问权限,包括region0。
  • 只有当ACE-Lite事务的安全状态/ID和映射region的安全设置匹配时,filter unit才允许在ACE-lite master和slave之间传输数据。
  • 所有filter units共享公共区域配置寄存器的设置,保证一致性。
  • filter unit支持相互独立的异步时钟,而且也和control unit的APB时钟是异步的。
  • 支持双读访问通道,即快速路径和正常路径。快速路径具有低延迟,但outstanding数量
    有限。正常路径可以支持更多数量的outstanding,正常路径支持256个待处理事务,但延迟不低于快速路径的延迟。
  • 非安全访问是基于ID进行事务过滤的。
    状态和中断信号可以通过软件编程进行配置,从而管理失败的权限检查。
  • 每个时钟域都有AXI低功耗接口。
  • Gate keeper用于控制每个filter unit的访问状态,使能或禁用。

1.5 Register summary

offsetnametypedescription
0x0BUILD_CONFIGRO当前IP实现了几个region,实现了几个filter
在这里插入图片描述
0x4ACTIONRW当访问检查失败时,中断和bus返回如何处理
在这里插入图片描述
0x8GATE_KEEPERRW控制每个filter unit的使能和去使能,低bit对应每个filter unit控制,高bit代表状态在这里插入图片描述
0xcSPECULATION_CTRLRW控制读写随机访问在这里插入图片描述
0x10INT_STATUSRO每个filter unit的中断状态
在这里插入图片描述
0x14INT_CLEARWO每个filter unit的中断状态清除
在这里插入图片描述
0x100+(0x20*n)REGION_TOP_LOWRWregionX的低地址
0x108+(0x20*n)REGION_TOP_HIGHRWregionX的高地址
0x110+(0x20*n)REGION_ATTRIBUTESRW控制每个region的属性:安全读写属性、是否使能对应filter unit
在这里插入图片描述
0x114+(0x20*n)REGION_ID_ACCESSRW高bit控制写,低bit控制读每bit对应NSAID的使能情况
在这里插入图片描述

1.6 TZC-400和TZPC和TZASC区别

物理内存和外设的隔离保护通过TZASC和TZPC的设置来达到目的。TZASC可以把物理内存分成多个区域,每个区域的访问权限可以灵活配置为安全区域或是非安全区域,甚至可以配置成只有普通世界可以访问。TZPC则是配置不同的外设属于哪个世界。当然了TZASC和TZPC的配置只能在安全世界下进行。

TZPC只能控制某个外设的安全属性,它不能细粒度的控制地址空间。

TZC400是TZASC的具体实现的IP。

推荐阅读:
https://www.modb.pro/db/622259

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

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

相关文章

【Vue面试题十八】、你知道vue中key的原理吗?说说你对它的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说说你对keep-alive的理…

在Linux中掌握不同的命令,让创建文件变得易如反掌

在Linux中创建一个新文件很简单,但也有一些令人惊讶和灵巧的技术。​在本教程中,学习如何从Linux终端创建文件。​ 先决条件 访问命令行/终端窗口(Ctrl-Alt-F2或Ctrl-Alt-T) 具有sudo权限的用户帐户(对于某些文件/目录是可选的) 从命令行创建新的Linux文件 Linux的设计…

ArmSoM-W3之RK3588安装ffmpeg

1. 简介 FFmpeg 是一个完整的、跨平台的音频和视频录制、转换和流媒体解决方案。既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg 提供了多种媒体格式…

关于RNNoise、webrtc_ns、三角带通滤波器、对数能量

语音特征参数MFCC提取过程详解 其中讲解了:三角带通滤波器 、计算每个滤波器组输出的对数能量、对数能量、经离散余弦变换(DCT)得到MFCC系数 推荐阅读某乎这位大佬的全部文章: 下面是几篇出自这位大佬的很好的文章: …

在 Elasticsearch 中实现自动完成功能 2:n-gram

在第一部分中,我们讨论了使用前缀查询,这是一种自动完成的查询时间方法。 在这篇文章中,我们将讨论 n-gram - 一种索引时间方法,它在基本标记化后生成额外的分词,以便我们稍后在查询时能够获得更快的前缀匹配。 但在此…

Commonjs与ES Module

commonjs 1 commonjs 实现原理 commonjs每个模块文件上存在 module,exports,require三个变量,然而这三个变量是没有被定义的,但是我们可以在 Commonjs 规范下每一个 js 模块上直接使用它们。在 nodejs 中还存在 __filename 和 __dirname 变…

antd pro form 数组套数组 form数组动态赋值 shouldUpdate 使用

antd form中数组套数组 form数组动态变化 动态赋值 需求如上,同时添加多个产品,同时每个产品可以增加多台设备,根据设备增加相应编号,所以存在数组套数组,根据数组值动态变化 使用的知识点 form.list form中的数组…

fabric.js的使用

安装:npm install fabric --save // 使用fabric实现: import { fabric } from fabricinitFabric () {// create a wrapper around native canvas element (with id"canvasEl")let canvas new fabric.Canvas(canvasEl)// create a rectangle …

如何使用前端包管理器(如npm、Yarn)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

云安全之信息内容安全

内容安全产生背景 随着互联网、智能设备及各种新生业务的飞速发展,互联网上的数据呈现爆炸式增长,图片、视频、发文、聊天等互动内容已经成为人们表达感情、记录事件和日常工作不可或缺的部分。每天,通过互联网上传的视频、图片数量超过10亿…

kafka生产者发送消息报错 Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

报这个错误是因为kafka里的配置要修改下 在config目录下 server.properties配置文件 这下发送消息就不会一直等待,就可以发送成功了

凉鞋的 Unity 笔记 108. 第二个通识:增删改查

在这一篇,我们来学习此教程的第二个通识,即:增删改查。 增删改查我们不只是一次接触到了。 在最先接触的场景层次窗口中,我们是对 GameObject 进行增删改查。 在 Project 文件窗口中,我们是对文件&文件夹进行增删…