allow different bootloader sizes for each MCU
not needed yet, but will make maintenance easier in the future, and avoid confusion.
This commit is contained in:
@@ -13,13 +13,17 @@
|
|||||||
constexpr size_t METADATA_OFFSET = 256; // ESP32: metadata appears after Espressif metadata
|
constexpr size_t METADATA_OFFSET = 256; // ESP32: metadata appears after Espressif metadata
|
||||||
#define UPDATE_ERROR errorString
|
#define UPDATE_ERROR errorString
|
||||||
|
|
||||||
|
// Bootloader is at fixed offset 0x1000 (4KB), 0x0000 (0KB), or 0x2000 (8KB), and is typically 32KB
|
||||||
// Bootloader offsets for different MCUs => see https://github.com/wled/WLED/issues/5064
|
// Bootloader offsets for different MCUs => see https://github.com/wled/WLED/issues/5064
|
||||||
#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
|
#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
|
||||||
constexpr size_t BOOTLOADER_OFFSET = 0x0000; // esp32-S3, esp32-C3 and (future support) esp32-c6
|
constexpr size_t BOOTLOADER_OFFSET = 0x0000; // esp32-S3, esp32-C3 and (future support) esp32-c6
|
||||||
|
constexpr size_t BOOTLOADER_SIZE = 0x8000; // 32KB, typical bootloader size
|
||||||
#elif defined(CONFIG_IDF_TARGET_ESP32P4) || defined(CONFIG_IDF_TARGET_ESP32C5)
|
#elif defined(CONFIG_IDF_TARGET_ESP32P4) || defined(CONFIG_IDF_TARGET_ESP32C5)
|
||||||
constexpr size_t BOOTLOADER_OFFSET = 0x2000; // (future support) esp32-P4 and esp32-C5
|
constexpr size_t BOOTLOADER_OFFSET = 0x2000; // (future support) esp32-P4 and esp32-C5
|
||||||
|
constexpr size_t BOOTLOADER_SIZE = 0x8000; // 32KB, typical bootloader size
|
||||||
#else
|
#else
|
||||||
constexpr size_t BOOTLOADER_OFFSET = 0x1000; // esp32 and esp32-s2
|
constexpr size_t BOOTLOADER_OFFSET = 0x1000; // esp32 and esp32-s2
|
||||||
|
constexpr size_t BOOTLOADER_SIZE = 0x8000; // 32KB, typical bootloader size
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
@@ -289,9 +293,6 @@ static String bootloaderSHA256HexCache = "";
|
|||||||
void calculateBootloaderSHA256() {
|
void calculateBootloaderSHA256() {
|
||||||
if (!bootloaderSHA256HexCache.isEmpty()) return;
|
if (!bootloaderSHA256HexCache.isEmpty()) return;
|
||||||
|
|
||||||
// Bootloader is at fixed offset 0x1000 (4KB) and is typically 32KB
|
|
||||||
const uint32_t bootloaderSize = 0x8000; // 32KB, typical bootloader size
|
|
||||||
|
|
||||||
// Calculate SHA256
|
// Calculate SHA256
|
||||||
uint8_t sha256[32];
|
uint8_t sha256[32];
|
||||||
mbedtls_sha256_context ctx;
|
mbedtls_sha256_context ctx;
|
||||||
@@ -301,8 +302,8 @@ void calculateBootloaderSHA256() {
|
|||||||
const size_t chunkSize = 256;
|
const size_t chunkSize = 256;
|
||||||
uint8_t buffer[chunkSize];
|
uint8_t buffer[chunkSize];
|
||||||
|
|
||||||
for (uint32_t offset = 0; offset < bootloaderSize; offset += chunkSize) {
|
for (uint32_t offset = 0; offset < BOOTLOADER_SIZE; offset += chunkSize) {
|
||||||
size_t readSize = min((size_t)(bootloaderSize - offset), chunkSize);
|
size_t readSize = min((size_t)(BOOTLOADER_SIZE - offset), chunkSize);
|
||||||
if (esp_flash_read(NULL, buffer, BOOTLOADER_OFFSET + offset, readSize) == ESP_OK) {
|
if (esp_flash_read(NULL, buffer, BOOTLOADER_OFFSET + offset, readSize) == ESP_OK) {
|
||||||
mbedtls_sha256_update(&ctx, buffer, readSize);
|
mbedtls_sha256_update(&ctx, buffer, readSize);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user