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.

[参考译文] SK-AM62B-P1:将 M4F 故障寄存器转储到 UART

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1613976/sk-am62b-p1-dump-m4f-fault-registers-to-uart

器件型号: SK-AM62B-P1

您好:

我正尝试调试我的生产板上在启动时发生在 M4F 内核上的崩溃。 由于电路板上的 JTAG 连接器存在硬件问题、我无法使用 CCS 调试器来调试 M4 代码。 我的假设是,我的代码输入 HwiP_hardFault_handler () 是出于某种原因,在我们进入该函数的无限循环之前,我试图找到一种将 CFSR 寄存器(以及其他一些寄存器)转储到 UART 的方法。 是否有办法 将这些寄存器的内容转储到控制台? 显然、DebugP_LOG 和 printf 不能通过故障处理程序运行。

我可以在评估板 AM62x 上运行一个调试器,我有触发硬件故障的代码,可以在 HwiP_hardFault_handler () 中设置一个断点来确认 CFSR 中的故障原因,但不幸的是,我目前无法在我的生产板上这样做,并希望向控制台发送一些数据来帮助调试问题。 提前感谢。

这是我尝试过的,但不起作用。 从任务调用 printToUART() 是有效的。

void printToUART (char * PDBGuint8_t msgSize)
  UART_handle handle = UART_getHandle (0);

  if ((handle == NULL)||(PDBG == NULL)||(msgSize == 0))
    返回

  UART_Transaction UART_TRANSACTION
  uart_transaction.buf = PDBG
  uart_transaction.count = msgSize
  uart_transaction.timeout = 10000
  uart_write(句柄,&uart_transaction)
}
void HWI_SECTION HwiP_hardFault_handler (void)
  易失性 uint32_t 环路= 1
  char dbg[16]={0}
  snprintf (dbgsizeof (dbg)、“** FAULT **\r\n“)
  printToUART (dbgsizeof (dbg));
  _asm volatile(“bkpt #1“)
  while(循环)
  {
   /*不执行任何操作*/
  }
}

-艾曼

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

    您好:

    我正在查看您的查询,你可能会期待在一两天内回复.

    此致、

    Anil

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

    您好、对此有任何更新吗? 谢谢。

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

    您好、Ayman、

    您能否确认您是在中断模式还是轮询模式下进行 UART 写入?

    如果您在中断模式下执行此操作、请使用轮询模式并使用直接寄存器写入、而不是在 HardFault 处理程序中使用 API。

    当前方法的问题是 uart_write () 使用在故障处理程序上下文中不可用的中断和操作系统服务。

    您需要对 UART 硬件寄存器使用直接轮询模式写入。

    请确认此操作是否有效。

    此致、

    Anil.