Skip to content

Commit 3cf35ca

Browse files
Karen Huangrkhuangtao
Karen Huang
authored andcommitted
Trust: modify format
Signed-off-by: Karen Huang <[email protected]> Change-Id: I574f82ad0c26290759e92583c37be8001ea7ac41
1 parent aeb701f commit 3cf35ca

File tree

2 files changed

+123
-61
lines changed

2 files changed

+123
-61
lines changed

TRUST/Rockchip_Developer_Guide_Trust_CN.md

+68-35
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,56 @@
11
# Trust 指南
22

3-
发布版本:1.1
3+
文件标识:RK-KF-YF-006
44

5-
作者邮箱:[email protected]
5+
发布版本:V1.1.1
66

7-
日期:2019.11
7+
日期:2021-04-26
88

9-
文件密级:公开资料
9+
文件密级:□绝密 □秘密 □内部资料 ■公开
10+
11+
**免责声明**
12+
13+
本文档按“现状”提供,瑞芯微电子股份有限公司(“本公司”,下同)不对本文档的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、特定目的性和非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。
14+
15+
由于产品版本升级或其他原因,本文档将可能在未经任何通知的情况下,不定期进行更新或修改。
16+
17+
**商标声明**
18+
19+
“Rockchip”、“瑞芯微”、“瑞芯”均为本公司的注册商标,归本公司所有。
20+
21+
本文档可能提及的其他所有注册商标或商标,由其各自拥有者所有。
22+
23+
**版权所有 © 2021 瑞芯微电子股份有限公司**
24+
25+
超越合理使用范畴,非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
26+
27+
瑞芯微电子股份有限公司
28+
29+
Rockchip Electronics Co., Ltd.
30+
31+
地址: 福建省福州市铜盘路软件园A区18号
32+
33+
网址: [www.rock-chips.com](http://www.rock-chips.com)
34+
35+
客户服务电话: +86-4007-700-590
36+
37+
客户服务传真: +86-591-83951833
38+
39+
客户服务邮箱: [[email protected]](mailto:[email protected])
1040

1141
---
1242

1343
**前言**
1444

1545
**概述**
1646

17-
​ Trust 作为 Rockchip 平台 SDK 里的固件之一,因为涉及安全性和保密性,目前完整源码仅对内部的部分工程师开放(RK322x/RK3328/RK3368/RK3399/PX30平台的基础功已经开源[0])。本文档仅对 Trust 进行概要介绍(以 64 位平台作为范例),意在让读者明白它在整个系统架构中的角色和作用。同时指导读者在实际使用中遇到问题时如何进行问题收集和反馈。
47+
Trust 作为 Rockchip 平台 SDK 里的固件之一,因为涉及安全性和保密性,目前完整源码仅对内部的部分工程师开放(RK322x/RK3328/RK3368/RK3399/PX30平台的基础功已经开源[0])。本文档仅对 Trust 进行概要介绍(以 64 位平台作为范例),意在让读者明白它在整个系统架构中的角色和作用。同时指导读者在实际使用中遇到问题时如何进行问题收集和反馈。
48+
49+
**产品版本**
50+
51+
| **芯片名称** | **内核版本** |
52+
| ------------ | ---------------- |
53+
| RK3036/RK3126C/RK3288/RK322X/RK3368/RK3328/RK3399/PX30/RK3308 | 3.10、4.4、4.19 |
1854

1955
**读者对象**
2056

@@ -24,50 +60,47 @@
2460

2561
软件开发工程师
2662

27-
**产品版本**
28-
29-
| **芯片名称** | **内核版本** |
30-
| ------------------------------------------------------------ | :-------------- |
31-
| RK3036/RK3126C/RK3288/RK322X/RK3368/RK3328/RK3399/PX30/RK3308 | 3.10、4.4、4.19 |
32-
3363
**修订记录**
3464

35-
| **日期** | **版本** | **作者** | **修改说明** |
36-
| ---------- | -------- | -------- | --------------------- |
37-
| 2017-12-30 | V1.0 | 陈健洪 | 初始版本 |
38-
| 2019-11-11 | V1.1 | 陈健洪 | 更新芯片/内核支持列表 |
65+
| **版本号** | **作者** | **修改日期** | **修改说明** |
66+
| ---------- | -------- | ------------ | ------------------ |
67+
| V1.0.0 | 陈健洪 | 2017-12-30 | 初始版本 |
68+
| V1.1.0 | 陈健洪 | 2019-11-11 | 更新芯片/内核支持列表 |
69+
| V1.1.1 | 黄莹 | 2021-04-26 | 增加版权信息 |
3970

4071
---
4172

73+
**目录**
74+
4275
[TOC]
4376

4477
---
4578

4679
## ARM TrustZone
4780

48-
ARM TrustZone [1]技术是所有 Cortex-A 类处理器的基本功能,是通过 ARM 架构安全扩展引入的。这些扩展可在供应商、平台和应用程序中提供一致的程序员模型,同时提供真实的硬件支持的安全环境。
81+
ARM TrustZone [1]技术是所有 Cortex-A 类处理器的基本功能,是通过 ARM 架构安全扩展引入的。这些扩展可在供应商、平台和应用程序中提供一致的程序员模型,同时提供真实的硬件支持的安全环境。
4982

50-
ARM TrustZone 技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务。TrustZone 技术与 Cortex-A 处理器紧密集成,并通过 AMBA AXI 总线和特定的 TrustZone 系统 IP 块在系统中进行扩展,所以 ARM TrustZone 技术是从硬件层次上提供的安全机制。此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免遭软件攻击。
83+
ARM TrustZone 技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务。TrustZone 技术与 Cortex-A 处理器紧密集成,并通过 AMBA AXI 总线和特定的 TrustZone 系统 IP 块在系统中进行扩展,所以 ARM TrustZone 技术是从硬件层次上提供的安全机制。此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免遭软件攻击。
5184

52-
目前用于 ARM TrustZone 技术的开源项目中,使用比较广泛的有 ARM Trusted Firmware 和 OP-TEE OS[2],它们都是针对 ARM 芯片给出的底层固件开源项目,二者之间可以配合使用或单独使用。
85+
目前用于 ARM TrustZone 技术的开源项目中,使用比较广泛的有 ARM Trusted Firmware 和 OP-TEE OS[2],它们都是针对 ARM 芯片给出的底层固件开源项目,二者之间可以配合使用或单独使用。
5386

5487
### 系统架构
5588

56-
从系统架构角度看,如下是启用了 ARM TrustZone 技术后的 64 位平台系统架构图。整个系统被分成了两个世界:左边是非安全世界,右边是安全世界。安全世界可以访问两个世界的所有资源,非安全世界只能访问非安全世界的资源,如果非安全世界访问安全世界的资源,则将产生系统硬件总线报错等异常,是无法获取到资源的。
89+
从系统架构角度看,如下是启用了 ARM TrustZone 技术后的 64 位平台系统架构图。整个系统被分成了两个世界:左边是非安全世界,右边是安全世界。安全世界可以访问两个世界的所有资源,非安全世界只能访问非安全世界的资源,如果非安全世界访问安全世界的资源,则将产生系统硬件总线报错等异常,是无法获取到资源的。
5790

58-
这两个世界之间的往来需要通过 ARM Trusted Firmware 作为桥梁。当 CPU 处于非安全世界时,如果想进入安全世界则需要先进入 ARM Trusted Firmware(通过 ARM 的 SMC 硬件指令),在 ARM Trusted Firmware 里的 Secure Monitor 代码会把 CPU 从非安全身份切换成安全的身份,然后再以安全身份进入安全世界。反之亦然。这个是完全从硬件级别上进行的安全和非安全身份转变。
91+
这两个世界之间的往来需要通过 ARM Trusted Firmware 作为桥梁。当 CPU 处于非安全世界时,如果想进入安全世界则需要先进入 ARM Trusted Firmware(通过 ARM 的 SMC 硬件指令),在 ARM Trusted Firmware 里的 Secure Monitor 代码会把 CPU 从非安全身份切换成安全的身份,然后再以安全身份进入安全世界。反之亦然。这个是完全从硬件级别上进行的安全和非安全身份转变。
5992

60-
Rockchip 的 Trust 可以理解为是 ARM Trusted Firmware + OP-TEE OS 的功能集合,它实现了安全世界里我们需求的功能以及 Secure Monitor(两个世界转换的核心代码)的功能。
93+
Rockchip 的 Trust 可以理解为是 ARM Trusted Firmware + OP-TEE OS 的功能集合,它实现了安全世界里我们需求的功能以及 Secure Monitor(两个世界转换的核心代码)的功能。
6194

6295
![Relationship-1](Rockchip_Developer_Guide_Trust/Secure_and_Non_secure_relationship_1.png)
6396

6497
![Relationship-2](Rockchip_Developer_Guide_Trust/Secure_and_Non_secure_relationship_2.png)
6598

6699
### CPU 特权等级
67100

68-
从 CPU 的视角看,如下是一个标准的启用了 ARM TrustZone 技术后的 CPU 特权模式等级架构图。如果是 64 位 CPU,它的特权等级分为 EL0、EL1、EL2、EL3,其中根据 CPU 所处的世界又分为安全 EL0、安全 EL1 或者非安全 EL0、非安全 EL1。如果是 32 位 CPU,它的特权等级分为 Mon、Hyp、SVC、ABT、IRQ、FIQ、UND、SYS、USER 模式,其中 SVC、ABT、IRQ、FIQ、UND、SYS、USER 也如 64 位一样有安全和非安全模式之分。
101+
从 CPU 的视角看,如下是一个标准的启用了 ARM TrustZone 技术后的 CPU 特权模式等级架构图。如果是 64 位 CPU,它的特权等级分为 EL0、EL1、EL2、EL3,其中根据 CPU 所处的世界又分为安全 EL0、安全 EL1 或者非安全 EL0、非安全 EL1。如果是 32 位 CPU,它的特权等级分为 Mon、Hyp、SVC、ABT、IRQ、FIQ、UND、SYS、USER 模式,其中 SVC、ABT、IRQ、FIQ、UND、SYS、USER 也如 64 位一样有安全和非安全模式之分。
69102

70-
Rockchip 的 Trust 可以理解为是 EL3 + 安全 EL1 的功能集合。
103+
Rockchip 的 Trust 可以理解为是 EL3 + 安全 EL1 的功能集合。
71104

72105
![ARM-Exception-levels](Rockchip_Developer_Guide_Trust/ARM_Exception_levels_in_the_Normal_and_Secure_world.JPG)
73106

@@ -77,15 +110,15 @@
77110

78111
### 实现机制
79112

80-
目前 Rockchip 平台上的 64 位 SoC 平台上使用的是 ARM Trusted Firmware + OP-TEE OS 的组合;32 位 SoC 平台上使用的是 OP-TEE OS。
113+
目前 Rockchip 平台上的 64 位 SoC 平台上使用的是 ARM Trusted Firmware + OP-TEE OS 的组合;32 位 SoC 平台上使用的是 OP-TEE OS。
81114

82115
### 启动流程
83116

84-
ARM Trusted Firmware 的体系架构里将整个系统分成四种安全等级,分别为:EL0、EL1、EL2、EL3。将整个安全启动的流程阶段定义为:BL1、BL2、BL31、BL32、BL33,其中 ARM Trusted Firmware 自身的源代码里提供了 BL1、BL2、BL31 的功能。Rockchip 平台仅使用了其中的 BL31 的功能,BL1 和 BL2 我们有自己的一套实现方案。所以在 Rockchip 平台上我们一般也可以“ 默认” ARM Trusted Firmware 指的就是 BL31,而 BL32 使用的则是 OP-TEE OS。
117+
ARM Trusted Firmware 的体系架构里将整个系统分成四种安全等级,分别为:EL0、EL1、EL2、EL3。将整个安全启动的流程阶段定义为:BL1、BL2、BL31、BL32、BL33,其中 ARM Trusted Firmware 自身的源代码里提供了 BL1、BL2、BL31 的功能。Rockchip 平台仅使用了其中的 BL31 的功能,BL1 和 BL2 我们有自己的一套实现方案。所以在 Rockchip 平台上我们一般也可以“ 默认” ARM Trusted Firmware 指的就是 BL31,而 BL32 使用的则是 OP-TEE OS。
85118

86-
如果把上述这种阶段定义映射到 Rockchip 的平台各级固件上,对应关系为:Maskrom(BL1)、Loader(BL2)、Trust(BL31:ARM Trusted Firmware + BL32:OP-TEE OS)、U-Boot(BL33)。
119+
如果把上述这种阶段定义映射到 Rockchip 的平台各级固件上,对应关系为:Maskrom(BL1)、Loader(BL2)、Trust(BL31:ARM Trusted Firmware + BL32:OP-TEE OS)、U-Boot(BL33)。
87120

88-
Android 系统的固件启动顺序:
121+
Android 系统的固件启动顺序:
89122

90123
```c
91124
Maskrom -> Loader -> Trust -> U-Boot -> kernel -> Android
@@ -322,9 +355,9 @@ SYSTEM_RESET
322355

323356
#### Secure Monitor
324357

325-
Secure Monitor 是 CPU 往来安全世界和非安全世界进行状态转换的桥梁。Secure Monitor 的代码是在 Trust 中实现的。如果没有这部分代码,CPU 将无法进行安全/非安全状态的切换,ARM TrustZone 技术也就失去了它的意义和作用。
358+
Secure Monitor 是 CPU 往来安全世界和非安全世界进行状态转换的桥梁。Secure Monitor 的代码是在 Trust 中实现的。如果没有这部分代码,CPU 将无法进行安全/非安全状态的切换,ARM TrustZone 技术也就失去了它的意义和作用。
326359

327-
那么如何进入 Secure Monitor 模式呢?需要通过 SMC 硬件指令实现,如下是 ARM 技术手册的明确说明:
360+
那么如何进入 Secure Monitor 模式呢?需要通过 SMC 硬件指令实现,如下是 ARM 技术手册的明确说明:
328361

329362
> The Secure Monitor Call exception is implemented only as part of the Security Extensions. The Secure Monitor Call instruction, SMC, requests a Secure Monitor function, causing the processor to enter Monitor mode.
330363
@@ -334,11 +367,11 @@ SYSTEM_RESET
334367

335368
#### 安全数据的保护
336369

337-
安全数据保护。例如:安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务等相关安全信息的存储保护。
370+
安全数据保护。例如:安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务等相关安全信息的存储保护。
338371

339372
## Rockchip 平台的 Trust 问题处理
340373

341-
目前对外发布的固件只提供 Trust 的 binary 文件,不提供源代码。目前对于 Trust 的调试方式比较少,更多需要借助专门的 jtag 工具来进行分析,当 Trust 出问题的时候普通使用者一般并不具备自行调试和解决问题的能力,所以出现问题时请尽量保护好现场、收集足够多的信息反馈给负责 Trust 的 maintainer。因此通常使用者应当知道哪些是 Trust 的打印信息、Trust 对应的版本号、哪些是 Trust 的 PANIC 信息等。
374+
目前对外发布的固件只提供 Trust 的 binary 文件,不提供源代码。目前对于 Trust 的调试方式比较少,更多需要借助专门的 jtag 工具来进行分析,当 Trust 出问题的时候普通使用者一般并不具备自行调试和解决问题的能力,所以出现问题时请尽量保护好现场、收集足够多的信息反馈给负责 Trust 的 maintainer。因此通常使用者应当知道哪些是 Trust 的打印信息、Trust 对应的版本号、哪些是 Trust 的 PANIC 信息等。
342375

343376
### 开机 log 示例
344377

@@ -463,10 +496,10 @@ PANIC: tee_pager_handle_fault core/arch/arm/include/mm/tee_pager.h:126
463496
## 附录参考
464497

465498
[0] 开源代码下载:<br/>
466-
ARM Trusted Firmware:<https://github.com/ARM-software/arm-trusted-firmware><br/>
467-
OP-TEE OS:<https://github.com/OP-TEE/optee_os><br/>
499+
ARM Trusted Firmware:<https://github.com/ARM-software/arm-trusted-firmware><br/>
500+
OP-TEE OS:<https://github.com/OP-TEE/optee_os><br/>
468501
[1] ARM TrustZone:<br/>
469-
<https://www.arm.com/products/security-on-arm/trustzone><br/>
470-
<https://developer.arm.com/technologies/trustzone><br/>
502+
<https://www.arm.com/products/security-on-arm/trustzone><br/>
503+
<https://developer.arm.com/technologies/trustzone><br/>
471504
[2] op-tee 官网:<https://www.op-tee.org/><br/>
472505
[3] PSCI:<http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf> "Power State Coordination Interface PDD (ARM DEN 0022C)"

TRUST/Rockchip_Developer_Guide_Trust_EN.md

+55-26
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,36 @@
11
# Trust Developer Guide
22

3-
Release version:1.1
3+
ID: RK-KF-YF-007
44

5-
Author email:[email protected]
5+
Release Version: V1.1.1
66

7-
Date:2019.11
7+
Release Date: 2021-04-26
88

9-
Security Class: Public
9+
Security Level: □Top-Secret □Secret □Internal ■Public
10+
11+
**DISCLAIMER**
12+
13+
THIS DOCUMENT IS PROVIDED “AS IS”. ROCKCHIP ELECTRONICS CO., LTD.(“ROCKCHIP”)DOES NOT PROVIDE ANY WARRANTY OF ANY KIND, EXPRESSED, IMPLIED OR OTHERWISE, WITH RESPECT TO THE ACCURACY, RELIABILITY, COMPLETENESS,MERCHANTABILITY, FITNESS FOR ANY PARTICULAR PURPOSE OR NON-INFRINGEMENT OF ANY REPRESENTATION, INFORMATION AND CONTENT IN THIS DOCUMENT. THIS DOCUMENT IS FOR REFERENCE ONLY. THIS DOCUMENT MAY BE UPDATED OR CHANGED WITHOUT ANY NOTICE AT ANY TIME DUE TO THE UPGRADES OF THE PRODUCT OR ANY OTHER REASONS.
14+
15+
**Trademark Statement**
16+
17+
"Rockchip", "瑞芯微", "瑞芯" shall be Rockchip’s registered trademarks and owned by Rockchip. All the other trademarks or registered trademarks mentioned in this document shall be owned by their respective owners.
18+
19+
**All rights reserved. ©2021. Rockchip Electronics Co., Ltd.**
20+
21+
Beyond the scope of fair use, neither any entity nor individual shall extract, copy, or distribute this document in any form in whole or in part without the written approval of Rockchip.
22+
23+
Rockchip Electronics Co., Ltd.
24+
25+
No.18 Building, A District, No.89, software Boulevard Fuzhou, Fujian,PRC
26+
27+
Website: [www.rock-chips.com](http://www.rock-chips.com)
28+
29+
Customer service Tel: +86-4007-700-590
30+
31+
Customer service Fax: +86-591-83951833
32+
33+
Customer service e-Mail: [[email protected]](mailto:[email protected])
1034

1135
---
1236

@@ -16,29 +40,36 @@ Security Class: Public
1640

1741
Trust is one of firmware in Rockchip SDK, since it is related to security and confidentiality, the source code is only open to some internal engineers (the basic functions of RK322x/RK3328/RK3368/RK3399/PX30, etc platform have been open source [0]). This document only provides an brief description of Trust (take 64-bit platform as an example), intended to give readers an idea of its role and functions in the overall system architecture. At the same time, it guides readers how to collect and feedback issues when have problems in practice.
1842

19-
**Applicable object**
43+
**Product Version**
2044

21-
This document or this guide is mainly suitable for the following engineers:
45+
| **Chipset model** | **Kernel version** |
46+
| ------------------------------------------------------- | :----------------- |
47+
| RK3036/RK3126C/RK3288/RK322X/RK3368/RK3328/RK3399/PX30/RK3308 | 3.10、4.4、4.19 |
2248

23-
* Field application engineers
49+
**Intended Audience**
2450

25-
* Software development engineers
51+
This document (this guide) is mainly intended for:
2652

27-
**Product version**
53+
Technical support engineers
2854

29-
| **Chipset model** | **Kernel version** |
30-
| ------------------------------------------------------------ | :----------------- |
31-
| RK3036/RK3126C/RK3288/RK322X/RK3368/RK3328/RK3399/PX30/RK3308 | 3.10、4.4、4.19 |
55+
Software development engineers
56+
57+
---
3258

33-
**Revision history**
59+
**Revision History**
3460

35-
| **Date** | **Version** | **Author** | **Revision Description** |
36-
| ---------- | ----------- | ------------- | ----------------------------------- |
37-
| 2017-12-30 | V1.0 | Jianhong Chen | Initial Release |
38-
| 2019-11-11 | V1.1 | Jianhong Chen | Update the chip/kernel support list |
61+
| **Version** | **Author** | **Date** | **Change Description** |
62+
| ----------- | ----------- | ---------- | -------------------- |
63+
| V1.0.0 | Jianhong Chen | | 2017-12-30 | Initial version |
64+
| V1.1.0 | Jianhong Chen | | 2019-11-11 | Update the chip/kernel support list |
65+
| V1.1.1 | Karen Huang | | 2021-04-26 | Add copyright information |
3966

4067
---
68+
69+
**Contents**
70+
4171
[TOC]
72+
4273
---
4374

4475
## ARM TrustZone
@@ -460,13 +491,11 @@ PANIC: tee_pager_handle_fault core/arch/arm/include/mm/tee_pager.h:126
460491

461492
## Appendix Reference
462493

463-
[0] Open source code download address:
464-
465-
​ ARM Trusted Firmware:<https://github.com/ARM-software/arm-trusted-firmware>
466-
​ OP-TEE OS:<https://github.com/OP-TEE/optee_os>
467-
[1] ARM TrustZone:
468-
469-
<https://www.arm.com/products/security-on-arm/trustzone>
470-
<https://developer.arm.com/technologies/trustzone>
471-
[2] op-tee official website:<https://www.op-tee.org/>
494+
[0] Open source code download address:<br/>
495+
ARM Trusted Firmware:<https://github.com/ARM-software/arm-trusted-firmware><br/>
496+
OP-TEE OS:<https://github.com/OP-TEE/optee_os><br/>
497+
[1] ARM TrustZone:<br/>
498+
<https://www.arm.com/products/security-on-arm/trustzone><br/>
499+
<https://developer.arm.com/technologies/trustzone><br/>
500+
[2] op-tee official website:<https://www.op-tee.org/><br/>
472501
[3] PSCI:<http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf "Power State Coordination Interface PDD (ARM DEN 0022C)>"

0 commit comments

Comments
 (0)