ZHCU803B August   2020  – September 2022 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1

 

  1.   C2000 MCU 在无器件复位时的实时固件更新
  2.   商标
  3. 1引言
  4. 2关键创新
  5. 3LFU 的构建块
  6. 4建议解决方案的详细信息
    1. 4.1 闪存组组织
    2. 4.2 影响性能的 LFU 概念和因素
    3. 4.3 LFU 的硬件支持
      1. 4.3.1 独立闪存组
      2. 4.3.2 中断向量表交换
      3. 4.3.3 RAM 块交换
      4. 4.3.4 硬件寄存器标志
    4. 4.4 LFU 编译器支持
    5. 4.5 应用程序 LFU 流程
  7. 5结果和结论
  8. 6修订历史记录

影响性能的 LFU 概念和因素

创建 LFU 就绪固件时的关键注意事项是 LFU 和 LFU 切换时间期间的操作连续性。两者密切相关。运行连续性是通过状态的持续性来实现的,在固件升级期间将 RAM 中当前的静态变量和全局变量保存在相同的地址,并避免在新固件激活时重新初始化这些变量。LFU 编译器支持将启用此功能。

激活新固件涉及分支到新固件的 LFU 入口点、执行编译器的 LFU 初始化例程、到达新映像的 main() 内部以及执行其他初始化。此时会短暂禁用中断,执行需要禁用中断的初始化(例如中断向量更新、函数指针更新),然后再重新启用中断。这个最后的时间间隔被定义为 LFU 切换时间。

当有硬件支持交换闪存组时,LFU 会简化,其中任一闪存组都可以映射到固定地址空间,被视为活动 闪存组。非活动 组映射到不同的地址空间,并且是更新的组。C2000™ MCU 当前不支持闪存组交换,因此需要跟踪运行和未运行的组,并且您需要使用链接器命令文件创建面向特定组的应用固件。

函数指针和中断向量需要在 main() 内重新初始化,因为它们在闪存组之间的位置不同。C2000 MCU 支持大量中断向量(通常为 192 个),因此对所有中断向量重新初始化不太现实。通常,只使用其中一小部分,其余的分配给默认向量。LFU 特定的硬件特性(中断向量交换、RAM 块交换),可显著 缩短 LFU 切换时间。