ST意法半导体
直播中

吴湛

10年用户 756经验值
擅长:可编程逻辑
私信 关注
[问答]

怎样使用RPMSG在处理器之间进行通信呢

我正在使用 QSMP-1570 SOM。上面有STM32MP157C。我正在尝试使用 RPMSG 在处理器之间进行通信
我看到 RPMSG 是在 /dev 下形成的。
ttyRPMSG0,ttyRPMSG1。
我在 linux 端打开串口;
如果 ((fd = open("/dev/ttyRPMSG0", O_RDONLY | O_NOCTTY)) < 0)
  {
    GL.status |= YNDL_STATUS_FATAL_ERROR;
    fd = STDERR_FILENO;
    返回 EXIT_FAILURE;
  }
然后当我调用函数 write();
写(fd,缓冲区,200);// 返回 -1
函数返回 errno:11(资源暂时不可用)
IPCC 中的缓冲区不是环形缓冲区吗?
为什么我会收到错误消息?










回帖(1)

谢芳芳

2022-12-19 15:09:45
好的,我用 c 编写了一个小代码来尝试像您一样在一次写入操作中写入 200 个字节:


  • #include
  • #include
  • #include
  • #include
  • #include
  • #include
  • #include

  • int        main (int argc, char **argv)
  • {
  •   int32_t        i32Fd;
  •   int32_t        i32Ret;
  •   u_int8_t        au8Buffer[200];
  •   int32_t        i32Errno;
  •   
  •   if (memset(au8Buffer, 0, sizeof(au8Buffer)) == NULL)
  •     {
  •       printf("memset failedn");
  •       return -1;
  •     }
  •   if ((i32Fd = open("/dev/ttyRPMSG0", O_WRONLY | O_NOCTTY)) < 0)
  •   {

  •     printf("Open failed and returned i32Fd = [%d]n", i32Fd);

  •     i32Fd = STDERR_FILENO;

  •     return -1;

  •   }
  •   i32Ret = write(i32Fd, au8Buffer, sizeof(au8Buffer));
  •   if (i32Ret < 0)
  •     {
  •       i32Errno = errno;
  •       printf("write failed and returned ret = [%d] and errno = [%d][%s]n", i32Ret, i32Errno, strerror(i32Errno));
  •       return -1;
  •     }
  •   printf("Success %d bytes writtenn", i32Ret);
  •   return 0;
  • }

它每次都有效。


  • root@stm32mp1:~# ls /dev/ttyRPMSG0 -l
  • crw-rw---- 1 root dialout 5, 3 Sep 20 11:26 /dev/ttyRPMSG0
  • root@stm32mp1:~# /usr/local/gtk_hello_world
  • Success 200 bytes written
  • root@stm32mp1:~# /usr/local/test
  • Success 200 bytes written
  • root@stm32mp1:~# /usr/local/test
  • Success 200 bytes written
  • root@stm32mp1:~# /usr/local/test
  • Success 200 bytes written
  • root@stm32mp1:~#

我使用了 STM32Cube_FW_MP1 随附的应用示例 OpenAMP_TTY_echo
请按照本页和下一页来测试 OpenAMP_TTY_echo。
此应用程序将执行 VIRT_UART_Init 和其他函数调用以创建“/dev/ttyRPMSG0”并使其运行。
您能否使用此 M4 应用程序尝试您的代码以查看您的代码的行为方式。
举报

更多回帖

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