OpenEdv-开源电子网

标题: STM32MP157的异核通信速度能有多快? [打印本页]

作者: headic    时间: 2022-7-5 19:13
标题: STM32MP157的异核通信速度能有多快?
有个问题没搞懂,想咨询一下大家,针对STM32MP157,如果用M4驱动AD7606(16bitAD),按照200K,进行采样,这个是用使用开发板提供的异核通信方式,能够把AD7606产生的采样数据实时传输给A7的Linux系统吗?
其中AD7606产生的数据量字节数为:2*8*200K= 3.05Mb/秒。
跪求高手给与解答。

作者: gjs13030247996    时间: 2022-7-6 09:58
帮顶一下
作者: 海哥牛逼    时间: 2022-7-6 14:29
本帖最后由 海哥牛逼 于 2022-7-6 14:54 编辑

没有这么快 100-200kb

作者: 茂茂2019    时间: 2022-7-6 19:03
海哥牛逼 发表于 2022-7-6 14:29
没有这么快 100-200kb

海哥牛逼!

作者: 海哥牛逼    时间: 2022-7-7 09:34
茂茂2019 发表于 2022-7-6 19:03
海哥牛逼!

海哥牛逼

作者: DDCoder    时间: 2022-7-19 00:05
不按照虚拟串口的方式,直接走共享内存的方式应该能快一些把,没试过
作者: 仰望星空之云    时间: 2022-7-19 16:40
本帖最后由 仰望星空之云 于 2022-7-19 16:46 编辑

异核通信本质上是通过共享内存来实现的,所以虚拟串口理论上比实际的物理串口要快一些。

虽然是理论值,ST没有给出具体实测数据,不过速率和传输数据量有关系,可参考网上的数据:

块大小        # 块数        毫秒
512        1        11.97
512        2        18.77
512        4        31.02
512        8        56.25
1024        1        15.32
1024        2        24.82
1024        4        43.83
1024        5        53.32
2048        1        21.74
2048        2        37.63
4096        1        37.64

在ST的内核下默认配置单次能传输512字节的数据,也可以修改内核的一些配置来实现单次传输大于512字节的数据,如1024字节。
具体修改方法,可参考《【正点原子】STM32MP1异核通信(基于CubeIDE) V1.1》,也有视频:
https://www.bilibili.com/video/BV1RA4y1Z7iW?spm_id_from=333.880.my_history.page.click&vd_source=08348d1b038a69d1b4fdb7075125f4bd
作者: uoe    时间: 2022-7-21 15:59
最大一次是32768个字节
vdev0vring0长度最少为4*MAX_RPMSG_BUF_SIZE
                        vdev0vring0: vdev0vring0@10040000 {
                                compatible = "shared-dma-pool";
                                reg = <0x10040000 0x08000>;
                                no-map;
                        };

                        vdev0vring1: vdev0vring1@10048000 {
                                compatible = "shared-dma-pool";
                                reg = <0x10048000 0x08000>;
                                no-map;
                        };

                        vdev0buffer: vdev0buffer@10050000 {
                                compatible = "shared-dma-pool";
                                reg = <0x10050000 0x10000>;
                                no-map;
                        };
/drives/rpmsg/virtio_rpmsg_bus.c
#define MAX_RPMSG_NUM_BUFS (2)
#define MAX_RPMSG_BUF_SIZE (32768)
#define RPMSG_RESERVED_ADDRESSES (1024)
#define RPMSG_NS_ADDR (53)


M4
Middlewares/Third_Party/OpenAMP/open-amp/lib/include/openamp/rpmsg_virtio.h
#ifndef RPMSG_BUFFER_SIZE
#define RPMSG_BUFFER_SIZE        (32768)
#endif

修改STM32MP157AACX_RAM.ld
MEMORY
{
  RETRAM_interrupts (xrw)  : ORIGIN = 0x00000000,  LENGTH = 0x00000600
  SRAM1_text        (xrw)  : ORIGIN = 0x10000000,  LENGTH = 128K
  SRAM2_data        (xrw)  : ORIGIN = 0x10020000,  LENGTH = 128K
  SRAM3_ipc_shm     (xrw)  : ORIGIN = 0x10040000,  LENGTH = 128K
  SRAM4             (xrw)  : ORIGIN = 0x10060000,  LENGTH = 64k
}
作者: lxscbl    时间: 2022-8-26 16:06
使用大容量IPCC通信方式,即共享内存的方式,是没问题的,实测可以到40Mb/s




欢迎光临 OpenEdv-开源电子网 (http://openedv.com/) Powered by Discuz! X3.4