本文主要是介绍【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 unit 和 Filter 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
offset | name | type | description |
---|---|---|---|
0x0 | BUILD_CONFIG | RO | 当前IP实现了几个region,实现了几个filter |
0x4 | ACTION | RW | 当访问检查失败时,中断和bus返回如何处理 |
0x8 | GATE_KEEPER | RW | 控制每个filter unit的使能和去使能,低bit对应每个filter unit控制,高bit代表状态 |
0xc | SPECULATION_CTRL | RW | 控制读写随机访问 |
0x10 | INT_STATUS | RO | 每个filter unit的中断状态 |
0x14 | INT_CLEAR | WO | 每个filter unit的中断状态清除 |
0x100+(0x20*n) | REGION_TOP_LOW | RW | regionX的低地址 |
0x108+(0x20*n) | REGION_TOP_HIGH | RW | regionX的高地址 |
0x110+(0x20*n) | REGION_ATTRIBUTES | RW | 控制每个region的属性:安全读写属性、是否使能对应filter unit |
0x114+(0x20*n) | REGION_ID_ACCESS | RW | 高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控制器简介】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!