From 5a68731bbba05748253e748b7aaf4f44486cb2c8 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 13 Oct 2026 11:13:51 -1000 Subject: [PATCH] [shelly_dimmer] Drop the device table fields that are never read --- esphome/components/shelly_dimmer/dev_table.h | 92 +++++++++---------- esphome/components/shelly_dimmer/stm32flash.h | 7 +- 2 files changed, 43 insertions(+), 56 deletions(-) diff --git a/esphome/components/shelly_dimmer/dev_table.h b/esphome/components/shelly_dimmer/dev_table.h index 9f15c8b434f..f71d5265ef0 100644 --- a/esphome/components/shelly_dimmer/dev_table.h +++ b/esphome/components/shelly_dimmer/dev_table.h @@ -60,106 +60,96 @@ constexpr uint32_t f7[] PROGMEM = {SZ_32K, SZ_32K, SZ_32K, SZ_32K, SZ_128K, SZ_2 * Note that the option bytes upper range is inclusive! */ constexpr stm32_dev_t DEVICES[] PROGMEM = { - /* ID SRAM-address-range FLASH-address-range PPS PSize - Option-byte-addr-range System-mem-addr-range Flags */ + /* ID SRAM-start FLASH-address-range PSize Flags */ /* F0 */ // STM32F030x8/F05xxx - {0x440, 0x20000800, 0x20002000, 0x08000000, 0x08010000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFEC00, 0x1FFFF800, 0}, + {0x440, 0x20000800, 0x08000000, 0x08010000, p_1k, 0}, // STM32F030xC/F09xxx - {0x442, 0x20001800, 0x20008000, 0x08000000, 0x08040000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFC800, 0x1FFFF800, - F_OBLL}, + {0x442, 0x20001800, 0x08000000, 0x08040000, p_2k, F_OBLL}, // STM32F03xx4/6 - {0x444, 0x20000800, 0x20001000, 0x08000000, 0x08008000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFEC00, 0x1FFFF800, 0}, + {0x444, 0x20000800, 0x08000000, 0x08008000, p_1k, 0}, // STM32F04xxx/F070x6 - {0x445, 0x20001800, 0x20001800, 0x08000000, 0x08008000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFC400, 0x1FFFF800, 0}, + {0x445, 0x20001800, 0x08000000, 0x08008000, p_1k, 0}, // STM32F070xB/F071xx/F72xx - {0x448, 0x20001800, 0x20004000, 0x08000000, 0x08020000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFC800, 0x1FFFF800, 0}, + {0x448, 0x20001800, 0x08000000, 0x08020000, p_2k, 0}, /* F1 */ // STM32F10xxx Low-density - {0x412, 0x20000200, 0x20002800, 0x08000000, 0x08008000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x412, 0x20000200, 0x08000000, 0x08008000, p_1k, 0}, // STM32F10xxx Medium-density - {0x410, 0x20000200, 0x20005000, 0x08000000, 0x08020000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x410, 0x20000200, 0x08000000, 0x08020000, p_1k, 0}, // STM32F10xxx High-density - {0x414, 0x20000200, 0x20010000, 0x08000000, 0x08080000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x414, 0x20000200, 0x08000000, 0x08080000, p_2k, 0}, // STM32F10xxx Medium-density VL - {0x420, 0x20000200, 0x20002000, 0x08000000, 0x08020000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x420, 0x20000200, 0x08000000, 0x08020000, p_1k, 0}, // STM32F10xxx High-density VL - {0x428, 0x20000200, 0x20008000, 0x08000000, 0x08080000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x428, 0x20000200, 0x08000000, 0x08080000, p_2k, 0}, // STM32F105xx/F107xx - {0x418, 0x20001000, 0x20010000, 0x08000000, 0x08040000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFB000, 0x1FFFF800, 0}, + {0x418, 0x20001000, 0x08000000, 0x08040000, p_2k, 0}, // STM32F10xxx XL-density - {0x430, 0x20000800, 0x20018000, 0x08000000, 0x08100000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFE000, 0x1FFFF800, 0}, + {0x430, 0x20000800, 0x08000000, 0x08100000, p_2k, 0}, /* F2 */ // STM32F2xxxx - {0x411, 0x20002000, 0x20020000, 0x08000000, 0x08100000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x411, 0x20002000, 0x08000000, 0x08100000, f2f4, 0}, /* F3 */ // STM32F373xx/F378xx - {0x432, 0x20001400, 0x20008000, 0x08000000, 0x08040000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x432, 0x20001400, 0x08000000, 0x08040000, p_2k, 0}, // STM32F302xB(C)/F303xB(C)/F358xx - {0x422, 0x20001400, 0x2000A000, 0x08000000, 0x08040000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x422, 0x20001400, 0x08000000, 0x08040000, p_2k, 0}, // STM32F301xx/F302x4(6/8)/F318xx - {0x439, 0x20001800, 0x20004000, 0x08000000, 0x08010000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x439, 0x20001800, 0x08000000, 0x08010000, p_2k, 0}, // STM32F303x4(6/8)/F334xx/F328xx - {0x438, 0x20001800, 0x20003000, 0x08000000, 0x08010000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x438, 0x20001800, 0x08000000, 0x08010000, p_2k, 0}, // STM32F302xD(E)/F303xD(E)/F398xx - {0x446, 0x20001800, 0x20010000, 0x08000000, 0x08080000, 2, p_2k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x446, 0x20001800, 0x08000000, 0x08080000, p_2k, 0}, /* F4 */ // STM32F40xxx/41xxx - {0x413, 0x20003000, 0x20020000, 0x08000000, 0x08100000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x413, 0x20003000, 0x08000000, 0x08100000, f2f4, 0}, // STM32F42xxx/43xxx - {0x419, 0x20003000, 0x20030000, 0x08000000, 0x08200000, 1, f4db, 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x419, 0x20003000, 0x08000000, 0x08200000, f4db, 0}, // STM32F401xB(C) - {0x423, 0x20003000, 0x20010000, 0x08000000, 0x08040000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x423, 0x20003000, 0x08000000, 0x08040000, f2f4, 0}, // STM32F401xD(E) - {0x433, 0x20003000, 0x20018000, 0x08000000, 0x08080000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x433, 0x20003000, 0x08000000, 0x08080000, f2f4, 0}, // STM32F410xx - {0x458, 0x20003000, 0x20008000, 0x08000000, 0x08020000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x458, 0x20003000, 0x08000000, 0x08020000, f2f4, 0}, // STM32F411xx - {0x431, 0x20003000, 0x20020000, 0x08000000, 0x08080000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x431, 0x20003000, 0x08000000, 0x08080000, f2f4, 0}, // STM32F446xx - {0x421, 0x20003000, 0x20020000, 0x08000000, 0x08080000, 1, f2f4, 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x421, 0x20003000, 0x08000000, 0x08080000, f2f4, 0}, // STM32F469xx - {0x434, 0x20003000, 0x20060000, 0x08000000, 0x08200000, 1, f4db, 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x434, 0x20003000, 0x08000000, 0x08200000, f4db, 0}, /* F7 */ // STM32F74xxx/75xxx - {0x449, 0x20004000, 0x20050000, 0x08000000, 0x08100000, 1, f7, 0x1FFF0000, 0x1FFF001F, 0x1FF00000, 0x1FF0EDC0, 0}, + {0x449, 0x20004000, 0x08000000, 0x08100000, f7, 0}, /* L0 */ // STM32L031xx/041xx - {0x425, 0x20001000, 0x20002000, 0x08000000, 0x08008000, 32, p_128, 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, - 0}, + {0x425, 0x20001000, 0x08000000, 0x08008000, p_128, 0}, // STM32L05xxx/06xxx - {0x417, 0x20001000, 0x20002000, 0x08000000, 0x08010000, 32, p_128, 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, - 0}, + {0x417, 0x20001000, 0x08000000, 0x08010000, p_128, 0}, // STM32L07xxx/08xxx - {0x447, 0x20002000, 0x20005000, 0x08000000, 0x08030000, 32, p_128, 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF02000, - 0}, + {0x447, 0x20002000, 0x08000000, 0x08030000, p_128, 0}, /* L1 */ // STM32L1xxx6(8/B) - {0x416, 0x20000800, 0x20004000, 0x08000000, 0x08020000, 16, p_256, 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, - F_NO_ME}, + {0x416, 0x20000800, 0x08000000, 0x08020000, p_256, F_NO_ME}, // STM32L1xxx6(8/B)A - {0x429, 0x20001000, 0x20008000, 0x08000000, 0x08020000, 16, p_256, 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, - 0}, + {0x429, 0x20001000, 0x08000000, 0x08020000, p_256, 0}, // STM32L1xxxC - {0x427, 0x20001000, 0x20008000, 0x08000000, 0x08040000, 16, p_256, 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF02000, - 0}, + {0x427, 0x20001000, 0x08000000, 0x08040000, p_256, 0}, // STM32L1xxxD - {0x436, 0x20001000, 0x2000C000, 0x08000000, 0x08060000, 16, p_256, 0x1FF80000, 0x1FF8009F, 0x1FF00000, 0x1FF02000, - 0}, + {0x436, 0x20001000, 0x08000000, 0x08060000, p_256, 0}, // STM32L1xxxE - {0x437, 0x20001000, 0x20014000, 0x08000000, 0x08080000, 16, p_256, 0x1FF80000, 0x1FF8009F, 0x1FF00000, 0x1FF02000, - F_NO_ME}, + {0x437, 0x20001000, 0x08000000, 0x08080000, p_256, F_NO_ME}, /* L4 */ // STM32L476xx/486xx - {0x415, 0x20003100, 0x20018000, 0x08000000, 0x08100000, 1, p_2k, 0x1FFF7800, 0x1FFFF80F, 0x1FFF0000, 0x1FFF7000, 0}, + {0x415, 0x20003100, 0x08000000, 0x08100000, p_2k, 0}, /* These are not (yet) in AN2606: */ // Medium_Density PL - {0x641, 0x20000200, 0x20005000, 0x08000000, 0x08020000, 4, p_1k, 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x641, 0x20000200, 0x08000000, 0x08020000, p_1k, 0}, // STM32W-128K - {0x9a8, 0x20000200, 0x20002000, 0x08000000, 0x08020000, 4, p_1k, 0x08040800, 0x0804080F, 0x08040000, 0x08040800, 0}, + {0x9a8, 0x20000200, 0x08000000, 0x08020000, p_1k, 0}, // STM32W-256K - {0x9b0, 0x20000200, 0x20004000, 0x08000000, 0x08040000, 4, p_2k, 0x08040800, 0x0804080F, 0x08040000, 0x08040800, 0}, - {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, nullptr, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x9b0, 0x20000200, 0x08000000, 0x08040000, p_2k, 0}, + {0x0, 0x0, 0x0, 0x0, nullptr, 0x0}, }; } // namespace esphome::shelly_dimmer diff --git a/esphome/components/shelly_dimmer/stm32flash.h b/esphome/components/shelly_dimmer/stm32flash.h index 9aa2e470808..81cd147add3 100644 --- a/esphome/components/shelly_dimmer/stm32flash.h +++ b/esphome/components/shelly_dimmer/stm32flash.h @@ -75,15 +75,12 @@ using stm32_cmd_t = struct Stm32Cmd { // Word-only fields: the table is in PROGMEM and aligned 32-bit loads from flash are safe on ESP8266 using stm32_dev_t = struct Stm32Dev { // NOLINT const uint32_t id; - const uint32_t ram_start, ram_end; + const uint32_t ram_start; const uint32_t fl_start, fl_end; - const uint32_t fl_pps; // pages per sector const uint32_t *fl_ps; // page size - const uint32_t opt_start, opt_end; - const uint32_t mem_start, mem_end; const uint32_t flags; }; -static_assert(sizeof(stm32_dev_t) == 12 * sizeof(uint32_t), "stm32_dev_t must stay word-only for flash reads"); +static_assert(sizeof(stm32_dev_t) == 6 * sizeof(uint32_t), "stm32_dev_t must stay word-only for flash reads"); using stm32_t = struct Stm32 { uart::UARTDevice *stream;