63 lines
2.6 KiB
ReStructuredText
63 lines
2.6 KiB
ReStructuredText
.. _ipm_esp32:
|
|
|
|
ESP32 Soft-IPM example
|
|
######################
|
|
|
|
Overview
|
|
********
|
|
This simple example can be used with multicore ESP32 Soc, and demonstrates
|
|
the software intercore messaging mechanism to be used in AMP applications.
|
|
|
|
ESP32 has two CPU named APP and PRO, in this simple example PRO send a
|
|
message to the APP using the IPM driver, and waits for the APP response
|
|
message and prints its contents on console.
|
|
|
|
ESP32 intercore messaging has up two four channels, the 0 and 1 are
|
|
reserved for BT and WIFI messages, and channels 2 and 3 is free to
|
|
any application, each channel supports up to 64 bytes of data per
|
|
message, so high level protocol is responsible to fragment larger
|
|
messages in chunks of 64bytes.
|
|
|
|
Building and Running the Zephyr Code
|
|
************************************
|
|
|
|
The sample requires two build commands to run, for that reason a pre built
|
|
version of esp32_net, the APP cpu side firmware is already provided for quick
|
|
tests just type on the console:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/drivers/ipm/ipm_esp32
|
|
:board: esp32
|
|
:goals: build flash
|
|
:compact:
|
|
|
|
The other option is building from scratch just involve a single extra build command
|
|
and file moving, first of all you need to build the esp32_net firmware as follows:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/drivers/ipm/ipm_esp32/ipm_esp32_net
|
|
:board: esp32_net
|
|
:goals: build
|
|
:compact:
|
|
|
|
Copy output file build/zephyr/esp32_net_firmware.c to samples/drivers/ipm/ipm_esp32/src,
|
|
then build the main project and flash as stated earlier, and you would see the following output:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Booting Zephyr OS build zephyr-v3.0.0-1911-g610f489c861e ***
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|
|
PRO_CPU is sending a fake request, waiting remote response...
|
|
PRO_CPU received a message from APP_CPU : APP_CPU: This is a response
|