I was able to build and run the M4 ping pong example on my platform. I would like to take the next step and add features to the interface to create a better demo. I clearly know how to build the M4 side because that was part of the exercise. However, I don’t see instructions anywhere to build the Linux side. The instructions showed how to load and run the prebuilt module “modprobe imx_rpmsg_pingpong” which worked. But are there any step by step instructions to rebuild it after making changes to it?
In a related question, it appears that all of the rpmsg examples are kernel modules. Is there an example of a “user land” application that calls into a kernel module / driver to talk across the interface? I see documentation suggesting that but no code that does it.
Could you provide the hardware and software version of your module?
This site shows how to build the Linux kernel and kernel modules from sources.
The kernel drivers for RPmsg communication are part of the regular kernel tree. Hence they get built during the regular kernel build. If you rebuild the kernel as part of a complete OpenEmbedded build, that should happen automatically. If you build outside of OpenEmbedded, then the regular kernle build system will build the modules. In this case the Build U-Boot and Linux Kernel from Source Code article is applicable.
There is a RPmsg TTY example which allows to communicate with the M4 core from user space through a tty device. This is the easiest way to communicate with the M4 core and does not need any kernel side customizations.