Skip to content

Commit d49e6c1

Browse files
Marek Matejcfriedt
authored andcommitted
soc: espressif: common: Fix startup loader message
Improve how segment information looks like for MCUboot and SimpleBoot. * silently igonore padding segments (if VMA is 0x0) * do not duplicate mapped segments lines (IROM and DROM) * fix IROM segments taht was incorrectly labeled as IRAM Signed-off-by: Marek Matej <[email protected]>
1 parent 3d63165 commit d49e6c1

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

soc/espressif/common/loader.c

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,20 @@ void map_rom_segments(int core, struct rom_segments *map)
137137
break;
138138
}
139139

140-
ESP_EARLY_LOGI(TAG, "%s\t: lma=%08xh vma=%08xh size=%05xh (%6d)",
141-
IS_LAST(segment_hdr) ? "???"
142-
: IS_DRAM(segment_hdr) ? "DRAM"
143-
: IS_RTC_IRAM(segment_hdr) ? "RTC_IRAM"
144-
: IS_RTC_DRAM(segment_hdr) ? "RTC_DRAM"
145-
: IS_RTC_DATA(segment_hdr) ? "RTC_DATA" : "IRAM",
146-
offset + sizeof(esp_image_segment_header_t), segment_hdr.load_addr,
147-
segment_hdr.data_len, segment_hdr.data_len);
140+
if (segment_hdr.load_addr) {
141+
ESP_EARLY_LOGI(TAG, "%s\t: lma=%08xh vma=%08xh size=%05xh (%6d)",
142+
IS_LAST(segment_hdr) ? "---"
143+
: IS_DRAM(segment_hdr) ? "DRAM"
144+
: IS_IRAM(segment_hdr) ? "IRAM"
145+
: IS_IROM(segment_hdr) ? "IROM"
146+
: IS_DROM(segment_hdr) ? "DROM"
147+
: IS_RTC_IRAM(segment_hdr) ? "RTC_IRAM"
148+
: IS_RTC_DRAM(segment_hdr) ? "RTC_DRAM"
149+
: IS_RTC_DATA(segment_hdr) ? "RTC_DATA" : "???",
150+
offset + sizeof(esp_image_segment_header_t),
151+
segment_hdr.load_addr, segment_hdr.data_len,
152+
segment_hdr.data_len);
153+
}
148154

149155
/* Fix drom and irom produced be the linker, as it could
150156
* be invalidated by the elf2image and flash load offset
@@ -172,9 +178,16 @@ void map_rom_segments(int core, struct rom_segments *map)
172178
ESP_EARLY_LOGE(TAG, "Error parsing segments");
173179
abort();
174180
}
175-
181+
#else /* CONFIG_BOOTLOADER_MCUBOOT */
182+
/* Show map segments continue using same log format as during MCUboot phase */
183+
ESP_EARLY_LOGI(TAG, "%s\t: lma=%08xh vma=%08xh size=%05Xh (%6d) map", "IROM",
184+
map->irom_flash_offset, map->irom_map_addr, map->irom_size, map->irom_size);
185+
ESP_EARLY_LOGI(TAG, "%s\t: lma=%08xh vma=%08xh size=%05Xh (%6d) map", "DROM",
186+
map->drom_flash_offset, map->drom_map_addr, map->drom_size, map->drom_size);
176187
#endif /* !CONFIG_BOOTLOADER_MCUBOOT */
177188

189+
esp_rom_uart_tx_wait_idle(CONFIG_ESP_CONSOLE_UART_NUM);
190+
178191
#if CONFIG_SOC_SERIES_ESP32
179192
Cache_Read_Disable(core);
180193
Cache_Flush(core);
@@ -305,13 +318,6 @@ void __start(void)
305318
#if defined(CONFIG_ESP_SIMPLE_BOOT) || defined(CONFIG_BOOTLOADER_MCUBOOT)
306319
map_rom_segments(0, &map);
307320

308-
/* Show map segments continue using same log format as during MCUboot phase */
309-
ESP_EARLY_LOGI(TAG, "%s\t: lma=%08xh vma=%08xh size=%05Xh (%6d) map", "IROM",
310-
map.irom_flash_offset, map.irom_map_addr, map.irom_size, map.irom_size);
311-
ESP_EARLY_LOGI(TAG, "%s\t: lma=%08xh vma=%08xh size=%05Xh (%6d) map", "DROM",
312-
map.drom_flash_offset, map.drom_map_addr, map.drom_size, map.drom_size);
313-
esp_rom_uart_tx_wait_idle(CONFIG_ESP_CONSOLE_UART_NUM);
314-
315321
/* Disable RNG entropy source as it was already used */
316322
soc_random_disable();
317323

0 commit comments

Comments
 (0)