ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

arm tzpc & tzasc & tzc400 introduction

2022-08-13 12:03:31  阅读:208  来源: 互联网

标签:tzpc region filter 访问 TZC 400 tzasc arm unit


本文基于《于ARM TZC-400 TRM》进行梳理

Introduction

About

The CoreLink TZC-400 TrustZone Address Space Controller (TZC-400) is an AMBA-compliant System on-Chip (SoC) peripheral.

TZC-400对发送到内存或外设的事务执行安全检查。TZC-400使用filter unit过滤从masters到slaves的总线访问,TZC-400最多有4个Filter unit。您可以使用TZC-400在地址空间中创建最多8个区域,每个区域都有单独的安全级别设置。任何事务必须满足安全需求才能访问内存或外设。您可以设置各个地区的base地址、top地址、enable和安全级别

TZC-400通过ACE-Lite响应通道或中断上报检查错误。

TZC-400的使用示例

不同的mastert会连接到不同的filter unit。

TZC-400 interfaces

Control unit使用APB协议,clock和reset。

每个Filter unit均有单独的ACE-Lite clock和reset,filter unit会根据ACE-Lite地址、Fast path ID、NSAID(Non-Secure Access ID)来筛选。

TZC对外输出1根中断上报安全检查异常。

FPID & NSAID

Fast Path IDentity (FPID)决定filter unit的读操作是使用快速路径还是普通路径。每个filter unit有单独1 bit FPID输入。fast path依赖speculative access,因此必须开启master和slave的speculative access功能。是芯片固定的还是可以软件配置?

Non-secure Access IDentity (NSAID)标识发起访问的master。每个filter unit有两组NSAID信号,每组4个bit,NSAIDR[3:0]用于标识,NSAIDW[3:0]标识写。 怎么标识? 芯片设计时,分配的master id。

Region

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

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

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

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

region检查规则:

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

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的访问状态,使能或禁用。

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的使能情况

Software API

 /* 关闭全部filter unit */
void tzc400_disable_filters(void);

/* 开启全部filter unit */
void tzc400_enable_filters(void);

/* 配置某个region属性:绑定filter unit、起始地址、安全属性、发起访问source id */
void tzc400_configure_region(unsigned int filters,
              unsigned int region,
              unsigned long long region_base,
              unsigned long long region_top,
              unsigned int sec_attr,
              unsigned int nsaid_permissions);

/* 配置检查异常的处理动作 */
void tzc400_set_action(unsigned int action);

/* 中断查询及清楚 */
int tzc400_it_handler(void)

Question

TZC-400和TZPC和TZASC区别

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

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

TZC400是TZASC的具体实现的IP。

Reference

《TZC-400 TRM 》https://developer.arm.com/documentation/100325/0001/?lang=en

标签:tzpc,region,filter,访问,TZC,400,tzasc,arm,unit
来源: https://www.cnblogs.com/lvzh/p/16582717.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有