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参考资料

ROM 引导加载程序

说明了闪存内核的基本理念以及如何进行固件升级,下一节将详细介绍该过程的第一步:通过 bootROM 将内核加载到 RAM。

开始时,器件启动,并根据引导模式决定器件是执行已编程到闪存中的代码还是使用某个 ROM 加载程序加载代码。本应用手册重点介绍未连接仿真器时的引导执行路径。

注: 本节基于 F29H85x 器件。特定器件的具体信息可以在器件特定技术参考手册 (TRM) 的 ROM 代码和外设启动 部分中找到。
表 2-2 F29H85x 器件的默认引导模式
引导模式 GPIO72(默认引导模式选择引脚 1) GPIO84(默认引导模式选择引脚 0)
并行 I/O 0 0
UART 0 1
CAN 1 0
闪存 1 1

在启动 ROM 准备好使用的器件后,器件决定从哪里开始执行。如果是独立启动,器件通过检查两个 GPIO(如表 2-2 中所示,默认选择是 GPIO 72 和 84)的状态来实现此目的。在某些情况下,可以检查编程到一次性可编程 (OTP) 存储器中的两个值。在本应用手册中所述的实现方案中,使用了 UART 加载程序,因此在上电时 GPIO 84 必须强制为高电平,GPIO 72 必须强制为低电平。如果器件启动时出现这种情况,则 ROM 中的 UART 加载程序以 115200 的波特率开始执行并运行。此时,器件已准备好接收来自主机的代码。

之前基于 C28 的器件和 F29H85x 之间的主要区别在于是否包含硬件安全模块 (HSM)。所有启动流程都需要 HSM 对传入映像进行身份验证,然后才能执行启动流程。

有关启动流程的详细信息,请参阅技术参考手册 (TRM) 的 ROM 代码和外设启动 部分。有关 HSM 和 C29 CPU 在启动序列期间如何进行通信,请参阅器件启动流程图 部分。