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 提供以下支持:
编译器要求在构建新的固件可执行文件时将旧固件可执行文件作为参考映像提供。这允许编译器识别公用变量及其位置,以及识别新变量和删除的变量。
编译器为变量定义了 2 个新 LFU 属性,分别称为 preserve 和 update。“Preserve”用于在固件升级期间维持公用变量的地址。“Update”用于指示编译器可以无约束地为其分配地址的新变量,还在编译器的 LFU 初始化例程(名为 __TI_auto_init_warm())期间进行初始化。下面列出了如何使用这些属性的示例:
float32_t __attribute__((preserve)) BUCK_update_test_variable1_cpu;
float32_t __attribute__((update)) BUCK_update_test_variable2_cpu;
使用上述分配,生成的存储器映射文件包含与 preserve 变量对应的“.TI.bound”部分和一个收集所有更新变量的“.TI.update”部分。
为了让应用开发人员处理起来更轻松,可以使用不同的 LFU 模式。默认模式称为 preserve(不要与上面描述的相应变量属性混淆),它具有以下属性: