From e28dd9ef58489e6631d84ff0de05fcb363086a33 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 22 Oct 2025 15:18:18 +0200 Subject: [PATCH 1/2] wifi: fix memory mapped firmware write loop --- libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino | 2 +- .../examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino b/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino index 7aba71d8c..6216766b7 100644 --- a/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino +++ b/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino @@ -219,7 +219,7 @@ void flashWiFiFirmwareMapped() { while (byte_count < file_size) { if (byte_count + chunk_size > file_size) chunk_size = file_size - byte_count; - int ret = root->program(wifi_firmware_image_data, offset + byte_count, chunk_size); + int ret = root->program(&wifi_firmware_image_data[byte_count], offset + byte_count, chunk_size); if (ret != 0) { Serial.println("Error writing memory mapped firmware"); break; diff --git a/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino b/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino index 1c655b85f..8b5df98e6 100644 --- a/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino +++ b/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino @@ -112,7 +112,7 @@ void setup() { while (byte_count < file_size) { if(byte_count + chunck_size > file_size) chunck_size = file_size - byte_count; - int ret = root.program(wifi_firmware_image_data, offset + byte_count, chunck_size); + int ret = root.program(&wifi_firmware_image_data[byte_count], offset + byte_count, chunck_size); if (ret != 0) { Serial.println("Error writing firmware data"); break; From 0abb5f88219d62f9a743267c15f1e4ac40d2c4a6 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 22 Oct 2025 15:19:10 +0200 Subject: [PATCH 2/2] wifi: make sure memory mapped firmware area is erased before writing --- .../examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino b/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino index 8b5df98e6..b894e07da 100644 --- a/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino +++ b/libraries/STM32H747_System/examples/WiFiFirmwareUpdater/WiFiFirmwareUpdater.ino @@ -107,6 +107,12 @@ void setup() { byte_count = 0; const uint32_t offset = 15 * 1024 * 1024 + 1024 * 512; + // Make sure QSPI is erased before programming + Serial.println("Erasing memory mapped firmware area..."); + err = root.erase(14 * 1024 * 1024, 2 * 1024 * 1024); + if (err != 0) { + Serial.println("Error erasing memory mapped firmware area"); + } Serial.println("Flashing memory mapped firmware"); printProgress(byte_count, file_size, 10, true); while (byte_count < file_size) {