ZHCAEP5A November 2024 – October 2025 F29H850TU , F29H859TU-Q1
为应用程序配置 SSU 的第一步是确定所需的系统分区。SSU 为应用程序子系统的分区提供了三个层次:
这种分区使第三方开发商能够在同一芯片上开发、调试和维护应用程序功能,而无需访问主用户的代码和数据资产。此外,每个用户 ZONE 还提供两级调试授权:
例如,第三方开发人员等辅助用户可在 ZONE2 中调试应用模块,同时也可获得 ZONE1 的部分调试访问权限,这样辅助用户就能在上下文中有效调试应用,而无需访问主用户的资产。
每个器件都有 3 个可用的用户 ZONE:ZONE1、ZONE2 和 ZONE3。ZONE1 是主用户 ZONE;ZONE2 和 ZONE3 是辅助用户 ZONE。
从一个 STACK 跨到另一个 STACK 时,需要使用特殊的 C29 CPU 门指令。编译器必须在每个函数的入口和出口以及函数调用或分支处插入这些指令。这些机制可提供安全保护,防止试图重定向代码执行或操纵栈的恶意软件攻击。
沙盒由 SSU STACK 以及与 STACK 相关的所有内容(包括栈内存 AP 区域)组成。每个 STACK 属于一个 ZONE,但一个 ZONE 可以包含多个 STACK
| STACK # | 说明 |
|---|---|
| STACK0 | 此 STACK 保留供 TI 内部使用,无法由用户配置。 |
| STACK1 | 此 STACK 主要用于引导加载程序,但也可以与其他用户应用程序代码相关联。STACK1 始终与 ZONE1 关联,仅包含一个 LINK (LINK1)。 |
| STACK2 | 这是主用户 STACK。STACK2 始终与 ZONE1 关联。STACK2 始终包含 LINK2,但也可以包含其他 LINK。 |
通常,代码 AP 区域包含 .text 和其他包含代码的链接器输出段,数据 AP 区域包含 .bss、.const 和其他包含数据和变量的链接器输出段。
每个 LINK 都能启用 SSU 内存保护,提供 CPU 中其他 LINK 的安全保护。每个 AP 区域都为每个 LINK 定义了访问权限。这些权限会根据 LINK ID 指令,在每条执行内存访问的指令中实时执行。需要相互功能安全隔离的功能可以放在单独的模块中。如果需要信息安全隔离,则将这些模块置于单独的沙盒中;如果不需要,则可将这些模块置于同一沙盒中。
| LINK # | 说明 |
|---|---|
| LINK0 | 此 LINK 保留供 TI 内部使用,无法由用户配置。 |
| LINK1 | 此 LINK 主要用于引导加载程序,但也可以与其他用户应用程序代码相关联。CPU1.LINK1 具有一些特殊的固定权限,除了 AP 定义的保护外,还能访问某些系统配置寄存器。 |
| LINK2 | 这是主用户 LINK。CPU1.LINK2 是系统安全根 LINK (SROOT),具有特殊的固定权限,可访问系统配置寄存器和覆盖控制。该 LINK 通常在 RTOS 级别执行特权主机功能。 |
图 6-1 展示了单 CPU、单 ZONE 系统上的 SSU 系统分区示例,并且表 6-3 介绍了该配置背后的详细信息。
| STACK | LINK | 详细信息 |
|---|---|---|
| STACK 2 | LINK2 | RTOS 在 STACK2.LINK2 中运行,负责初始化系统配置、设置外设和中断,并启动主执行循环。虽然可以将各种任务和各自的任务栈放置在其他 LINK 中,但所有 RTOS 任务/栈都需要位于 SSU STACK2 中。如果使用了 RTINT,则与 RTINT 相关的代码和数据应置于 SSU STACK2 以外的单独 SSU STACK 中。 |
| STACK 3 | LINK3 和 LINK 4 | 有两个控制功能:Control Loop1 和 Control Loop 2。这些控制功能中的每一个都放在单独的应用模块 (LINK) 中,并且两个应用模块放在同一沙盒中。在此系统中,两个控制功能之间需要物理安全隔离,但不需要信息安全隔离。 |
| STACK 4 | LINK 5 | LINK5 包含主机通信代码,例如 UART 或 CAN-FD 代码。由于来自外部接口的数据可能会对系统中的其他功能构成安全威胁,因此该模块被置于单独的沙盒中。 |
| STACK 5 | LINK 6 | 包含系统中所有其他模块之间共享的公共代码函数。LINK 6 被定义为其他 LINK 的访问保护继承 LINK (APILINK)。通用代码模块也被置于单独的沙盒中,以保持与系统其他部分的信息安全隔离(同时保持继承的权限)。建议将通用代码 LINK 放置在其自身的 STACK 中。 |
SysConfig 完全支持多核应用。内置内存分配器工具可自动管理多个 CPU 上与应用模块相关的内存区域,还可管理整个器件的外设分配。SysConfig 工具还包括共享内存功能,用于定义可在同一 CPU 或多个 CPU 上的模块之间共享的内存区域。