其他分享
首页 > 其他分享> > arm tzpc & tzasc & tzc400 introduction

arm tzpc & tzasc & tzc400 introduction

作者:互联网

本文基于《于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检查规则:

Features

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