Platform: i.MX8MP EVK, SDK 2.16
The rpmsg debug will stuck at rpmsg_queue_recv/rpmsg_lite_send when we use Step Over debug with JLink.
The error log on Linux side:
[ 42.422658] remoteproc remoteproc0: kicking vq index: 1
[ 42.524256] imx-rproc imx8mp-cm7: imx_rproc_kick: failed (1, err:-62)
[ 42.524286] remoteproc remoteproc0: kicking vq index: 0
[ 42.628566] imx-rproc imx8mp-cm7: imx_rproc_kick: failed (0, err:-62)
The demo source code of rpmsg in SDK uses RL_BLOCK, this flag will cause communication stuck during debug.
while (msg.DATA <= 100U)
{
(void)PRINTF("Waiting for ping...\r\n");
(void)rpmsg_queue_recv(my_rpmsg, my_queue, (uint32_t *)&remote_addr, (char *)&msg, sizeof(THE_MESSAGE),
((void *)0), RL_BLOCK);
msg.DATA++;
(void)PRINTF("Sending pong...\r\n");
(void)rpmsg_lite_send(my_rpmsg, my_ept, remote_addr, (char *)&msg, sizeof(THE_MESSAGE), RL_BLOCK);
}
The solution for rpmsg step over debug is that we need to use RL_DONT_BLOCK in sdk.