RPMsg on TorizonCore 6.2 with iMX8MP

Hi there!

I am trying to get RPMsg working on a iMX8MP with the Yahlia carrier board using TorizonCore 6.2, however no matter what documentation I follow I can’t seem to get it working properly.

I am using the torizoncore-builder tool to generate an image, and have successfully loaded a binary onto the m7 using the MCUXpresso SDK Builder following (these steps)[How to load compiled binaries into Cortex-M | Toradex Developer Center].

This is my tcbuild.yaml config with an example .dts file.

example.dts (108 Bytes)
tcbuild.yaml (352 Bytes)

Things I have explored already:

The example.dts does not work in its current form, only if I remove the &rpmsg {} block it seems to build and then I can successfully see the dummy test device in the /sys folder.

running sudo modprobe imx-rpmsg-tty gives me nothing.

When I check the driver logs it does seem like the driver is available:

$ dmesg | grep "rpmsg"
[    0.046175] imx rpmsg driver is registered.

$ cat /proc/config.gz | gunzip > running.config tells me that the linux kernel is compiled with the following rpmsg driver settings:

CONFIG_RPMSG=y
CONFIG_RPMSG_CHAR=m
CONFIG_RPMSG_CTRL=m
CONFIG_RPMSG_NS=y
CONFIG_RPMSG_QCOM_GLINK=y
CONFIG_RPMSG_QCOM_GLINK_RPM=y
CONFIG_RPMSG_VIRTIO=y
CONFIG_HAVE_IMX_RPMSG=y
CONFIG_IMX_RPMSG_PINGPONG=m
CONFIG_IMX_RPMSG_TTY=m

I am looking for a clear guide to test / enable RPMsg on the linux side. Or otherwise perhaps some help getting a workable setup.

Thanks in advance!

To be able to use the Cortex-M, the proper device tree overlay should be enabled in TorizonCore.
This is verdin-imx8mp_hmp_overlay.dtbo and, as you can read here it has been added to the iMX8M-Plus builds recently.
TorizonCore 6.2 doesn’t have that device tree, and I suggest you to use the last montly 6.3.0-devel-202305+build.7.container.
Please, do not forget to run the commands suggested here otherwise you won’t be able to boot TorizonCore.

The Cortex-M usage has become a quite popular topics in the last few months. If you search on the community, you can find some useful topics.
Please, refer only to recent topics, and not to old ones, since the HMP support has been increaded a lot in the last few weeks.

Thank you! I have managed to deploy the 6.3.0 image with the verdin-imx8mp_hmp_overlay.dtbo overlay successfully. However I am now still at a loss on how to enable rpmsg properly.

I suggest you to read carefully this topic; it’s for the Mini, but for the Plus is almost the same

Basically you have to install the kernel module with

sudo modprobe imx_rpmsg_tty

and configure U-Boot so that it loads the firmware into Cortex-M.

1 Like

Thank you for that thread! I finally got it working now.

Specifically it was important to disable UART4 in the device tree overlay since the example rpmsg_lite_str_echo uses that one by default instead of UART2 where I was looking at.

&uart4 {
    status = "disabled";
};

Hello @samuelous ,
Thanks for the feedback :slight_smile:
If you were able to solve your issue can you please mark @vix 's answer as a solution?

Best regards,
Josep

Done! It would be nice however to have this UART gotcha described somewhere in the docs, perhaps I looked over it.