zephyr/samples/drivers/mbox_data
..
boards
remote
src
CMakeLists.txt
Kconfig
Kconfig.sysbuild
README.rst
prj.conf
sample.yaml
sysbuild.cmake

README.rst

.. zephyr:code-sample:: mbox_data
   :name: MBOX Data
   :relevant-api: mbox_interface

   Perform inter-processor mailbox communication using the MBOX API with data.

Overview
********

This sample demonstrates how to use the :ref:`MBOX API <mbox_api>` in data transfer mode.
It can be used only with mbox driver which supports data transfer mode.

Sample will ping-pong up to 4 bytes of data between two cores via two mbox channels.
After each core receives data, it increments it by one and sends it back to other core.

Building and Running
********************

The sample can be built and executed on boards supporting MBOX with data transfer mode.

Building the application for mimxrt1160_evk_cm7
===============================================

.. zephyr-app-commands::
   :zephyr-app: samples/drivers/mbox_data/
   :board: mimxrt1160_evk_cm7
   :goals: debug
   :west-args: --sysbuild

Building the application for mimxrt1170_evk_cm7
===============================================

.. zephyr-app-commands::
   :zephyr-app: samples/drivers/mbox_data/
   :board: mimxrt1170_evk_cm7
   :goals: debug
   :west-args: --sysbuild

Building the application for mimxrt1170_evkb_cm7
================================================

.. zephyr-app-commands::
   :zephyr-app: samples/drivers/mbox_data/
   :board: mimxrt1170_evkb_cm7
   :goals: debug
   :west-args: --sysbuild

Building the application for lpcxpresso55s69_cpu1
=================================================

.. zephyr-app-commands::
   :zephyr-app: samples/drivers/mbox_data/
   :board: lpcxpresso55s69_cpu1
   :goals: debug
   :west-args: --sysbuild

Sample Output
=============

Open a serial terminal (minicom, putty, etc.) and connect the board with the
following settings:

- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1

Reset the board and the following message will appear on the corresponding
serial port, one is the main core another is the remote core:

.. code-block:: console

   *** Booting Zephyr OS build zephyr-v3.5.0-4051-g12f4f4dc8679 ***
   mbox_data Client demo started
   Client send (on channel 3) value: 0
   Client received (on channel 2) value: 1
   Client send (on channel 3) value: 2
   Client received (on channel 2) value: 3
   Client send (on channel 3) value: 4
   ...
   Client received (on channel 2) value: 95
   Client send (on channel 3) value: 96
   Client received (on channel 2) value: 97
   Client send (on channel 3) value: 98
   Client received (on channel 2) value: 99
   mbox_data Client demo ended


.. code-block:: console

   *** Booting Zephyr OS build zephyr-v3.5.0-4051-g12f4f4dc8679 ***
   mbox_data Server demo started
   Server receive (on channel 3) value: 0
   Server send (on channel 2) value: 1
   Server receive (on channel 3) value: 2
   Server send (on channel 2) value: 3
   Server receive (on channel 3) value: 4
   ...
   Server send (on channel 2) value: 95
   Server receive (on channel 3) value: 96
   Server send (on channel 2) value: 97
   Server receive (on channel 3) value: 98
   Server send (on channel 2) value: 99
   mbox_data Server demo ended.