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 tools: Increase the minimal supported CMake version to 3.16 2022-06-01 06:35:02 +00:00
partitions.csv openthread: change partition table to nvs flash 2023-06-14 16:34:54 +08:00
README.md feat(openthread): rcp size optimization configurations 2023-09-13 10:54:15 +08:00
sdkconfig.ci.rcp openthread:add openthread CI 2022-09-16 14:07:31 +08:00
sdkconfig.defaults feat(openthread): rcp size optimization configurations 2023-09-13 10:54:15 +08:00

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.