Skip to content
Diego Sueiro edited this page Oct 10, 2018 · 4 revisions

Welcome to the meta-ipc wiki!

The Yocto/Openembedded meta-ipc layer aims to provide reference hardware platforms, recipes and images for embedded applications running on Hybrid Multi-Processor (HMP) environments which demand inter-processor communication between the asynchronous cores. The application core is running a Linux system (master) and the other(s) core(s) (remote) a baremetal or RTOS. The RPMsg is the transport layer used for this communication.

Supported Hardware Platform

For now the only hardware platform supported by this layer is the WaRP7 that contains a NXP i.MX7 Solo SoC composed of an ARM Cortex A7 (master) and an ARM Cortex M4 (remote) cores.

On the Cortex A7 side the linux kernel version supported is the 4.9 version based on NXP source tree. It includes all NXP changes (e.g: i.MX RPMsg and MU mailbox drivers) that are not mainlined.

On the Cortex M4 side the Zephyr RTOS is supported with extra changes on the top of it to enable the RPMsg (RPMsg-lite library and i.MX MU mailbox driver) transport layer. The Zephyr binary compilation is not performed by Yocto and the instructions to achieve this are available here.

Yocto Distribution Characteristics

For the WaRP7 hardware platform, the Zephyr binary image is copied to the /boot partition of the Linux image and it is processed by the meta-ipc/recipes-ipc/zephyr/zephyr-rpmsglite-bin_1.0.bb recipe.

At the boot time, the u-boot running on the A7 core is responsible for enabling, loading the Zephyr image and starting the M4 core.

The WaRP7 board provides on its micro USB port (J1 connector) access to the serial console ports of the A7 (ttyUSB0) and M4 (ttyUSB1) cores.

As a part of the rootfs initialization, the imx_rpmsg_tty module is loaded automatically and the /dev/ttyRPMSG file is created. The microcom app can be used to send and receive data to/from the A7 and M4 cores.

The Zephyr sample application provided for the M4 will echo the received data and prepend the "echo: " string.