Skip to content

Commit 1991b00

Browse files
jakebaileydeadprogram
authored andcommitted
builder: fix ESP32 QEMU XIP image offsets
1 parent ada22bc commit 1991b00

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

builder/esp.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ func makeESPFirmwareImage(infile, outfile, format string) error {
111111
// Compute the size of the RAM portion of the image (everything the ROM
112112
// bootloader loads, up to and including the appended SHA256 hash).
113113
ramImageSize := 0
114-
if makeImage {
115-
ramImageSize += 4096
116-
}
117114
ramImageSize += 24 // image header (8) + trailer fields (16)
118115
for _, seg := range segments {
119116
ramImageSize += 8 + len(seg.data) // segment header + data (4-aligned)
@@ -284,6 +281,9 @@ func makeESPFirmwareImage(infile, outfile, format string) error {
284281
dromSize := 0
285282
if len(dromSegs) > 0 {
286283
targetImageOffset := int(dromFlashAddr - flashBase)
284+
if makeImage {
285+
targetImageOffset = int(dromFlashAddr)
286+
}
287287
if outf.Len() > targetImageOffset {
288288
return fmt.Errorf("ESP32: RAM segments too large (%d bytes), overlap DROM at flash 0x%x", outf.Len(), dromFlashAddr)
289289
}
@@ -304,6 +304,9 @@ func makeESPFirmwareImage(infile, outfile, format string) error {
304304
}
305305
iromFlashAddr := dromFlashAddr + uint32(dromPages)*pageSize
306306
targetImageOffset := int(iromFlashAddr - flashBase)
307+
if makeImage {
308+
targetImageOffset = int(iromFlashAddr)
309+
}
307310
if outf.Len() > targetImageOffset {
308311
return fmt.Errorf("ESP32: DROM too large, overlaps IROM at flash 0x%x", iromFlashAddr)
309312
}

0 commit comments

Comments
 (0)