工具与软件:
尊敬的 TI 专家:
客户正在使用 SDK9.2。
他们发现、 R5F0_0只能读取部分写入共享存储器的 R5F1_0日志。 它们的日志仅包含多行、小于编码中的最大值2KB。
源代码的详细信息后再进行了解 DebugP_shmLogReaderGetString (R5F0_0的对数读取器功能)、和 DebugP_shmLogWriterPutLine (R5F1_0的日志编写器功能)、以下两个问题可能导致此问题。
1: 无锁定和解锁/资源互斥机制
与 Jacinto 器件中的应用手册一样、理论相同、其他内核将日志写入共享存储器、而内核读取日志并打印。 我们可以在下面的编码中看到锁定保护。
https://www.ti.com/lit/pdf/spradg5
。 appLogWrLock 是其他内核写入共享存储器之前使用的函数。

2: 中缺少易失性 DebugP_shmLogReaderGetString
我们可以在中看到 DebugP_shmLogWriterPutLine 、 wr_idx、rd_idx 具有使用 volatile 的保护、如下所示。

不过、在中 DebugP_shmLogReaderGetString 、 wr_idx、rd_idx 不再具有如下所示的保护 volatile。

我们担心阅读器函数可能会读取过时的 wr_idx,导致错误计算缓冲区的剩余空间,从而跳过新写入的日志 。 同样、Writer 更新 wr_idx 后、阅读器可能无法感知最新值、从而导致未读日志。
您能否帮助检查是否有人建议修改上述两点?
谢谢!
Kevin