Hello,
When the rpmsg_lite_str_echo demo from MCUXpresso is launched by the remoteproc framework, the RPMSG
demo works fine, the channel is created and I can send messages between the two cores using /dev/ttyRPMSG30 endpoint.
However, when it is launched by U-Boot bootaux command, when the imx_rpmsg_tty demo driver is modprobed,
the following error happens:
root@colibri-imx8x-06858909:~# modprobe imx_rpmsg_tty
[ 23.060068] imx_rpmsg_tty virtio1.rpmsg-openamp-demo-channel.-1.30: new channel: 0x400 -> 0x1e!
[ 23.069286] Install rpmsg tty driver!
[ 23.174246] imx-rproc imx8x-cm4: imx_rproc_kick: failed (3, err:-62)
root@colibri-imx8x-06858909:~# echo "teste" >/dev/ttyRPMSG30
[ 52.578255] imx-rproc imx8x-cm4: imx_rproc_kick: failed (3, err:-62)
[ 52.686242] imx-rproc imx8x-cm4: imx_rproc_kick: failed (3, err:-62)
The code returns TIMER EXPIRED (-62) at (imx_rproc.c)
/*
* Send the index of the triggered virtqueue as the mu payload.
* Let remote processor know which virtqueue is used.
*/
mmsg = vqid << 16;
err = mbox_send_message(priv->tx_ch, (void *)&mmsg);
if (err < 0)
dev_err(priv->dev, "%s: failed (%d, err:%d)\n",
__func__, vqid, err);
where (mailbox.c):
if (chan->cl->tx_block) {
unsigned long wait;
int ret;
if (!chan->cl->tx_tout) /* wait forever */
wait = msecs_to_jiffies(3600000);
else
wait = msecs_to_jiffies(chan->cl->tx_tout);
ret = wait_for_completion_timeout(&chan->tx_complete, wait);
if (ret == 0) {
t = -ETIME;
tx_tick(chan, t);
}
}
I inserted some print debugging in loop on the cortex-m side and looks like the cortex-m stops running
when the kick failed happens, indicating that the cortex-m might have crashed. Do you know why this is happening?
Any suggestions to debug this issue?
Best regards,
Hiago.