1.8 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.8 KiB
		
	
	
	
	
	
	
	
Custom ESP-IDF Bootloader (Rollback Enabled)
This minimal project builds a custom ESP-IDF bootloader with rollback support enabled.
You can flash it later alongside a Rust firmware using espflash.
What this provides
- A minimal ESP-IDF project (CMake) that can build just the bootloader.
 - Rollback support enabled via sdkconfig.defaults (CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y).
 - A sample OTA partition table (partitions.csv) suitable for OTA and rollback (otadata + two OTA slots).
 - A convenience script to build the bootloader for the desired target.
 
Requirements
- ESP-IDF installed and set up (IDF_PATH exported, Python env activated).
 - A selected target (esp32, esp32s3, esp32c3, etc.).
 
Build
- 
Ensure ESP-IDF is set up: source "$IDF_PATH/export.sh"
 - 
Pick a target (examples): idf.py set-target esp32
or use the script:
./build_bootloader.sh esp32
 - 
Build only the bootloader: idf.py bootloader
or using the script (which also supports setting target):
./build_bootloader.sh esp32
 
Artifacts
- build/bootloader/bootloader.bin
 
Using with espflash (Rust)
- For a no_std Rust firmware, you can pass this custom bootloader to espflash:
espflash flash --bootloader build/bootloader/bootloader.bin 
--partition-table partitions.csv
 
Notes
- Rollback logic requires an OTA layout (otadata + at least two OTA app partitions). The provided partitions.csv is a starting point; adjust sizes/offsets to match your needs.
 - This project doesn’t build an application; it exists solely to produce a bootloader with the right configuration.
 - If you need different log verbosity or features, run 
idf.py menuconfigand then diff/port the changes back into sdkconfig.defaults. - Targets supported depend on your ESP-IDF version. Use 
idf.py set-target <chip>or./build_bootloader.sh <chip>.