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

静态代码编程 – 通过 Code Composer Studio (CCS) 加载

图示步骤中使用的硬件是 ControlCARD 集线站 Rev4.1 上的 F28004x ControlCARD。如果 JTAG 连接可用,则 CCS 可用于为闪存组 0 和 1 加载静态代码。注意:

注:

在加载映像之前,请确保在 CCS(或您的目标配置文件 – 右键单击选择属性)中如图 6-1 所示进行设置。在 BANK0_LDFU 和 BANK1_LDFU 配置中构建 flashapi_ex2_sci_kernel 工程,并分别加载至目标。CCS 闪存插件会将内容加载至闪存。

GUID-DDD0605A-9E27-4A3A-80AB-BF0CC4DA5E42-low.png图 6-1 将闪存设置为仅擦除必要扇区
  1. 加载 BANK0 静态映像(flashapi_ex2_sci_kernel 工程的 BANK0_LDFU)。
    GUID-C7F0DD6C-24AA-4D55-A1C1-0E2457236A8E-low.png图 6-2 选择要加载到闪存组 0 的内核

    将静态内容加载到 BANK0 后,首先会执行组选择逻辑,确定在两个组中均未对应用固件进行编程。

    控制将传递到闪存内核,它将做好在 BANK1 中对应用进行编程的准备。图 6-3 所示为 CCS 视图(程序不会在 main() 停止,而是会继续运行并等待 SCI 命令):

    GUID-F1C69C4E-7E83-45C2-A4C3-B97ADCFECC14-low.png图 6-3 编程闪存组 0 内核后的 CCS 窗口视图
  2. 在 CCS 中打开“Memory Browser”窗口,并输入地址 0x80000,验证 BANK0 的内核内容。
    GUID-AE741A8D-B2B3-43BA-97B1-F2BAEDCB4181-low.png图 6-4 验证闪存组 0 内核编程成功的 CCS 存储器浏览器视图
  3. 现在切换到 Windows 命令提示,并执行以下命令: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 其中 x = PC 和目标板之间相应 JTAG 连接的 COM 端口。可以在设备管理器中寻找端口,从而找到该 COM 端口号。在目标和计算机之间如果连接了提供 JTAG 和 SCI 功能的 USB 电缆,则会出现该端口号。此示例使用的波特率为 9600。以构建配置 BANK1_FLASH 构建 CCS 工程 flashapi_ex3_live_firmware_update 将生成 flashapi_ex3_live_firmware_updateBANK1FLASH.txt。
    GUID-5F9B3451-F213-4411-A211-E3BC7B905F9A-low.png图 6-5 根据 Windows 命令提示调用的 LFU 串行命令
  4. 选择 LDFU (8) 命令后,内核将在 BANK1 中接收并对应用进行编程。应用大小约为 36KB。下载时间约为 30 秒。
    GUID-941ECCF6-2BA7-45D5-B2AB-3CAF439F75AA-low.png图 6-6 成功完成对闪存组 1 进行编程的 LFU 命令
  5. 传输完成后,输入 0 指示命令操作结束。在 CCS 中打开“Memory Browser”窗口,并输入地址 0x92000,验证 BANK1 的应用内容。
    GUID-C1110808-5F23-4664-B85F-EA63971AD3B2-low.png图 6-7 验证闪存组 1 中的应用编程成功的 CCS 存储器浏览器视图

    内核还将更新 BANK1 扇区 2 中的 KEY 和版本号。现在静态映像在编程后的 BANK0 中,应用映像在 BANK1 中编程。

  6. 此时,用户将电路板复位就可以看到 LED2 开始闪烁。
  7. 接下来加载 BANK1 静态映像(flashapi_ex2_sci_kernel 工程的 BANK1_LDFU)。
    GUID-6A095036-22DF-4C14-805E-F254990EC121-low.png图 6-8 选择要加载到闪存组 1 的内核
  8. 在 CCS 中打开“Memory Browser”窗口,并输入地址 0x90000,验证 BANK1 的内核内容。
    GUID-09212A5E-5806-4DFD-9669-C97D7980B4D1-low.png图 6-9 验证闪存组 1 内核编程成功的 CCS 存储器浏览器视图

    静态内容被加载到 BANK1 之后,在 main() 停止执行。Bank1 的内核将出现这种情况,因为组选择逻辑仅位于 Bank0 上,不在 Bank1 上。因此,对于 Bank1 来说,执行流程遵循传统流程,codestart 延伸至 main()。

    GUID-EAE710BA-7A76-4E72-8979-CE95C33A6B29-low.png图 6-10 编程闪存组 1 内核后的 CCS 窗口视图
  9. 在 CCS 中按“Run”(运行),组选择逻辑将运行,并从 BANK1 执行应用。然后,在 PC 命令行中执行以下命令。

    serial_flash_programmer_appln.exe -d f28004x -k f28004x_fw_upgrade_example\flashapi_ex2_sci_kernel.txt -a flashapi_ex3_live_firmware_updateBANK0FLASH.txt -b 9600 -p COMx 其中 x = PC 和目标板之间相应 JTAG 连接的 COM 端口。以构建配置 BANK0_FLASH 构建 CCS 工程 flashapi_ex3_live_firmware_update 将生成 flashapi_ex3_live_firmware_updateBANK0FLASH.txt。

    GUID-5F9B3451-F213-4411-A211-E3BC7B905F9A-low.png图 6-11 根据 Windows 命令提示调用的 LFU 串行命令
  10. 控制将从应用传递到闪存内核,选择 LDFU (8) 命令后,内核将在 BANK0 中接收并对应用进行编程。
  11. 传输完成后,输入 0 指示命令操作结束。
    GUID-D974AB25-7186-461B-A62B-163ACC1D16B1-low.png图 6-12 成功完成对闪存组 0 进行编程的 LFU 命令

    内核还将更新 BANK0 扇区 2 中的 KEY 和版本号。现在静态映像在编程后的 BANK1 中,应用映像在 BANK0 中编程。

  12. 此时,与之前一样,用户将电路板复位就可以看到 LED1 开始闪烁。