ZHCU802A March   2020  – August 2021 TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1

 

  1.   商标
  2. 1引言
  3. 2LFU 所需资源
  4. 3存储器布局
  5. 4LFU 中的静态代码
  6. 5LED 示例应用和 LFU 流程
  7. 6运行 LED 示例
    1. 6.1 串行闪存编程器更新
    2. 6.2 静态代码编程 – 通过 Code Composer Studio (CCS) 加载
    3. 6.3 应用的实时固件更新
    4. 6.4 限制和疑难解答
  8. 7修订历史记录

应用的实时固件更新

对静态内容进行编程后,断开调试器的连接,并将引导模式开关设为闪存引导模式。器件进行引导时,将跳转至闪存。默认的闪存入口点是 0x80000,这是 Bank0 中编程静态代码(组选择逻辑 + SCI 闪存内核)的位置。组选择逻辑将执行,并确定闪存组 0 和 1 中均存在有效映像(基于 KEY 和版本号)。将选择运行 Bank0,因为在Topic Link Label6.1中,它是较晚编程的,因此会根据 REV 字段判定为最新版本。因此将执行 Bank0 中的应用固件。

此应用每秒钟闪烁一次 LED1。同时,应用还会监控串行端口,检查是否存在用于实时固件更新的映像。

若要执行实时固件更新,应为 BANK1 配置构建更新的应用,并从主机 PC 的命令行中执行图 6-13 中显示的命令。列出菜单后输入“8”来选择 LDFU。 serial_flash_programmer_appln.exe -d f28004x -k f28004x_fw_upgrade_example\flashapi_ex2_sci_kernel.txt -a flashapi_ex3_live_firmware_updateBANK1FLASH.txt -b 9600 -p COMx.

GUID-8D3488A6-2980-4A60-9678-8E86225103EE-low.png图 6-13 根据 Windows 命令提示调用的 LFU 串行命令

如果它接收一个映像,控制将跳转至 Bank0 中的闪存内核,并更新 Bank1 上的固件映像。传输完成后,输入 0 以指示命令操作结束。在将新映像下载到 Bank1 的过程中,应用会继续在 Bank0 上运行(LED1 继续照常每秒闪烁)。这是因为 LFU 处理在后台循环中进行,不是在 SCI 接收中断中进行。这样就可以处理其他中断(例如开关 LED 的 CPU 计时器中断)。

GUID-0A499F38-0175-4EAE-B0A1-81BD02293C5D-low.png图 6-14 成功完成对闪存组进行编程的 LFU 命令

看门狗计时器复位后,器件也会复位,控制会传递至 Bank1 中最新的应用映像,LED2 将开始闪烁。

注:

不再需要手动将器件复位。

重复此过程,以更新交替组中的映像。图 6-15 所示为上述流程。

GUID-23A0A367-DED3-4470-B784-D690B6E7AE14-low.gif图 6-15 LFU 代码流程图