esp-idf/examples/custom_bootloader/bootloader_extra_dir
Omar Chebib 729c55b790 docs: changed bootloader extra component to a property in build-system.rst 2024-11-01 13:52:01 +08:00
..
bootloader_components/my_boot_hooks
extra_bootloader_components/extra_component
main
CMakeLists.txt
README.md docs: changed bootloader extra component to a property in build-system.rst 2024-11-01 13:52:01 +08:00
pytest_bootloader_extra_dir.py

README.md

Supported Targets ESP32 ESP32-C2 ESP32-C3 ESP32-C5 ESP32-C6 ESP32-C61 ESP32-H2 ESP32-P4 ESP32-S2 ESP32-S3

Bootloader extra component

(See the README.md file in the upper level for more information about bootloader examples.)

The purpose of this example is to show how to add a custom directory that contains a component to the bootloader build.

Registering extra components for the bootloader can be done thanks to the IDF property BOOTLOADER_EXTRA_COMPONENT_DIRS. It can either refer to a directory that contains several components, either refer to a single component.

Usage of this example:

Simply compile it:

idf.py build

Then flash it and open the monitor with the following command:

idf.py flash monitor

If everything went well, the bootloader should output the following message:

I (60) EXTRA: This function is called from an extra component

And finally the application will start and show the message:

User application is loaded and running.

Organization of this example

This project contains a main directory that represents an application. It also has a bootloader_components directory that contains a component that will be compiled and linked with the bootloader. This bootloader_components can contain several components, each of them would be in a different directory.

The directory extra_bootloader_components/extra_component/ contains a component that is meant to be included in the bootloader build. To do so, the CMake property BOOTLOADER_EXTRA_COMPONENT_DIRS is set from the CMakeLists.txt file.

Below is a short explanation of files in the project folder.

├── CMakeLists.txt             Defines the `BOOTLOADER_EXTRA_COMPONENT_DIRS` property
├── main
│   ├── CMakeLists.txt
│   └── main.c                 User application
├── bootloader_components
│   └── my_boot_hooks
│       ├── CMakeLists.txt
│       └── hooks.c            Implementation of the hooks to execute on boot
├── extra_bootloader_components
│   └── extra_component
│       ├── CMakeLists.txt
│       └── extra_component.c  Implementation of the extra component
└── README.md                  This is the file you are currently reading