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.

[参考译文] TMS570LC4357:通过调试器读取 MibSPI SPIBUF (RX 寄存器)不会弹出 RX FIFO

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/757571/tms570lc4357-reading-mibspi-spibuf-rx-register-through-the-debugger-does-not-pop-the-rx-fifo

器件型号:TMS570LC4357

您好!

使用 TMS570LC、我们实现了一个调试器脚本、该脚本自动发送/接收 SPI 命令(我们不处于 MibSPI 模式)。 该脚本是嵌入式 C 代码的副本、可正常工作:该脚本执行完全相同的寄存器读取/写入操作。 但是,该脚本不起作用:

-我们通过发送 SPI 帧(即写入 SPIDAT1)向外部 FPGA 发送命令

由于我们不希望得到有用的答案,我们希望放弃接收到的帧。 为此、我们读取 SPIBUF 寄存器以从 RXBUF 或 SPIBUF 中弹出接收到的帧。 我们在该操作上循环、直到在 RX FIFO 中找不到更多消息(即直到 SPIBUF[RXEMPTY]=1)。 但是、该位永远不会设置为1。

在 C 代码中、它在一次读取后设置为1。 通过调试器、它始终保持为零、这表示仍有数据需要弹出。 因此、我们推断 MibSPI 模块中有一个未记录的功能、在该功能中、它获取通过外设互连进行事务处理的主器件的 ID。 如果事务来自 JTAG DAP/DMM/RTP 调试模块、那么 MibSPI 模块的行为会有所不同并返回 SPIBUF 的内容、但不允许读取改变模块的状态。 如果它来自另一个主器件、则其行为如文档所述。

这是合乎逻辑的、因为在 GUI 中、调试器显示寄存器的值。 如果显示该消息会弹出消息、则调试器的存在会破坏行为。 尽管如此、最好将此功能记录在案、因为我们不会尝试通过调试器进行 SPI 传输/接收。 您能确认隐藏行为吗?

谢谢。

Étienne μ A

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

    我将进行检查、然后返回给您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有什么答案?
    Étienne μ A
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Étienne、

    很抱歉耽误你的回答。 通过 JTAG 从 SPIBUF 读取数据不会影响标志寄存器中的值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您确认我们的观察结果。 这是通过我描述的机制实现的吗? (主机 ID 被发送到从机?) 如果是、TMS570LC 中有多少个从器件使用主器件 ID?
    Étienne μ A
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Étienne、

    很抱歉、我不能完全理解您的问题。 我不知道如何使用 JTAG 访问 MibSPI 寄存器和缓冲器的详细信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们的观察结果是、当由内核或 JTAG 控制时、MibSPI 的反应并不相同。 我们想知道造成这种差异的原因是什么。 在这2种情况下、MibSPI 设计的行为会有所不同。

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

    当数据被接收并被复制到 SPIBUF 中时、RXINTFLG 被置位。 如果 RXINTEN 被置位、那么也会产生一个中断。 可以通过从 CPU/DMA 读取 SPIBUF 来清除此标志。 BLT 如果 SPIBUF 被 JTAG 读取、该标志不受影响。 JTAG 用于调试、不应影响中断标志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很好。 现在、JTAG 访问时、哪些外设具有此类隐藏行为? Gio? IOMM? RTI? DMA? 等等?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Étienne、

    是的、其他外设也是如此。