.. zephyr:code-sample:: ipm-mhu-dual-core :name: IPM with ARM MHU :relevant-api: ipm_interface Implement inter-processor mailbox (IPM) using an MHU (Message Handling Unit) Overview ******** An MHU (Message Handling Unit) enables software to raise interrupts to the processor cores. This sample is a simple dual-core example for a Musca A1 board that has two MHU units. This sample only test MHU0, the steps are: 1. CPU 0 will wake up CPU 1 after initialization 2. CPU 1 will send to CPU 0 an interrupt over MHU0 3. CPU 0 return the same to CPU 1 when received MHU0 interrupt 4. Test done when CPU 1 received MHU0 interrupt Building and Running ******************** On Musca B1 ----------- This project outputs 'IPM MHU sample on musca_b1' to the console. It can be built and executed on Musca B1 CPU 0 as follows: .. zephyr-app-commands:: :zephyr-app: samples/drivers/ipm/ipm_mhu_dual_core :board: v2m_musca_b1 :goals: run :compact: This project outputs 'IPM MHU sample on v2m_musca_b1_ns' to the console. It can be built and executed on Musca B1 CPU 1 as follows: .. zephyr-app-commands:: :zephyr-app: samples/drivers/ipm/ipm_mhu_dual_core :board: v2m_musca_b1_ns :goals: run :compact: Combine images for Musca ======================== A third-party tool (srecord) is used to generate the Intel formatted hex image. For more information refer to the `Srecord Manual`_. .. code-block:: bash srec_cat zephyr.bin -Binary -offset $IMAGE_OFFSET zephyr_nonsecure.bin -Binary -offset $IMAGE_NS_OFFSET -o dual_core_zephyr.hex -Intel # This command is an example for Musca B1 srec_cat zephyr.bin -Binary -offset 0xA000000 zephyr_nonsecure.bin -Binary -offset 0xA060400 -o dual_core_zephyr.hex -Intel 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. Sample Output ============= .. code-block:: console ***** Booting Zephyr OS zephyr-v1.13.0-3378-g3625524 ***** IPM MHU sample on musca_a CPU 0, get MHU0 success! ***** Booting Zephyr OS zephyr-v1.13.0-3378-g3625524 ***** IPM MHU sample on musca_a_nonsecure CPU 1, get MHU0 success! MHU ISR on CPU 0 MHU ISR on CPU 1 MHU Test Done. .. _Srecord Manual: https://srecord.sourceforge.net/man/man1/srec_cat.1.html