ST意法半导体
直播中

张浩

7年用户 1118经验值
私信 关注
[问答]

STM32MP1 A7与M4之间如何通信?

你好,
我正在使用 STM32MP153C,我想使用虚拟 Uart(OPENAMP 和 IPCC)在 A7 和 M4 之间进行通信
我正在使用使用 Yocto 创建的自定义分发版。
当我在 M4 中初始化虚拟 uart 时,/dev/ttyRPMSG0 在 A7 中被实例化。

[142.543903]remoteproc remoteproc0:启动m4
[ 142.649727] remoteproc remoteproc0: 启动 fw 映像 DHCOR_MBM_GEN_3_v4.1_CM4.elf,大小 3518900
[142.661217]remoteproc0#vdev0buffer:分配保留内存节点vdev0buffer@10042000
[142.669330]remoteproc0#vdev0buffer:注册的virtio0(类型7)
[142.674309]remoteproc remoteproc0:远程处理器m4现在启动
[142.722658]virtio_rpmsg_bus virtio0:rpmsg主机在线
[148.575929]virtio_rpmsg_bus virtio0:创建通道rpmsg-tty-通道地址0x400
[149.074414]virtio_rpmsg_bus virtio0:创建通道rpmsg-sdb-channel addr 0x401

但是当我使用这个命令时:

stty -onlcr -echo -F /dev/ttyRPMSG0

Linux 返回:

[ 366.375280] rpmsg_tty virtio0.rpmsg-tty-channel.-1.1024:无效消息:大小 34,类型 67
[ 366.384280] rpmsg_tty virtio0.rpmsg-tty-channel.-1.1024:无效消息:大小 34,类型 67

我看到这个错误是由函数rpmsg_tty_cb在if条件下返回的(驱动rpmsg_tty.c的第109行):

  • static int rpmsg_tty_cb(struct rpmsg_device *rpdev, void *data, int len,
  • void *priv, u32 src)
  • {
  • struct rpmsg_tty_payload *rbuf = data;
  • if (len <= sizeof(*rbuf) || rbuf->cmd >= NUM_RPMSG_TTY_TYPE)
  • {
  • dev_err(&rpdev->dev, "Invalid message: size %d, type %d
  • len, rbuf->cmd);
  • return -EINVAL;
  • }
  • rpmsg_tty_handler[rbuf->cmd](rpdev, &rbuf->data,
  • len - sizeof(rbuf->cmd), priv, src);
  • return 0;
  • }


错误是因为rbuf->cmd大于NUM_RPMSG_TTY_TYPE。在这种情况下:

rbuf->cmd = 67
NUM_RPMSG_TTY_TYPE = 2

NUM_RPMSG_TTY_TYPE这个参数是什么意思?
它在第 21 行的驱动程序中声明而没有初始化(我找不到它):

  • enum rpmsg_tty_type_t {
  • RPMSG_DATA,
  • RPMSG_CTRL,
  • NUM_RPMSG_TTY_TYPE
  • };


问题是由A7或M4代码引起的?因为即使我没有使用命令“stty -onlcr -echo -F /dev/ttyRPMSG0”发送任何东西,M4 似乎收到了一些东西并且(我认为)它试图将它发回(M4 代码发回收到的东西).
我还尝试从 A7 直接向 M4 发送一个简单的“hello”:

echo "你好" > /dev/ttyRPMSG0

[ 105.752908] rpmsg_tty virtio0.rpmsg-tty-channel.-1.1024:无效消息:大小 34,类型 67
[ 105.782157] rpmsg_tty virtio0.rpmsg-tty-channel.-1.1024:无效消息:大小 33,类型 67
[105.810142]rpmsg_tty virtio0.rpmsg-tty-channel.-1.1024:无效消息:大小 34,类型 67

有什么建议可以解决我的沟通问题吗?



回帖(1)

王慕涛

2022-12-27 11:42:23
似乎您正在使用 rpmsg_tty 驱动程序的“自定义”版本。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分