This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6421:Code Composer 连接到挂起的处理器报告"CPU 被迫进行不精确的调试暂停。"

Guru**** 2484615 points
Other Parts Discussed in Thread: AM2612, AM6421

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1554621/am6421-code-composer-connect-to-hung-processor-reports-the-cpu-was-forced-to-take-an-imprecise-debug-halt

器件型号:AM6421
Thread 中讨论的其他器件:AM2612

工具/软件:

完整的消息是  CortexA53_0:停止目标 CPU 时出现问题:(错误–1269 -(2:19:0)) 请求停止失败。 CPU 被迫采取不精确的调试暂停。 无需用户操作。 (仿真包 12.6.0.00029)

操作系统: Linux Custom  6.1.124-rt47

电路板:我们的设计

目前正在进行下电上电测试。  系统间歇性挂起。  没有报告内核转储或内核错误。  当挂起时、我使用 Code Composer 连接 JTAG、并给出了上面的消息。  如果我尝试单步执行、会收到一条类似的消息:“CortexA53_0:Can Not Single Step Target Program“ 、然后是上面的消息。

我仍然可以得到反汇编显示、并且能够查看寄存器和存储器。  基于 PC、我可以看到机器在  davinci_mdio_common_reset.part.16 处停止、并且基于 SP 和内存、这是从 davi_mdiobb_reset () 调用的。

问题:

  1. 为什么我没有得到一个标准的内核恐慌和核心转储?
  2. 如何调试此问题?
  3. 我可以单步进入某种状态吗?
  4. 我要查看哪些寄存器来了解处理器处于什么状态?

请注意、我将使用器件的 AM2612 型号。

当我连接到 A53 内核时、即使正常运行、Code Composer 也会发出以下消息:

CortexA53_0:GEL:执行 OnTargetConnect () 时出错:目标未能读取 0x0000000044234100
在 DEVICE_TYPE=READ_MMR ((0x44234000UL+0x100))[AM64_COMMON.gel:164]处
位于 AdjustBaseAddr (AM64_DDRSS_SS_SS_BASE)[AM64_DDRSS_Config.gel:92]
AT DDR_Init ()[AM64x_SK_evm.gel:60]
在 OnTargetConnect() 处

为什么会收到此消息?  我仍然可以检查记忆。  当未出现“挂起“状态时、我仍然可以单步执行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我说的是 AM2612、我真的是 AM6421。  此处不涉及 AM2612。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Bruno、

    当问题发生时、内核是否正在运行? 您是否能够在 Linux 用户空间中运行命令?

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我无法判断内核是否正在运行、或者处理器在执行什么操作、在 CCS 中没有单列。

    我已连接到控制台串行端口。 控制台无响应。 我无法发出命令。 未提供任何输出。

    引导消息的结尾如下:

    ... 
    [ 3.556502] davinci_mdio 30032400.mdio:在手动模式下配置 MDIO [ 3.597738] printk:控制台[ttyS2]已启用 2810000.serial: [ 3.57743] printk:bootconsole [n16550a0] 2820000.serial:已禁用[ 2830000.serial: MMIO 0x2830000 处的 ttyS5 (IRQ = 319、base_baud = 3000000) 是一个 8250
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的一个问题是如何确定处理器的状态。  CCS 我搞砸了关于“不精确的调试暂停“的消息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    看起来器件仍处于复位状态并且未正确初始化。 如果内核未初始化或在调试时变为未初始化/无响应、则将无法连接、暂停或调试。

    从上述控制台无响应的行为来看、内核似乎没有运行或保持在复位或某种未知状态。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我可以连接到板上的 CCS 和 XDS110 连接到 JTAG。  连接时会看到一条消息

    CortexA53_0:停止目标 CPU 时出现问题:(错误–1269 -(2:19:0)) 请求停止失败。 CPU 被迫采取不精确的调试暂停。 无需用户操作。 (仿真包 12.6.0.00029)

    但我仍然可以查看反汇编、寄存器和存储器。  它们似乎是有效的。  我不认为 CPU 处于复位状态。  单步操作不起作用、并打印一条消息。

    基本问题:在什么情况下、CCS 会在尝试执行汇编级单步执行时打印以下消息?

     “CortexA53_0:无法单步目标程序“

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当处于“挂起“状态并与 CCS 连接时、CPU 寄存器 DSPSR_EL0 的值为 0x800005

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已将您的问题发送给我们的 Linux 专家以供进一步评论。