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参考资料

使用闪存 API 插件向 OTP 中写入值

注:

尽管本节基于 F280015x 器件,但相同流程可以应用于支持自定义 BMSP 和引导模式表的任何 C2000 器件。

器件特定的信息可以在器件技术参考手册 (TRM) 的引导 ROM 一章中找到。

也可以使用 [31] 中概述的编译器的 RETAIN 和 DATA_SECTION pragma 将 节 5.5 中的自定义引导配置写入 DCSM OTP。以下步骤遵循中 示例 2:双引导模式选择引脚 的示例。

  1. 在 CCS 中打开任何 C2000Ware 示例,并在主函数上方添加以下代码片段(可以是文件中函数以外的任何位置)。这些行分别对器件的 BOOTPIN-CONFIG 和 BOOTDEF-LOW 寄存器进行编程。
    #pragma RETAIN(otp_z1_data_1) 
    #pragma DATA_SECTION(otp_z1_data_1,"dcsm_zsel_z1"); 
    const long otp_z1_data_1 = 0x5AFF582A; 
    
    #pragma RETAIN(otp_z1_data_2)
    #pragma DATA_SECTION(otp_z1_data_2,"dcsm_zsel_z1_2"); 
    const long otp_z1_data_2 = 0xFF41226A;
    
  2. 在工程的连接器命令文件中,添加以下行来定义器件特定 TRM 的引导 ROM 配置寄存器一节中所定义的 DCSM OTP BOOTPIN-CONFIG 和 BOOTDEF-LOW 存储器映射位置。以下地址适用于 F280015x 器件上的 DCSM 用户 OTP 引导配置寄存器。
    MEMORY { 
       PAGE 0:
          DCSM_ZSEL_Z1_P0: origin = 0x078008, length = 0x000002 // Z1-OTP-BOOTPIN-CONFIG
          DCSM_ZSEL_Z1_P1: origin = 0x07800C, length = 0x000002 // Z1-OTP-BOOTDEF-LOW
    }  
    SECTIONS { 
       dcsm_zsel_z1_1 : > DCSM_ZSEL_Z1_P0, PAGE = 0 
       dcsm_zsel_z1_2 : > DCSM_ZSEL_Z1_P1, PAGE = 0 
    }
    
  3. 重新编译示例并在 CCS 中通过 JTAG 加载到目标。CCS 中的程序加载程序和闪存 API 插件负责将这些值写入 OTP 位置。由于无法对 OTP 位置重新编程,因此必须仔细选择和写入这些值。