https://e2e.ti.com/support/processors-group/processors/f/processors-forum/626123/tms320c6670-c6670
器件型号:TMS320C6670香榭丽舍
我们已将 DSP C6670应用中的稳定性问题跟踪到 IPC_1_24_03_32中的 ti/sdo/IPC/ListMP.c。 我们使用 IPC 在 C6670内核之间传递消息。 主要症状是运行8到72小时后、IPC 断言失败或 MessageQ_Alloc 在可用列表损坏后无法返回缓冲区。
由于我们的 IPC 消息缓冲器位于非缓存 DDR 中,因此 ListMP 操作会跳过 cache_wbInv()调用,而不会调用 mfenced()来同步内核内存访问。 如果我们通过 在缓存 DDR 具有同步内存访问的位置添加双推导操作来修改 ListMP.c、则我们将不再看到故障。 (注:由于硅片咨询32、需要双栅栏。)
示例:
if (SharedRegion_isCacheEnabled (id)){
/*回写,因为 elem->next & elem->prev 已更改*/
cache_wbInv (elem、sizeof (ListMP_Elem)、cache_Type_All、true);
}
其他
{
_mfenced();
_mfenced();
}
问题:
1) 1) TI 是否同意在使用非缓存 DDR 时 IPC ListMP 列表可能会损坏?
2) 2) TI 是否已识别或修复此问题? 我搜索了已发布的 TI IPC 版本,但没有找到任何内容。
3) 3) TI 是否可以针对此问题推荐强大的 IPC 库修复?
4) 4) 现在、我必须自己修改 IPC_1_24_03_32。 我可以根据 BIOS_6_33_06_50成功构建 IPC_1_24_03_32、但不能根据 BIOS_6_35_04_50成功构建 IPC_1_03_32。 BIOS 6.33附带最新的 MCSDK、但我们需要>=6.35才能获得 Advisory 32和其他程序的修复。
- IPC 编译是仅使用 BIOS 头文件还是在其实现中链接?
- 应该将哪些 IPC 和 BIOS 版本与我们的 Listmp.c 补丁一起使用?