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
创建 LFU 就绪固件时的关键注意事项是 LFU 和 LFU 切换时间期间的操作连续性。两者密切相关。运行连续性是通过状态的持续性来实现的,在固件升级期间将 RAM 中当前的静态变量和全局变量保存在相同的地址,并避免在新固件激活时重新初始化这些变量。LFU 编译器支持将启用此功能。
激活新固件涉及分支到新固件的 LFU 入口点、执行编译器的 LFU 初始化例程、到达新映像的 main() 内部以及执行其他初始化。此时会短暂禁用中断,执行需要禁用中断的初始化(例如中断向量更新、函数指针更新),然后再重新启用中断。这个最后的时间间隔被定义为 LFU 切换时间。
当有硬件支持交换闪存组时,LFU 会简化,其中任一闪存组都可以映射到固定地址空间,被视为活动 闪存组。非活动 组映射到不同的地址空间,并且是更新的组。C2000™ MCU 当前不支持闪存组交换,因此需要跟踪运行和未运行的组,并且您需要使用链接器命令文件创建面向特定组的应用固件。
函数指针和中断向量需要在 main() 内重新初始化,因为它们在闪存组之间的位置不同。C2000 MCU 支持大量中断向量(通常为 192 个),因此对所有中断向量重新初始化不太现实。通常,只使用其中一小部分,其余的分配给默认向量。LFU 特定的硬件特性(中断向量交换、RAM 块交换),可显著 缩短 LFU 切换时间。