双核间高速数据传输
在STM32MP1芯片的开发框架中,RPMsg协议可以让Cortex-A7和Cortex-M4双核间实现数据的交互。
如何要实现依赖于RPMsg协议的其他功能,重要的是要了解该协议尚未设计为直接传输高数据速率流。所以,需要根据用例约束对实现进行调整
对于控制和低数据速率交换,RPMsg就足够了。
对于高速率传输和大数据缓冲区,应首选间接缓冲区交换模式。
目前无法提供严格的规则来指导开发者选择哪一个来实现。 这取决于用例,但还取决于:
Cortex CPU的加载
进程优先级
抢占(例如中断和安全服务)
在RPMsg实例上实现的其他服务。
....
本文的目的是帮助选择最适合的实现。如果这还不够,另一种方法是首先实现direct模式,然后在系统中测试它的性能。
Direct buffer exchange mode
这种模式包括使用RPMsg缓冲区在处理器之间传输数据。
RPMsg消息包含有效数据。
内存分配仅限于RPMsg缓冲区分配。
RPMsg客户端实现在代码实现方面非常简单。
建议使用直接缓冲区交换实现
用于控制消息,例如控制远程处理器应用程序
交换低数据速率流(类似于低数据速率总线)。
有关应用程序示例,请参阅可用项目列表并查看OpenAMP TTY echo应用程序。
Indirect buffer exchange mode
这种模式也被称为“大数据缓冲区交换”或“大数据”。它包括使用RPMsg来携带对其他一些包含有效数据的缓冲区的引用。其他的缓冲区可以是:
任何大小
通过多种方式分配,在缓存或非缓存内存,DDR或MCU SRAM
被映射后可通过应用程序直接访问
由DMA或任何主外设访问
此实现允许限制生产者和消费者之间的数据复制,为应用程序等缓冲区客户机提供直接的数据访问。
在以上概述中,以rpmsg sdb为例。它为应用程序提供了一个接口来与远程处理器分配和交换缓冲区。
建议使用此实现
高速率传输
用于实时传输(如音频缓冲区)
特权动态缓冲区分配和/或最小值
以适应现有的Linux框架或应用程序
有关可以为大型数据缓冲区交换实现的机制的详细信息,请参阅如何使用协处理器交换大型数据缓冲区。
最后编辑:SteveChen 更新时间:2024-10-18 15:16