闪存

C2000 器件上的非易失性闪存主要用作内核的程序存储器以及静态数据存储器。在应用程序开发期间,可以使用 Code Composer Studio (CCS) 将应用程序可执行文件编程到闪存中。当 CCS 识别出代码被映射到给定应用程序的闪存时,它会自动调用 CCS 片上闪存插件将可执行文件加载到闪存中。闪存插件 GUI 路径 CCS “Debug view”->“Tools”->“On-chip Flash”。默认情况下,片上闪存插件会在编程前擦除闪存,为可执行文件生成 ECC,将其与主阵列闪存内容一同编程,并验证编程内容。如有需要,用户可以启用空白检查 - CPU 验证以确认闪存在编程之前已被擦除。所有 USER OTP 字段(DCSM 和引导设置)也可以使用 CCS 片上闪存插件进行编程。校验和计算功能也可在插件 GUI 中使用。使用高性能调试探针(建议使用 XDS200)时,CCS 闪存编程的性能更佳。

TI 还提供 UniFlash,这是一种基于 JTAG 的独立闪存编程工具。与 CCS 相比,它占用的空间更小,因为它不包括调试支持。用户可以创建器件特定的 UniFlash 包以进一步减小工具大小(安装后请参见 UniFlash 中的独立命令行窗口)。UniFlash 提供 CCS 闪存插件可执行的所有 GUI 操作。

如果应用安全标准要求 ECC 生成器和验证器单元不同,用户可以使用 CCS 链接步骤中提供的 -ecc 选项。启用此功能后,链接器将为闪存应用程序生成 ECC 映像并将其附加到可执行文件的末尾。TI 闪存工具(CCS 和 UniFlash)能够对此附加的 ECC 映像进行编程,而不是默认生成的自动 ECC。使用链接器 ECC 选项时,应禁用 TI 闪存工具中提供的自动 ECC 生成。有关详细信息,请参阅“TMS320C28x 汇编语言工具用户指南”。请注意,TI 闪存工具不支持为 TMS320F28M3x、TMS320F2837x 和 TMS320F2807x 器件编程链接器生成的 ECC。

客户还可以参考第三方编程器(如 CodeSkin、DATA IO 等),以通过 SCI、CAN 等串行外设获得闪存编程支持。Elprotronic 提供基于 JTAG 的 C2000 GANG 编程器。

TI 闪存工具和第三方闪存编程器使用闪存 API 库来执行闪存擦除和编程操作。每个器件的闪存 API 库和参考指南可在 C2000Ware 中的 /libraries/flash_api 下找到。闪存 API 库具有执行闪存操作的功能,例如擦除、空白检查、对闪存和相应 ECC 进行编程、编程验证、暂停擦除或编程操作、恢复擦除或编程操作、ECC 计算、校验和计算、将 ECC 地址重新映射到相应的主阵列地址等。请注意,ECC 不适用于某些 C2000 器件。详情请查看数据表和 TRM。需要在运行时擦除或编程闪存的应用程序可以嵌入闪存 API 库来完成相同的任务。C2000Ware 中提供了使用闪存 API 库的示例(例如 C2000Ware_x_xx_xx_xx\driverlib\f2838x\examples\c28x\flash\flashapi_ex1_programming)。

注释

TI 通常不分发闪存 API 源代码,也不支持客户开发或修改闪存 API。闪存的编程和擦除必须以非常特定的方式进行。测试闪存 API 库涉及器件在自动测试设备 (ATE) 期间访问的特殊测试模式。该库的测试是通过将其用在 TI 开发、器件测试、写入擦除周期认证和所有闪存编程工具中来完成的。修改或重建 API 库将不会从该测试中受益,因此也不会受到限制。

如果应用属于军事、航空或医疗性质,并且用户出于认证目的对源代码有正当和合法的需求,则可以根据与 TI 签署的许可协议提供该源代码。如果用户属于此类,请联系您的 TI 销售或分销代表或在 TI E2E 论坛中发帖寻求帮助。