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

结果和结论

图 5-1 中,描述了 LFU 切换之前发生的步骤:下载固件和编程闪存组、LFU 编译器初始化例程(函数 __TI_auto_init_warm()),然后在 main() 中执行 LFU 特定初始化(init_lfu() 函数)。

GUID-20220804-SS0I-WTC2-82C2-T9D8ZMLKFZP6-low.png图 5-1 LFU 切换前的步骤

图 5-2 展示了实际的 LFU 切换。最顶部的波形 (00) 表示 LFU 切换,第二个波形 (01) 表示 ISR CPU 负载(旧固件为 80%,新固件为 40%),底部波形 (03) 表示稳定的输出电压。切换在 0.6µs(或 72 个 CPU 时周期)内发生,其中包括函数调用和 GPIO 设置/复位时间。ISR 结束后大约 40 个周期发生切换。退出 ISR 大约需要 20 个周期,然后退出等待理想切换时间的循环大约需要 15 个周期。

GUID-20220804-SS0I-H26K-CGL2-X2JHPKRF4MKD-low.png图 5-2 LFU 切换步骤

本应用手册演示了适合于实时控制应用程序的 LFU 的系统实现,尤其是需要在无停机条件下运行的高可用性系统。借助可用的 LFU 构建块,可以在 10 秒的 CPU 时钟周期内完成到新固件的切换,包括全新的应用程序 LFU 软件流程、硬件 LFU 支持和编译器 LFU 支持。