Some question about RPMSG in STM32MP1
1. When I create an openamp-based virtual_huart0 on the M4 side for exchanging information,some code is as follows:
if (VIRT_UART_Init(&huart1) != VIRT_UART_OK)
{
printf("VIRT_UART_Init UART1 failed.\r\n");
Error_Handler();
}
VIRT_UART_StatusTypeDef VIRT_UART_Init(VIRT_UART_HandleTypeDef *huart)
{
int status;
/* Create a endpoint for rmpsg communication */
status = OPENAMP_create_endpoint(&huart->ept, RPMSG_SERVICE_NAME, RPMSG_ADDR_ANY,
VIRT_UART_read_cb, NULL);
if(status < 0) {
return VIRT_UART_ERROR;
}
return VIRT_UART_OK;
}and this will create the /dev/ttyrpmsg0 device on the Linux side.To exchange data, I directly use OpenAMP library functions to create nodes,and In Linux, the driver rpmsg client sample will be loaded.some code as follow:
#define RPMSG_SERVICE_NAME "rpmsg-client-sample"
OPENAMP_create_endpoint(&remsgr_ept,RPMSG_SERVICE_NAME,RPMSG_ADDR_ANY,rx_callback,NULL);Now the problem is: when I first use the driver rpmsg client sample to exchange data, then use the virtual created above_ When huart0 exchanges control information, the data exchange will stop,it doesn't work , and the exchange control information can be exchanged correctly.And there are dmesg information in linux:
Could you give me some suggestions? Thank you very much!
