ZHCAEV6 December   2024 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1编程基础知识
  5. 2引言
    1. 2.1 硬件安全模块
    2. 2.2 ROM 引导加载程序
    3. 2.3 带有 X.509 证书的合并映像
  6. 3闪存内核实现
    1. 3.1 CPU1 固件升级 (HS-FS)
    2. 3.2 密钥预置(HS-FS 至 HS-KP)
    3. 3.3 CPU1 安全固件升级(HS-KP/SE 至 HS-SE)
    4. 3.4 HSM 固件升级(HS-KP/SE 至 HS-SE)
    5. 3.5 SECCFG 代码预置(HS-KP/SE 至 HS-SE)
  7. 4主机应用程序:UART 闪存编程器
    1. 4.1 概述
    2. 4.2 使用 Visual Studio 构建 UART 闪存编程器
    3. 4.3 使用 CMake 构建 UART 闪存编程器
    4. 4.4 数据包格式
    5. 4.5 内核命令
  8. 5示例用法
    1. 5.1 将闪存内核加载到器件中
      1. 5.1.1 硬件设置
      2. 5.1.2 运行 UART 闪存编程器
    2. 5.2 CPU1 器件固件升级(仅限 HS-FS)
    3. 5.3 将 HS-FS 转换为 HS-SE
    4. 5.4 加载基于 RAM 的 HSMRt 映像
    5. 5.5 密钥预置(HS-FS 至 HS-KP)
    6. 5.6 代码预置(HS-KP/SE 至 HS-SE)
  9. 6故障排除
    1. 6.1 一般信息
    2. 6.2 UART 引导
    3. 6.3 应用程序加载
  10. 7总结
  11. 8参考资料

概述

UART 闪存编程器是一个命令行界面程序,在主机 PC 上运行,并与目标器件上的 bootROM 或 UART 闪存内核连接。该程序可以轻松地集成到脚本环境中,用于诸如生产线编程之类的应用。

UART 闪存编程器用 C++ 编写,可在 Windows®Linux® 中作为 Microsoft Visual Studio® 或 CMake 工程进行构建。工程和源代码可以在 SDK 的工具目录中找到 (f29h85x-sdk_x_xx_xx_xx > tools> flash_programmers > uart_flash_programmer)。

提供了两个预编译的 Windows 可执行文件:

  • uart_flash_programmer.exe (x86_64):该程序首先在 UART 引导模式下将 SBL(辅助引导加载程序,在本例中为 UART 闪存内核)映像发送到 BootROM,随后 BootROM 将器件控制移交给 SBL。然后,系统会提示用户选择在内核中通信和执行命令的选项。
    • 注: BootROM 遵循严格的状态机序列,要求在任何 HSM 服务之前进行 SBL 引导,因此,请使用这个可执行文件进行有关 HSM 的操作。例如,使用这个可执行文件进行密钥预置和代码预置。
    • 有关 BootROM 的详细信息,请参阅节 2.2
  • uart_flash_programmer_appIn.exe (x86_64):该程序绕过将内核发送到 BootROM,并直接提示用户使用命令选项。这对于调试自定义内核很有用。
    • 用户可以通过 CCS 或其他映像加载方法将内核直接加载到器件。
    • 用户可以取消定义内核 宏,以便包括 Common.h 文件,并重新编译工程以生成使用此行为的可执行文件。

对于 Linux 用户,提供了 shell 脚本 build_cmake.sh,以便自动执行 CMake 构建。默认源代码生成一个与 uart_flash_programmer.exe 相同的可执行文件。

若要使用此工具对 F29H85x 器件进行编程,请确保目标器件已复位且处于 UART 引导模式,并且 UART 引脚通过 UART 收发器连接至主机 PC 串行端口。有关设置详细信息,请参阅节 5.1

通过提供 -h 或 --help 作为参数,可以显示支持的参数。

Syntax:
uart_flash_programmer.exe -d f29h85x -p <COM/tty Port> -k <uart kernel image>.bin -a <CPU1 application image>.bin -e <F29x alternate entry address>-r <HSM runtime image>.bin -f <user HSM keys>.bin -t <CPU1 application image>.bin -g <HSM application image>.bin -c <sec cfg program image>.bin -q -w
表 4-1 支持的参数
-d,--device <device>要连接和加载的器件的名称。

目前,F29H85x 是唯一支持的器件。

-k,--kernel <file>CPU1 闪存内核的文件名
-a,--appcpu1 <file>

要通过 DFU 为 HS-FS 器件下载的 CPU1 应用程序映像的文件名。

-r,--hsmrt <file>

基于 RAM 的 HSM 运行时映像的文件名。在密钥预置和代码预置之前加载运行时映像需要此文件名。

-f,

--hsmkeys <file>

用于将器件转换为 HS-KP 的 HSM 证书密钥映像的文件名。

-t,--cpappcpu1 <file>

对于 HS-KP/HS-SE 器件的代码预置,这是基于闪存的 CPU1 应用程序映像的文件名。

-g,--cpapphsm <file>对于 HS-KP/HS-SE 器件的代码预置,这是基于闪存的 HSM 应用程序映像的文件名。
-s,

--cpseccfg <file>

用于通过代码预置对非主闪存中的 SEC CFG 区段进行编程的映像的文件名。
-e,--entry <hex_num>用于覆盖 C29 CPU1 应用程序的默认入口地址的可选参数。例如,对于十六进制地址 0x10001000,传递 10001000。TI 建议使用默认的 10001000 作为入口地址,因为这是 bootROM 闪存入口点。
-h,--help显示帮助对话框。
-q,

--quiet

安静模式。禁止所有非必要的打印输出。
-l,

--log <file>

日志模式。重定向

指定文件的所有非必要打印输出。如果已指定,则覆盖静默模式。

-w退出前等待按键。

-d、-p、-k 是必需的参数。

注:

编程到 F29H85x 中的所有文件都必须采用二进制格式并与 X.509 证书结合使用。二进制文件的前 0x1000 个字节必须包含证书。有关编译后步骤的说明,请参阅