【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)组件来实现对内存地址的安全扩展,将内存区域划分为安全内存区域和非安全内存区域,安全世界可以访问安全内存和非安全内存,而普通世界只能访问非安全内存,如下图所示:
【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第1张图片
内存区域的划分是在系统启动时通过配置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 的区域互不交叉,如下图所示。
【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第2张图片
而 Filter unit 用于对访问进行安全检查,根据NSAID信号决定是否允许访问该地址。

1.2 TZC-400 使用示例

不同的 Master 会连接到不同的 filter unit。TZC-400通过ACE-Lite响应通道或中断上报检查错误。

TZC-400 在SoC 系统层面的使用:
【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第3张图片

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。【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第4张图片

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
【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第5张图片
0x4 ACTION RW 当访问检查失败时,中断和bus返回如何处理
0x8 GATE_KEEPER RW 控制每个filter unit的使能和去使能,低bit对应每个filter unit控制,高bit代表状态【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第6张图片
0xc SPECULATION_CTRL RW 控制读写随机访问【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第7张图片
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
【ARM CoreLink 系列 7 -- TZC-400控制器简介】_第8张图片
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,系列】,arm开发,ARM,TZC-400)