This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2634-Q1:内核间通信问题

Guru**** 2895340 points

Other Parts Discussed in Thread: AM2634-Q1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1626139/am2634-q1-inter-core-communication-question

器件型号: AM2634-Q1

大家好!

为了实现不同内核之间的数据交换、AM2634-Q1 支持 IPC 和共享存储器两种方法。

这两种方法的优缺点是什么?在什么情况下建议使用这两种方法?

如果我们需要考虑功能安全、1ms 内的快速访问和硬件信号完整性、您会建议使用哪种方法?

这两种方法是否有任何介绍性文档或示例?  

此致、

Jenney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jenney:

    对于不同内核之间的数据交换、AM2634-Q1 支持 IPC 和共享存储器方法。

    是的、这是正确的。

    这两种方法的优缺点是什么、在什么情况下推荐它们?

    IPC Notify :带中断的硬件邮箱。 最适合事件、同步和安全关键型信号。
    共享内存 :使用 spinlock 直接访问内存。 非常适合高带宽数据传输。

    我尝试在下表中进行总结:

    在以下情况下使用 IPC Notify:
    -消息大小≤28 位(或 SafeIPC≤20 位)
    -需要硬件错误检测(CRC,溢出检测)
    -需要可预测的、确定性的延迟
    -功能安全是必需的
    -事件通知,同步信号
    -命令/控制消息

    在以下情况下使用共享内存:
    -大数据传输 (>1 KB)
    -需要最大带宽(100+ MB/秒)
    -需要最小延迟 (< 100ns)
    -生产者 — 消费者数据缓冲区
    -传感器数据数组,处理的结果
    -非安全关键批量数据

    在以下情况下使用 IPC RPMessage
    -可变长度的结构化消息 (64 B - 4 KB)
    -需要消息排队和缓冲
    -需要 Linux 互操作性
    -无需超低延迟(可接受 10 50 μs )

    在以下情况下使用组合方法
    -大多数实际应用(推荐)
    - IPC 控制平面通知(信号,同步)
    -数据平面共享内存(批量数据传输)
    -明确区分关切事项
    -性能、安全性和复杂性的最佳平衡

    共享存储器不提供任何 CRC、时间戳、内置互斥、缓存一致性支持。 在应用中、所有这些都必须通过 SPINLOCK、SW CRC 支持以及 IPC 驱动程序具有 SPINLOCK 来处理。

    如果我们需要考虑功能安全、1ms 内的快速访问以及硬件信号完整性、建议使用哪种方法?

    IPC 提供了支持 CRC 的 SafeIPC 选项、以满足您的安全需求。 两者的延迟都低于 1ms。

    我想您应该评估使用共享存储器和 IPC 的组合方法。 有关 IPC 的详细性能数据、请参阅 SW 数据表编号:
    AM263x MCU+ SDK:数据表