ZHCUCY3 April 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F2800152-Q1 , TMS320F2800153-Q1 , TMS320F2800154-Q1 , TMS320F2800155 , TMS320F2800155-Q1 , TMS320F2800156-Q1 , TMS320F2800157 , TMS320F2800157-Q1 , TMS320F280021 , TMS320F280023 , TMS320F280023C , TMS320F280025 , TMS320F280025C , TMS320F280034 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037C , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039C , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041C , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049C , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377S , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379S , TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
USB 闪存内核基于 ROM 引导加载程序,与 C2000Ware (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > usb_flash_programmer) 中提供的主机 PC 应用程序进行通信,本质上执行与 ROM 引导加载程序相同的操作。由于 ROM 引导加载程序具有闪存 API,因此引导加载程序能够擦除闪存并对其进行编程,以执行固件更新。
CCS 的闪存内核源文件和工程文件在 C2000Ware 中提供,位于相应器件的示例目录中。这些工程有一个编译后处理步骤,将编译和链接的 .out 文件转换为 SCI ROM 引导加载程序所需的正确的十六进制格式引导文件,并按扩展名为 .dat 的工程名称进行保存。

在 CCS 中构建内核后,正确设置器件,使其与运行 usb_flash_programmer 的主机 PC 进行通信。






命令行选项和文件 IO 可以通过 C 标准库完成,但 USB 操作只能通过操作系统的器件驱动程序框架完成。有两个广泛使用的库提供此功能。
第一个是 libusb,它是一个开源 (LGPL) 库,采用 Unix 样式的 API。第二个是 WinUSB,它是 Windows 驱动程序开发套件的一部分。这两个库都在用户模式下运行并提供对 USB 器件的通用访问,无需使用客户驱动程序。Libusb 非常简便易用,也可以在 Linux 上使用,但它有点慢并且,任何分发都因许可证而变得复杂。WinUSB 使用起来要难一些,但速度更快并且生成的软件更易于分发。
C2000Ware 随附的 usb_flash_programmer.exe 预编译版本使用 WinUSB,但为这两个库提供了源代码。需要在器件上安装 WinUSB 驱动程序才能运行 USB 引导加载程序。


命令行 PC 实用程序是一种轻量级(可执行文件大小约为 64KB)编程解决方案,可以轻松集成到脚本环境中,用于生产线编程等应用程序。它是使用 Microsoft Visual Studio 用 C++ 编写的。工程及其源代码可在 C2000Ware (C2000Ware_x_xx_xx_xx > utilities > flash_programmers > usb_flash_programmer > src > VS2010_USBLoader2000) 中找到。
输入文件路径在命令行上按升序加载,因此必须首先提供并列出闪存内核文件路径才能加载到 RAM 中。闪存内核加载完毕后,ROM 转移控制权并且内核开始执行以将应用程序编程到闪存。闪存内核必须准备好器件以便进行闪存编程,然后器件才可以开始通信,因此需要一个较短的延迟。在此期间,闪存内核配置 PLL 和闪存等待状态。
下载过程开始时,在实际闪存应用程序代码传输之前先传输一些初始数据,包括密钥、一些保留字段和应用程序入口点。接收到入口点后,内核开始擦除闪存。擦除闪存可能需要几秒钟时间。请注意,当应用程序加载看似失败时,说明闪存正在被擦除。闪存被擦除后,应用程序加载将通过传输每个应用程序代码块并将其编程到闪存而继续。
usb_flash_programmer.exe <path_to_kernel_dat> <path_to_application_dat>应用程序编程到闪存中后,闪存内核会转到其在应用程序加载过程开始时的入口点来尝试运行应用程序。