Other Parts Discussed in Thread: AM2634-Q1
器件型号: AM2634-Q1
大家好!
为了实现不同内核之间的数据交换、AM2634-Q1 支持 IPC 和共享存储器两种方法。
这两种方法的优缺点是什么?在什么情况下建议使用这两种方法?
如果我们需要考虑功能安全、1ms 内的快速访问和硬件信号完整性、您会建议使用哪种方法?
这两种方法是否有任何介绍性文档或示例?
此致、
Jenney
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.
尊敬的 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:数据表

是否有这两种方法的介绍性文档或示例? [/报价]请参阅 SDK 示例:
AM263x MCU+ SDK:IPC Notify EchoAM263x MCU+ SDK:IPC SafeIPC Echo
AM263x MCU+ SDK:使用 Spinlock 的 IPC 共享存储器互斥量
此致、
Shaunak