ZHCU755D August   2022  – December 2022

 

  1.   说明
  2.   资源
  3.   特性
  4.   应用
  5.   5
  6. 1系统说明
    1. 1.1 关键系统规格
  7. 2系统概览
    1. 2.1 方框图
    2. 2.2 设计注意事项
      1. 2.2.1 构建块
      2. 2.2.2 闪存分区
      3. 2.2.3 LFU 切换概念
      4. 2.2.4 应用程序 LFU 流程
  8. 3硬件、软件、测试要求和测试结果
    1. 3.1 硬件要求
    2. 3.2 软件要求
      1. 3.2.1 软件包内容
      2. 3.2.2 软件结构
    3. 3.3 TIDM-DC-DC-BUCK 简介
    4. 3.4 测试设置
      1. 3.4.1 使用 CCS 将自定义引导加载程序和应用程序加载到闪存
    5. 3.5 测试结果
      1. 3.5.1 在 CPU 上运行控制循环时运行 LFU 演示
      2. 3.5.2 在 CLA 上运行控制循环时运行 LFU 演示
      3. 3.5.3 CPU 上的 LFU 流程
      4. 3.5.4 CLA 上的 LFU 流程
      5. 3.5.5 假设
      6. 3.5.6 为 LFU 准备固件
      7. 3.5.7 LFU 编译器支持
      8. 3.5.8 稳健性
      9. 3.5.9 LFU 用例
  9. 4FOTA 示例
    1. 4.1 摘要
    2. 4.2 引言
    3. 4.3 硬件要求
    4. 4.4 软件要求
    5. 4.5 运行示例
  10. 5设计和文档支持
    1. 5.1 软件文件
    2. 5.2 文档支持
    3. 5.3 支持资源
    4. 5.4 商标
  11. 6术语
  12. 7关于作者
  13. 8修订历史记录

LFU 切换概念

为 LFU 准备固件时的关键注意事项是运行连续性和 LFU 切换时间,运行连续性是通过状态的持续性来实现的,这意味着在固件升级期间将 RAM 中公用的静态变量和全局变量保存在相同的地址,并避免在新固件生效时重新初始化这些变量。对 LFU 的编译器支持用于实现状态的持续性。

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

当有硬件支持交换闪存组 [2] 时,LFU 会被简化,其中任一闪存组都可以映射到固定地址空间,被视为运行的 闪存组。未运行的 闪存组映射到不同的地址空间,并且是更新的组。C2000™ MCU 当前不支持闪存组交换,因此,用户需要跟踪应用程序固件将驻留的闪存组,并在链接器命令文件中进行必要的分配和调整。

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

如果阵列大小发生变化或向结构中添加了变量,则用户需进行适当管理,即在开发周期的早期使用 pragma 指令将阵列和结构放置在固定位置,但要有足够的余量来满足它们在将来固件中的潜在增长。如果采用这种方法,则只需要初始化新增字段。