diff --git a/espflash/src/image_format/direct_boot.rs b/espflash/src/image_format/direct_boot.rs index 46fd0ab4..1ba0eb81 100644 --- a/espflash/src/image_format/direct_boot.rs +++ b/espflash/src/image_format/direct_boot.rs @@ -57,3 +57,27 @@ impl<'a> ImageFormat<'a> for DirectBootFormat<'a> { Box::new(once(self.segment.borrow())) } } + +#[cfg(test)] +pub mod tests { + use std::fs; + + use super::*; + use crate::elf::ElfFirmwareImage; + + #[test] + fn test_direct_boot_format() { + let input_bytes = fs::read("tests/resources/esp32c3_hal_blinky_db").unwrap(); + let expected_bin = fs::read("tests/resources/esp32c3_hal_blinky_db.bin").unwrap(); + + let image = ElfFirmwareImage::try_from(input_bytes.as_slice()).unwrap(); + let flash_image = DirectBootFormat::new(&image, 0).unwrap(); + + let segments = flash_image.flash_segments().collect::>(); + assert_eq!(segments.len(), 1); + + let buf = segments[0].data.as_ref(); + assert_eq!(expected_bin.len(), buf.len()); + assert_eq!(expected_bin.as_slice(), buf); + } +} diff --git a/espflash/tests/README.md b/espflash/tests/README.md index 8aab591b..410b1cc8 100644 --- a/espflash/tests/README.md +++ b/espflash/tests/README.md @@ -2,6 +2,20 @@ This document describes how the test files under `tests/resources` were generated, so that they can be re-generated in the future if needed. +## Direct Boot + +```bash +$ git clone https://github.com/esp-rs/esp-hal +$ cd esp-hal/esp32c3-hal/ +$ cargo build --release --features=direct-boot --example=blinky +``` + +The ELF file is located at `target/riscv32imc-unknown-none-elf/examples/blinky` + +```bash +$ espflash save-image --format=direct-boot --chip=esp32c3 esp32c3_hal_blinky_db.bin esp32c3_hal_blinky_db +``` + ## IDF Bootloader ```bash diff --git a/espflash/tests/resources/esp32c3_hal_blinky_db b/espflash/tests/resources/esp32c3_hal_blinky_db new file mode 100755 index 00000000..da70d19a Binary files /dev/null and b/espflash/tests/resources/esp32c3_hal_blinky_db differ diff --git a/espflash/tests/resources/esp32c3_hal_blinky_db.bin b/espflash/tests/resources/esp32c3_hal_blinky_db.bin new file mode 100644 index 00000000..63e88c73 Binary files /dev/null and b/espflash/tests/resources/esp32c3_hal_blinky_db.bin differ