您好!
使用 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