AnsweredAssumed Answered

i.MX8MM:  rpmsg_create_channel failed

Question asked by Kevin Wong Employee on Jul 23, 2019
Latest reply on Jul 23, 2019 by Kevin Wong

Dear MCU Xpresso team,

 

Our customer using the rpmsg_lite demo code from our SDK for their application on the i.MX8MM where they are reading sensor data off a UART. When the A53 cores stop receiving sensor packages, they see the rpmsg_create_channel_failed errors below.

 

 102.808930] virtio_rpmsg_bus virtio0: creating channel rpmsg-virtual-tty-channel-1 addr 0x1e
[  102.817491] virtio_rpmsg_bus virtio0: channel rpmsg-virtual-tty-channel-1:ffffffff:1e already exist
[  102.826609] virtio_rpmsg_bus virtio0: rpmsg_create_channel failed
[  102.832788] virtio_rpmsg_bus virtio0: creating channel rpmsg-virtual-tty-channel-1 addr 0x1e
[  102.841317] virtio_rpmsg_bus virtio0: channel rpmsg-virtual-tty-channel-1:ffffffff:1e already exist
[  102.850465] virtio_rpmsg_bus virtio0: rpmsg_create_channel failed
[  102.856676] virtio_rpmsg_bus virtio0: creating channel rpmsg-virtual-tty-channel-1 addr 0x1e
[  102.865221] virtio_rpmsg_bus virtio0: channel rpmsg-virtual-tty-channel-1:ffffffff:1e already exist
[  102.874354] virtio_rpmsg_bus virtio0: rpmsg_create_channel failed
[  102.880504] virtio_rpmsg_bus virtio0: inbound msg too big: (-418816992, 40)

Researching online I see that there is a patch to create a unique device name by adding a destination endpoint to the service name. Would this be the suggested fix here?

on the M4 side:

M4 stuck in UART3 irq handler which is irq_xcvr.  This irq_xcvr keeps receiving the data (step 1) but there is no longer do xcvr_task (step 2) that put a byte of data into sensor buffer.  Also the imx_rpmsg_tty (/dev/ttyRPMSG30) on A53 also stops receiving package.

side effect on M4 core:

1). irq_xcvr ........ 52

2). [1. EBS ###] 345 packet start byte detected = [55]
[2. EBS] 345 Payload [AE]
[3. EBS] 345 Payload [A0]
[3. EBS] 345 Payload [AA]
[3. EBS] 345 Payload [12]
[3. EBS] 345 Payload [47]
[3. EBS] 345 Payload [C6]
[4. EBS] 345 CRC = [29]
3). 345 0x55 0xAE 0xA0 0xAA 0x12 0x47 0xC6 0x29
is_new_345MHz_packet new_packet 1 status 0xA0 => allocate and send RPMsg packet over to A53

irq_xcvr ........ 53  => each dot represets one byte (total sensor packet size)

irq_xcvr ........ 54

irq_xcvr ........ 55

irq_xcvr ........ 56

 

Please advise if further information is needed.

Thanks,

Kevin

Outcomes