bootloader: override the 2nd stage bootloader

Add the possibility to have user bootloader components. This is performed
from an application/project, by creating bootloader components. To do so,
it is required to create a `bootloader_component` directory containing
the custom modules to be compiled with the bootloader.

Thanks to this, two solutions are available to override the bootloader now:
- Using hooks within a user bootloader component
- Using a user defined `main` bootloader component to totally override the
  old implementation

Please check the two new examples in `examples/custom_bootloader`

* Closes https://github.com/espressif/esp-idf/issues/7043
This commit is contained in:
Omar Chebib
2021-04-15 10:31:33 +08:00
parent 82a5f9c4b7
commit a79acb413e
27 changed files with 435 additions and 5 deletions

View File

@@ -0,0 +1,18 @@
from __future__ import print_function
import ttfw_idf
@ttfw_idf.idf_example_test(env_tag='Example_GENERIC', target=['esp32', 'esp32s2', 'esp32c3'])
def test_custom_bootloader_hooks_example(env, _): # type: ignore
# Test with default build configurations
dut = env.get_dut('main', 'examples/custom_bootloader/bootloader_hooks')
dut.start_app()
# Expect to read both hooks messages
dut.expect('This hook is called BEFORE bootloader initialization')
dut.expect('This hook is called AFTER bootloader initialization')
if __name__ == '__main__':
test_custom_bootloader_hooks_example()