您好!
我们使用的是 MCU 加上使用 LTS 3.2.0编译的 SDK 09.00。
我们的 IPC 有一个问题、我们花了几周时间才得以解决、这个问题真的很难重现、更不用说创建极少的示例了、因此我们需要一些帮助、以便找到一个良好的实践来继续调试这个问题。
因此、经过大量调试后、我们确定了要在 SDK 的 RPMessage/IpcNotife-drivers 下解决的此问题。 我们注意到一个内核尝试通过 RPMessage 将一个软件包写入到 vring 中、而另一个内核没有读取该数据包。
我们将 RPMessage 用于内核到内核的通信。
如果一个内核发送数据包、则其他内核将获得中断并调用回调。 在该仍处于中断上下文的回调中、我们将一个值写回振铃缓冲区到数据包的用户空间中、因此我们知道该数据包已经被读取。 在每一次发送的另一侧、我们会检查该值是否存在。 如果该值不存在、则表示未读取数据包。
碰巧值没有写入、这意味着数据包没有被读取、但其他内核会尝试在该位置进行迭代、我们无法确定发生这种情况的原因。 这只会不时发生。 有时很早、有时有点晚。
我还尝试通过 IPC 使用重负载通信的另一个项目来验证这一点、但遗憾的是、我无法重现此问题、因此我们甚至无法提供极少的示例。
您对我们如何从这里着手有任何想法吗? 我们还可以进入调试会话。
此致
费利克斯


