- Last edited 4 months ago ago
Linux Mailbox framework overview
This article gives information about the Linux® mailbox framework. The mailbox framework is involved in interprocessor communication in heterogeneous multicore systems.
1 Framework purpose
The mailbox is used in interprocessor communication to exchange messages or signals between the host and the coprocessor cores. The mailbox framework is based on:
- A mailbox controller that is platform dependent:
- It is in charge of configuring and handling IRQ from the IPCC peripheral.
- It provides a generic API to the mailbox client.
- A mailbox client that is in charge of the message to send or receive.
A general presentation of the mailbox framework is available in the Linux mailbox documentation .
2 System overview
2.1 Component description
- Mailbox controller
- The mailbox controller is the stm32_ipcc. It configures and controls the IPCC peripheral
- Mailbox client
- The user can define his own mailbox client.
- For example, the RPMsg framework uses mailbox for the interprocessor communication.
- In this case the mailbox client is the remoteproc driver that forwards services from/to the RPMsg framework.
2.2 API description
The APIs are described in the Mailbox client API 
3.1 Kernel Configuration
Activate stm32 IPCC mailbox in kernel configuration using the Linux Menuconfig tool: Menuconfig or how to configure kernel
Device drivers ---> -*- Mailbox Hardware Support ---> <*> STM32 IPCC Mailbox
3.2 Device tree configuration
Please refer to the IPCC device tree configuration.
4 How to use the framework
The Linux mailbox documentation  provides with a very simple example of use.
5 How to trace and debug the framework
5.1 How to trace
Dynamic debug traces can be added using the following commands:
echo -n 'file stm32-ipcc.c +p' > /sys/kernel/debug/dynamic_debug/control echo -n 'file mailbox.c +p' > /sys/kernel/debug/dynamic_debug/control
6 Source code location
- stm32-ipcc driver: drivers/mailbox/stm32-ipcc.c
- framework: drivers/mailbox/mailbox.c
- client interface: include/linux/mailbox_client.h