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

2023-10-14 10:01

本文主要是介绍【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

这篇关于【ARM CoreLink 系列 7 -- TZC-400控制器简介】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209795

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(