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

使用片上闪存工具向 OTP 中写入值

本节通过两个示例用例演示了如何使用片上闪存工具对 OTP 进行编程。

注:

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

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

  1. 使用目标 CPU 内核启动调试会话后,打开片上闪存工具(请参阅 节 3 了解如何在 CCS 中查找)。
  2. 找到区域 1 或 2 下的 GPREG (BOOTCTRL)(记住区域 2 优先于区域 1)用户可以写入 OTP-BOOTPIN-CONFIG 和 OTP-BOOTDEF-LOW/OTP-BOOTDEF-HIGH 寄存器。
    1. 表 2-7 显示了 F280015x 器件上引导配置寄存器的位置,可以在器件特定 TRM 的引导 ROM 配置寄存器一节中找到。寄存器名称表示如何是在片上闪存工具中引用引导 ROM 寄存器的方式。

示例 1:零引导模式选择引脚

本用例展示了一个不希望使用任何 BMSP 并始终将器件引导至闪存入口点 0x88000 的应用场景。

有关表中要设置的值,请参阅器件 TRM 中的 GPIO 分配一节。对于闪存入口点,请参阅 TRM 中的入口点一节,了解有关各种引导模式的入口点地址的详细信息。这些入口点指示引导 ROM 在引导结束时根据所选引导模式转移到什么地址。

  1. 按如下方式对 OTP 中的 BOOTPIN_CONFIG 位置进行编程:
    1. 将 BOOTPIN_CONFIG.BMSP0 设置为 0xFF(禁用)
    2. 将 BOOTPIN_CONFIG.BMSP1 设置为 0xFF(禁用)
    3. 将 BOOTPIN_CONFIG.BMSP2 设置为 0xFF(禁用)
    4. 将 BOOTPIN_CONFIG.KEY 设置为 0x5A,以便引导 ROM 将这些寄存器位视为有效并使用自定义引导表
  2. 对器件的 BOOTDEF 位置选项进行编程。这本质上是设置一个器件特定的引导模式表。
    1. 将 BOOTDEF.BOOTDEF0 设置为 0x23 以引导至闪存(入口地址选项 1)。这将闪存引导设置为引导表索引 0。

图 5-12 显示了对此示例进行编程的片上闪存工具中已完成的输入字段。

 示例 1:已编程的闪存插件引导配置图 5-12 示例 1:已编程的闪存插件引导配置
表 5-1 生成的零引脚引导配置
BMSP 索引 BOOTDEF
0 0x23(闪存引导至地址 0x88000)

示例 2:双引导模式选择引脚

本用例演示了一种更常见的应用场景,即使用两种引导模式选择引脚在自定义引导表中的 CAN、安全闪存和 SCI 引导之间进行选择。

有关表中要设置的值,请参阅器件 TRM 中的 GPIO 分配一节。对于闪存入口点,请参阅 TRM 中的入口点一节,了解有关各种引导模式的入口点地址的详细信息。这些入口点指示引导 ROM 在引导结束时根据所选引导模式转移到什么地址。

  1. 按如下方式对 OTP 中的 BOOTPIN_CONFIG 位置进行编程:
    1. 将 BOOTPIN_CONFIG.BMSP0 设置为用户指定的 GPIO,例如适用于 GPIO42 的 0x2A
    2. 将 BOOTPIN_CONFIG.BMSP1 设置为用户指定的 GPIO,例如适用于 GPIO88 的 0x58
    3. 将 BOOTPIN_CONFIG.BMSP2 设置为 0xFF(禁用)
    4. 将 BOOTPIN_CONFIG.KEY 设置为 0x5A,以便引导 ROM 将这些寄存器位视为有效并使用自定义引导表。
  2. 对器件的 BOOTDEF 位置选项进行编程。这本质上是设置一个器件特定的引导模式表。
    1. 将 BOOTDEF.BOOTDEF0 设置为 0x6A 以便进行安全闪存引导(入口地址选项 3)。这将安全闪存引导设置为引导表索引 0。
    2. 将 BOOTDEF.BOOTDEF1 设置为 0x22 以便进行 CAN 引导选项 1。这将 CAN 引导设置为引导表索引 1。
    3. 将 BOOTDEF.BOOTDEF2 设置为 0x41 以便进行 SCI 引导选项 2。这将 CAN 引导设置为引导表索引 2。

图 5-13 显示了对此示例进行编程的片上闪存工具中已完成的输入字段。

 示例 2:已编程的闪存插件引导配置图 5-13 示例 2:已编程的闪存插件引导配置
表 5-2 双引导模式选择引脚配置
BMSP 索引 BOOTDEF
0 0x6A(安全闪存引导至地址 0x90000)
1 0x22(使用其他 GPIO 的 CAN引导 1)
2 0x41(使用其他 GPIO 的 SCI引导 2)
3 无关紧要(未使用)