支持TrustZone的开发流程和传统的开发流程有很大的不同,在进行实际的TrustZone项目开发之前,这里先对一些基本的概念进行介绍。这里先介绍TrustZone的开发模型。
e2studio IDE本身较好的支持了TrustZone的开发,
可以跟着项目生成器一步步创建TrustZone项目,下载期间自动计算IDAU区域,FSP包代码也比较好的支持TrustZone。
如下项目生成器中就提供以下三种向导模式:
Flat对应没有(或不使用)TrustZone的工程创建
TrustZone Secure和TrustZone Nonsecure分别对应有TrustZone的安全和非安全工程创建。
下面介绍不同的开发模型,后面再针对不同开发模型进行实例演示。
使用联合式项目开发模型时,安全和非安全项目由同一个受信任的团队开发。安全项目必须与非安全项目位于同一工作区中,并且通常在设计工程师有权访问安全和非安全项目源时使用。 此外,将引用一个安全的 .elf 文件并将其包含在调试编译的调试配置中,以便下载到目标器件。开发工程师将能够查看安全和非安全项目的源代码和配置。
主要包括以下过程
使用 RA 项目生成器模板创建安全项目类型
查看生成的初始安全捆绑包sbd文件
开发安全应用程序:
添加所需的 FSP 模块,定义 NSC 模块
创建用户定义的非安全可调用函数
开发安全应用程序
设计代码流,在开始非安全项目执行之前运行不需要非安全可调用功能的安 全应用程序(在调用函数 R_BSP_NonSecureEnter(); 之前)
重新编译并测试应用程序
隔离调试安全项目
调试安全项目和非安全项目
使用 RA 项目生成器模板创建非安全项目类型
建立位于同一 e2 studio 工作区中的安全项目的链接
调试安全项目和非安全项目
确保安全项目和非安全项目之间同步
一般需要以下内容
安全二进制文件
非安全二进制文件
IDAU 区域配置
— 安全和非安全应用程序由两个不同的团队开发
— 非安全应用程序团队无法直接访问安全分区资产,只能通过非安全可调用 API 访问安全分区。
安全项目和非安全项目由两个不同的团队单独开发 安全项目将首先由 IP 提供商开发。IP 提供商创建一个安全捆绑包。 在非安全开发人员开始开发之前,安全捆绑包已预先烧录到 MCU 里。非安全开发人员只能看到非安全项 目和非安全分区。
r11an0467cu0110-ra-trustzone-ip-protect.pdf