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

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2配置引导模式
    1. 2.1 独立引导
      1. 2.1.1 引导模式选择引脚 (BMSP)
      2. 2.1.2 引导定义表 (BOOTDEF)
      3. 2.1.3 引导 ROM OTP 配置寄存器
      4. 2.1.4 CPU2 启动流程
    2. 2.2 仿真引导
  6. 3对闪存编程
    1. 3.1 闪存 API
    2. 3.2 闪存内核
  7. 4将代码引导加载到闪存
    1. 4.1 C2000 Hex Utility
    2. 4.2 常见引导模式
      1. 4.2.1 引导至闪存
      2. 4.2.2 SCI 引导
      3. 4.2.3 CAN 引导
      4. 4.2.4 CAN-FD 引导
      5. 4.2.5 USB 引导
  8. 5常见问题解答
    1. 5.1 通过基于软件的实现施选择 BMSP GPIO
    2. 5.2 从闪存而非 RAM 运行闪存内核
    3. 5.3 在调试引导 ROM 时没有定义符号
    4. 5.4 使用片上闪存工具向 OTP 中写入值
    5. 5.5 使用闪存 API 插件向 OTP 中写入值
  9. 6总结
  10. 7参考资料

闪存内核

鉴于引导 ROM 中的引导加载程序只能将代码加载到 RAM 中,闪存内核可充当 ROM 和闪存之间的纽带,它在现场提供通过各种通信协议(SCI、CAN、I2C 等)进行的基于闪存的固件升级机制。可以对闪存进行编程,方式如下:使用 ROM 引导加载程序将闪存内核下载到 RAM,然后使用闪存 API 运行 RAM 中的闪存内核以将应用程序下载到闪存。

在接收任何应用程序数据之前,闪存内核会擦除器件的闪存,以为编程做好准备。主机开始发送应用程序代码后,使用一个缓冲区保存接收到的连续应用程序代码块。当缓冲区已满或检测到新的非连续数据块时,将对缓冲区中的代码进行编程。在接收整个应用程序并将其编程到闪存后,闪存内核会转移到应用程序的入口点。

TI 已开发出闪存内核,可根据引导 ROM 源代码将代码从 RAM 加载到闪存,这可在 C2000Ware 的 examples 文件夹中找到。用户可以应用类似的开发流程,为特定应用程序实现自定义引导加载程序。可在 C2000Ware 中查看器件引导流程使用的引导 ROM 源代码(包括外设引导加载程序),其位置如下为:

  • C2000Ware_x_xx_xx_xx > libraries > boot_rom > DEVICE_FAMILY > REV# > rom_sources > DEVICE_FAMILY_ROM > bootROM > source

在具有多个闪存组的器件上,可以调整闪存内核工程,以便从闪存而不是 RAM 中执行,从而对另一个闪存组进行编程。这样,用户可以简单地跳转到位于闪存中的闪存内核,避免在引导 ROM 中使用的引导加载程序。有关如何实现此功能的更多详细信息,请参阅 节 5.2

注:

在多核器件(即 F2838x、F2837xD 或 F28P65x)上,CPU1 和 CPU2 内核工程可以利用 CPU1 中的引导加载程序为 CPU2 下载修改后的引导加载程序(即闪存内核),以便下载 CPU2 应用程序映像。

CPU1 操作完成后,CPU1 可以将 CPU2 内核写入共享消息 RAM (CPU1TOCPU2MSGRAM),并在 CPU2 引导序列期间指示 CPU2 转移到 CPU2 IPC 消息复制目标 RAM (M1RAM) 中的 CPU2 入口点。在转移指令写入 M1RAM 且 CPU2 引导序列完成后,CPU2 从 M1RAM 中开始执行并转移到 CPU2 内核入口点。CPU1 内核等待 CPU2 内核命令完成,然后再继续。

有关 IPC 协议的更多详细信息,请参阅器件特定的技术参考手册。

总之,使用闪存内核的一般流程如下:

  1. 复位器件并使用目标引导模式
  2. 通过引导 ROM 中的引导加载程序,将闪存内核从主机传输到器件
  3. 在 ROM 引导加载程序完成后,闪存内核获得控制权
  4. 内核从控制器的闪存存储器中擦除旧的应用程序代码
  5. 内核使用目标外设通信协议,配置与主机的连接并接收新的应用程序代码
  6. 内核将新接收到的应用程序代码写入闪存存储器,并将控制权转移给应用程序
  7. 从主机新接收到的代码执行