ZHCAEP5A November   2024  – October 2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 简介
  5. 补充性在线信息
  6. SSU 概述
  7. 关键概念定义
  8. 功能安全和信息安全目标
  9. 系统设计
  10. 配置 SSU
    1. 7.1 闪存 SECCFG 区域
    2. 7.2 SSU 开发生命周期
    3. 7.3 使用 SysConfig 工具
      1. 7.3.1 启用系统安全配置
      2. 7.3.2 配置应用模块
      3. 7.3.3 配置特殊模块
        1. 7.3.3.1 LINK2 配置
        2. 7.3.3.2 LINK1 配置
        3. 7.3.3.3 通用代码链接配置
      4. 7.3.4 定义沙盒
      5. 7.3.5 添加共享内存
  11. 调试授权
    1. 8.1 基于密码的解锁
  12. 调试 SSU
    1. 9.1 调试构建错误
    2. 9.2 调试运行时错误
  13. 10SSU 常见问题解答 (FAQ)
  14. 11总结
  15. 12参考资料
  16. 13修订历史记录

系统设计

为应用程序配置 SSU 的第一步是确定所需的系统分区。SSU 为应用程序子系统的分区提供了三个层次:

  1. ZONE:每个 ZONE 决定芯片上所有 C29 CPU 的调试访问权限。ZONE 的设计目的是使多个代码所有者或实体能够开发和维护驻留在同一芯片上的应用程序的不同分区。例如,如果嵌入式应用的某个方面由第三方供应商拥有和维护,那么系统就可以分为两个 ZONE:
    1. ZONE1:主用户 ZONE,由主系统开发商拥有;
    2. ZONE2:辅助用户 ZONE,由第三方开发商拥有。

    这种分区使第三方开发商能够在同一芯片上开发、调试和维护应用程序功能,而无需访问主用户的代码和数据资产。此外,每个用户 ZONE 还提供两级调试授权:

    1. 部分调试 - 允许使用 CPU 调试命令,如停止、步进和断点,但不能访问内存
    2. 完全调试 - 允许访问 ZONE 内所有 LINK 的内存位置。

    例如,第三方开发人员等辅助用户可在 ZONE2 中调试应用模块,同时也可获得 ZONE1 的部分调试访问权限,这样辅助用户就能在上下文中有效调试应用,而无需访问主用户的资产。

    每个器件都有 3 个可用的用户 ZONE:ZONE1、ZONE2 和 ZONE3。ZONE1 是主用户 ZONE;ZONE2 和 ZONE3 是辅助用户 ZONE。

  2. 沙盒 (STACK):沙盒用于在 CPU 内提供安全隔离。每个沙盒都与 SSU 中的一个 STACK 相关联。每个沙盒在 CPU 中都有一个专用的物理栈指针,其他沙盒无法访问该指针,同时还有一个专用的栈内存 AP 区域,只有属于该沙盒的代码对该区域具有读取/写入权限。

    从一个 STACK 跨到另一个 STACK 时,需要使用特殊的 C29 CPU 门指令。编译器必须在每个函数的入口和出口以及函数调用或分支处插入这些指令。这些机制可提供安全保护,防止试图重定向代码执行或操纵栈的恶意软件攻击。

    沙盒由 SSU STACK 以及与 STACK 相关的所有内容(包括栈内存 AP 区域)组成。每个 STACK 属于一个 ZONE,但一个 ZONE 可以包含多个 STACK

    表 6-1 每个 CPU 的预定义 STACK
    STACK # 说明
    STACK0 此 STACK 保留供 TI 内部使用,无法由用户配置。
    STACK1 此 STACK 主要用于引导加载程序,但也可以与其他用户应用程序代码相关联。STACK1 始终与 ZONE1 关联,仅包含一个 LINK (LINK1)。
    STACK2 这是主用户 STACK。STACK2 始终与 ZONE1 关联。STACK2 始终包含 LINK2,但也可以包含其他 LINK。
  3. 应用模块 (LINK):应用模块是系统应用程序的基本分区。每个模块均由单个 SSU LINK、一个或多个包含 LINK 代码的代码内存 AP 区域、与 LINK 相关的所有数据内存 AP 区域以及与模块相关的所有外设和中断组成。

    通常,代码 AP 区域包含 .text 和其他包含代码的链接器输出段,数据 AP 区域包含 .bss.const 和其他包含数据和变量的链接器输出段。

    每个 LINK 都能启用 SSU 内存保护,提供 CPU 中其他 LINK 的安全保护。每个 AP 区域都为每个 LINK 定义了访问权限。这些权限会根据 LINK ID 指令,在每条执行内存访问的指令中实时执行。需要相互功能安全隔离的功能可以放在单独的模块中。如果需要信息安全隔离,则将这些模块置于单独的沙盒中;如果不需要,则可将这些模块置于同一沙盒中。

表 6-2 每个 CPU 的预定义 LINK
LINK # 说明
LINK0 此 LINK 保留供 TI 内部使用,无法由用户配置。
LINK1 此 LINK 主要用于引导加载程序,但也可以与其他用户应用程序代码相关联。CPU1.LINK1 具有一些特殊的固定权限,除了 AP 定义的保护外,还能访问某些系统配置寄存器。
LINK2 这是主用户 LINK。CPU1.LINK2 是系统安全根 LINK (SROOT),具有特殊的固定权限,可访问系统配置寄存器和覆盖控制。该 LINK 通常在 RTOS 级别执行特权主机功能。
 使用 SSU 进行软件分区的示例图 6-1 使用 SSU 进行软件分区的示例

图 6-1 展示了单 CPU、单 ZONE 系统上的 SSU 系统分区示例,并且表 6-3 介绍了该配置背后的详细信息。

表 6-3 所解释的 SSU 分区示例
STACK LINK 详细信息
STACK 2 LINK2 RTOS 在 STACK2.LINK2 中运行,负责初始化系统配置、设置外设和中断,并启动主执行循环。虽然可以将各种任务和各自的任务栈放置在其他 LINK 中,但所有 RTOS 任务/栈都需要位于 SSU STACK2 中。如果使用了 RTINT,则与 RTINT 相关的代码和数据应置于 SSU STACK2 以外的单独 SSU STACK 中。
STACK 3 LINK3 和 LINK 4 有两个控制功能:Control Loop1Control 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 上的模块之间共享的内存区域。