器件型号: AM6441
您好、
我们有一个 AM64 器件、它在 R5 内核上使用工业通信 SDK 中的 EthernetIP、在 A53 内核上使用 Linux。
我们的应用与 TI 示例不同、因为我们的现场总线应用在 Linux 上运行、并通过 RpMsg 连接到 R5 内核上的 EthernetIP 应用。
这种做法没有任何问题。
根据 SDK 中的 TI 隧道示例在 R5 和 A53 内核之间添加原始以太网隧道后、我们观察到应用启动期间 R5 上发生随机崩溃、并在 Linux 端生成以下日志: 
这种情况非常不可靠(带有~10 个设备的测试系统不断重新启动会导致在一天的测试中至少出现一种情况)
由于我们已经在现场总线 IPC 中使用了 R5 内核上的 RpMsg、因此那里已经有人调用 waitForLinuxReady。 集成 TI 隧道示例时、在隧道任务中添加了对 waitForLinuxReady 的第二个调用。
似乎 waitForLinuxReady 不仅不会等待,而且还会重置 R5 和 A53 之间的 vring ,因此我们从隧道任务中删除了调用,只是在信标上等待,直到另一个对 waitForLinux 的调用继续进行。
随着这一变化,我们在几天内没有看到任何进一步的崩溃。
对我来说、不清楚两个对 waitForLinuxReady 的调用如何会导致这种情况、因为我们的应用程序保证在两个 waitForLinux 调用都完成之前没有向 Linux 宣布终结点、因此没有发生可能影响 vring 状态的 RpMsg 通信 (?)。
由于即使在发生此更改之前、我们也无法可靠地重现崩溃、因此我们无法确定它是否已可靠地修复。 如果有人对 RpMsg 驱动程序有更深入的了解、可以让我们找到可能导致屏幕截图中出现的行为的机制、当 2 次调用 waitForLinuxReady 重置 vrings 两次时、这将是很好的。
谢谢、此致
Philip Kees