ZHCU802B August   2020  – March 2026 TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1

 

  1.   1
  2.   C2000 MCU 在有器件复位时的实时固件更新
  3.   商标
  4. 1简介
  5. 2LFU 所需资源
  6. 3存储器布局
  7. 4LFU 中的静态代码
  8. 5LED 示例应用和 LFU 流程
  9. 6运行 LED 示例
    1. 6.1 串行闪存编程器更新
    2. 6.2 静态代码编程 – 通过 Code Composer Studio (CCS) 加载
    3. 6.3 应用的实时固件更新
    4. 6.4 限制和疑难解答
  10. 7扩展实现方案
    1. 7.1 F28P65x MCU 上带复位的实时固件更新
      1. 7.1.1 F28P65x LFU 硬件要求
      2. 7.1.2 闪存组织
      3. 7.1.3 FWU 引导模式
      4. 7.1.4 LED 示例应用
        1. 7.1.4.1 LFU 命令处理
      5. 7.1.5 运行示例
        1. 7.1.5.1 加载示例
        2. 7.1.5.2 组合 CPU1 和 CPU2 固件映像
        3. 7.1.5.3 LFU over MCAN 主机编程器
          1. 7.1.5.3.1 编译主机编程器
          2. 7.1.5.3.2 使用主机编程器
      6. 7.1.6 限制
  11. 8修订历史记录

LFU 命令处理

当主机实用程序向器件发送新命令时,CPU2 接收并解析该命令以确定 LFU 模式。可用的 LFU 命令如下:

CPU2 LFU 命令

如果该命令与 CPU2 LFU (COMMAND_LFU_CPU2) 命令匹配,则代码会跳转到活动 CPU2 闪存组中的 CPU2 LFU 函数(sbl_command_flow.c 中的 LFUCPU2Flow())。在此函数中,在擦除非活动 CPU2 闪存组后,执行工作转至 downloadBlock () 函数。固件(采用适当的十六进制格式)在非活动闪存组中进行编程和验证。然后,CPU2 为 CPU2 自身配置一次看门狗复位。CPU2 复位后,CPU1 处理 CPU2.NMIWDRSn NMI 并在 FWU 模式下引导 CPU2 以执行活动固件。

CPU1 LFU 命令

如果该命令与 CPU1 LFU (COMMAND_LFU_CPU1) 命令匹配,则代码跳转到活动 CPU2 闪存组中的 CPU1 LFU 函数(sbl_command_flow.c 中的 LFUCPU1Flow())。在此函数中,在擦除非活动 CPU1 闪存组后,执行工作转至 downloadBlock () 函数。固件(采用适当的十六进制格式)在非活动 CPU1 闪存组中进行编程和验证。然后,CPU2 发出 IPC 命令以配置一次 CPU1 看门狗复位。请注意,CPU2 也会在 CPU1 看门狗复位时复位。因此,在 CPU1 以 FWU 模式引导至活动 CPU1 闪存组后,CPU1 应用程序必须在 FWU 模式下引导 CPU2 以执行活动固件。

CPU1 + CPU2 LFU 命令

如果该命令与 CPU1 + CPU2 LFU (COMMAND_LFU_CPU1_CPU2) 命令匹配,则代码跳转到活动 CPU2 闪存组中的 CPU1 + CPU2 LFU 函数(sbl_command_flow.c 中的 LFUCPU1CPU2Flow())。在此函数中,在擦除非活动的 CPU1 和 CPU2 闪存组后,执行工作转至 downloadBlock() 函数(调用两次以对 CPU1 和 CPU2 闪存进行编程)。固件(采用适当的十六进制格式)在非活动 CPU1 和 CPU2 闪存组中进行编程和验证。然后,CPU2 发出 IPC 命令以配置一次 CPU1 看门狗复位。请注意,CPU2 也会在 CPU1 看门狗复位时复位。因此,在 CPU1 以 FWU 模式引导至活动 CPU1 闪存组后,CPU1 应用程序必须在 FWU 模式下引导 CPU2 以执行活动固件。