fix: ram_only_header: pad flash segment to next boundary

When flash segment does not fit minimum alignment
requirement, pad it to next alignment boundary so
that the flash placement fits properly. Otherwise ELF
won't be created due to wrong alignment.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
This commit is contained in:
Sylvio Alves
2024-05-19 12:36:56 +02:00
committed by Radim Karniš
parent 4c5874a3c4
commit 4394a658c4

View File

@@ -760,8 +760,10 @@ class ESP32FirmwareImage(BaseFirmwareImage):
self.ROM_LOADER.BOOTLOADER_FLASH_OFFSET - self.SEG_HEADER_LEN
)
if pad_len < align_min:
print("Unable to align the segment!")
break
# in case pad_len does not fit minimum alignment,
# pad it to next aligned boundary
pad_len += self.IROM_ALIGN
pad_len -= self.ROM_LOADER.BOOTLOADER_FLASH_OFFSET
pad_segment = ImageSegment(0, b"\x00" * pad_len, f.tell())
self.save_segment(f, pad_segment)