ZHCABS9A October   2017  – September 2022 TMS320F28075 , TMS320F28075-Q1 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S

 

  1.   C2000™ 硬件内置自检
  2.   商标
  3. 1引言
    1. 1.1 HWBIST 概述
      1. 1.1.1 HWBIST 系统内运行
    2. 1.2 HWBIST 故障响应
    3. 1.3 使用系统内 HWBIST 的优点
  4. 2使用系统内 HWBIST
    1. 2.1 基本 HWBIST 操作
      1. 2.1.1 初始化 HWBIST 控制器
      2. 2.1.2 执行 HWBIST
        1. 2.1.2.1 执行 HWBIST 微运行
        2. 2.1.2.2 执行 HWBIST 完全运行
      3. 2.1.3 错误管理
    2. 2.2 管理双核器件上的 HWBIST
      1. 2.2.1 信标管理
      2. 2.2.2 处理器间通信
    3. 2.3 使用 HWBIST 时的系统注意事项
      1. 2.3.1 中断延迟
      2. 2.3.2 电源注意事项
      3. 2.3.3 HWBIST 存储器要求
      4. 2.3.4 注入错误
    4. 2.4 调试系统内 HWBIST
  5. 3参考文献
  6. 4Revision History

调试系统内 HWBIST

在执行 HWBIST 微运行时,出于所有实际目的,与目标 CPU 的仿真连接将从系统中断开。这意味着,诸如断点、观察点、单步执行甚至运行之类的功能不可用于调试系统代码。这来自 HWBIST 运行的以下两个方面:

  • 与 CPU 一样,扫描仿真分析电路的过程正在执行,因此断点(和其他仿真分析功能)由 HWBIST 控制器主动损坏的锁存器进行管理。
  • 无法保存和恢复分析电路的环境。

TI 建议您在执行 HWBIST 时不要在代码中启用软件断点。因此,在调试系统代码时需要禁用 HWBIST 操作。在验证或调试 HWBIST 操作时,必须使用 Free Run 操作启动 CPU 代码执行。如果运行双核器件,则必须使用 Free Run 操作启动这两个 CPU。在 CPU 上运行 HWBIST 时,建议删除与该特定 CPU 的交叉触发器(如果已设置)的任何关联。

以下是一些有关调试 HWBIST 代码的帮助提示:

  • 在执行期间,使用电路板上的可观察点来监控进度。例如,使用一个或多个连接到示波器或连接到 LED 的 GPIO 引脚。
  • 您可以在代码中放置循环以代替断点来“停止”它,并跟踪其进度。
  • 将调试和进度更新或状态存储在 SRAM 中:
    • 理想情况下,这是在 BootROM 或仿真器 GEL 脚本未初始化的存储器的范围内。
    • 如果在双核器件上,尽可能将这些更新存储在两个 CPU 都可以访问的存储器中:
      • 例如,共享存储器、IPC 寄存器或消息 RAM。
      • 未运行 HWBIST 的 CPU 可能能够完全停止,并显示调试和进度信息。
  • 有时,在运行 HWBIST 之后,仿真器停止操作会调用以下弹出消息:

    停止目标 CPU 时出现问题:(错误 -1156 @ 0x0)。器件可能在低功耗模式下运行。是否要使其退出此模式?(仿真包 5.1.636.0)。

    此消息是正常的,是因仿真器与处理器失去同步引起的。仿真器始终失去同步,但有时会在没有此操作的帮助下重新获得同步。这与低功耗模式无关。

    • 如果发生这种情况,请点击“Yes”按钮。
    • 如果这不起作用,则可以断开 CPU 并重新连接以重新获得控制权。在双核器件上,也许仍然可以访问其他 CPU。因此,如果已保存调试和进度值,则另一个 CPU 可以提供对它们的访问。
  • 如果 CPU 恢复正常,但它会引导至 BootROM 或闪存,一个可能的原因是未启用 PIE。HWBIST 在完成后执行 CPU 复位,但如果未启用 PIE,则 CPU 会引导至 BootROM,而不是诊断库 STL_HWBIST_restoreContext() 代码。