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修订历史记录

存储器布局

闪存存储器的分区如图 3-1所示。

 闪存存储器组 0 和组 1 的内容图 3-1 闪存存储器组 0 和组 1 的内容

假设每组闪存有 16 个扇区,两个扇区已分配给静态代码(代码在不同应用中均保持不变)。节 4进行了相关介绍。

保留了扇区 2 中的几个位置,用于存储以下条目:

  • START – 当这个 64 位的字段由串行通信接口 (SCI) 闪存内核在特定闪存组中设置(设为 0x5A5A5A5A5A5A5A5A),则说明相应的闪存组已被擦除(应用扇区),而且编程/验证即将开始。在此示例中,START 字段在 BANK0 中位于地址 0x82000,在 BANK1 中位于地址 0x92000。
  • REV – 这代表 32 位固件版本号,由 SCI 闪存内核设置,由组选择逻辑用于确定在闪存组 0 和 1 之间哪一个是最新映像。REV 始于 0xFFFFFFFF,每个后续闪存编程周期都会递减。因此具有较低版本号的闪存组被视为最新版本。为了简单起见,固件版本字段由闪存内核处理。实际上,最近下载的映像可能并不是最新固件版本,应用映像包含固件版本,但此模型假设内核会更新 REV 字段。在此示例中,REV 字段在 BANK0 中位于地址 0x82006,在 BANK1 中位于地址 0x92006。假设 REV 在 BANK0 中为 FFFF FFFA,在 BANK1 中为 FFFF FFF9,则 BANK1 将被视为最新固件并执行。
  • KEY – 如果此位置包含有效 KEY (0x5B5B5B5B),闪存组中的映像将被视为有效。这个 KEY 将由 SCI 闪存内核写入,并由组选择逻辑读取并测试。在此示例中,KEY 字段在 BANK0 中位于地址 0x82004,在 BANK1 中位于地址 0x92004。

扇区 2 的其余部分和扇区 3-15 可用于存储应用映像。这样扇区 0 和 1 中的静态代码可编程一次,在 LFU 期间保持不变。