esp-idf/examples/openthread/ot_rcp
Zhang Wen Xu a5caa1c724 Merge branch 'feature/add_rcp_size_opt_config' into 'master'
feat(openthread): rcp size optimization configuration

See merge request espressif/esp-idf!25870
2023-09-14 14:04:21 +08:00
..
main Merge branch 'feature/extenal_coexist_slave_support' into 'master' 2023-09-14 10:42:28 +08:00
CMakeLists.txt
README.md
partitions.csv
sdkconfig.ci.rcp
sdkconfig.defaults

README.md

Supported Targets ESP32-C6 ESP32-H2

OpenThread Radio Co-Processor (RCP) Example

This example demonstrates an OpenThread Radio Co-Processor.

OpenThread RCP doesn't function alone, it needs to work together with a Host and this example covers two common user scenarios:

How to use example

Hardware Required

To run this example, a board with IEEE 802.15.4 module (for example ESP32-H2) is required.

Configure the project

The default communication interface is port 0 of ESP32-H2 UART running at 460800 baud, change the configuration in esp_ot_config.h if you want to use another interface or need different communication parameters.

RCP Size Optimization Configuration

To optimize the size of the RCP firmware, the following configurations are enabled by default:

CONFIG_COMPILER_OPTIMIZATION_SIZE=y
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS=y
CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
CONFIG_LOG_DEFAULT_LEVEL_NONE=y
CONFIG_NEWLIB_NANO_FORMAT=y
CONFIG_OPENTHREAD_LOG_LEVEL_DYNAMIC=n
CONFIG_OPENTHREAD_LOG_LEVEL_NONE=y

Configure them via idf.py menuconfig if you need.

The firmware size are as follows (reference value):

                                Before Optimization     After Optimization

esp_ot_rcp.bin for esp32h2          314KB                   184KB

esp_ot_rcp.bin for esp32c6          299KB                   208kb

Build and Flash

Build the project and flash it to the board:

idf.py -p <PORT> build flash

Now you'll get an OpenThread RCP, you can try the following use cases:

Thread Border Router

Please refer to ot_br example for the setup steps.

Thread Sniffer

Please refer to Thread Sniffer for the detailed instructions.