tobozo / WiFiManagerTz

A NTP/Timezone extension to @tzapu's WiFiManager
Other
7 stars 2 forks source link

Exception / Reboot when trying to access TZ Update page on Wemos D1 mini clone #10

Open fxpires opened 5 months ago

fxpires commented 5 months ago

Hi there! I'm running the example on a Wemos D1 mini clone board. It compiles, uploads and runs ok. But when I try to access the "Setup Clock" button, it throws an exception and resets the Wemos. The versions are the latest available: WifiManager 2.0.17 WifiManagerTz 1.3.3 Other pages works as expected. Info page even states "Last reset reason" as "Exception"

tobozo commented 5 months ago

hi, thanks for your feedback :+1:

I don't have an esp8266 to test with, but I believe EEPROM.begin(16) should be called at some stage before init, can you confirm that adding it to your setup() function (before starting wifimanager) fixes the crash?

if it doesn't then more info will be required to understand the crash:

fxpires commented 5 months ago

Thanks for the quick response. I tried to insert EEPROM.begin(16); inside the setup() block, but it only changed the default timezone from "Setting up time: NTPServer=pool.ntp.org, TZ-Name=Africa/Abidjan, TZ=GMT0" to "Setting up time: NTPServer=pool.ntp.org, TZ-Name=Africa/Windhoek, TZ=CAT-2". Those are Arduino IDE settings (Brazilian Portuguese, so Placa = Board, Porta = Serial Port):

image

platform is Wemos D1 mini esp8266 sdk version is 3.1.2

Those are the Serial Monitor outputs, with and without the EEPROM.begin(16) line:

Without EEPROM.begin(16);

Mac Address: C8:C9:A3:33:B7:9Welcome to the tzupdate example Mac Address: C8:C9:A3:33:B7:9Welcome to the tzupdate example Mac Address: C8:C9:A3:33:B7:9Welcome to the tzupdate example Mac Address: C8:C9:A3:33:B7:9Welcome to the tread error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClassD EEPROMClass::read error, address 3 >m:AutoConnect wm:Connect Wifi, ATTEMPT # 1 of 10 wm:Connecting to SAVED AP: galaxy wm:connectTimeout not set, ESP waitForConnectResult... wm:AutoConnect: SUCCESS wm:STA IP Address: 192.168.2.122 Connected to Access Point, visit http://192.168.2.122 to setup the clock or change WiFi settings wm:StartAP with SSID: ESP_33B79D wm:AP IP address: 192.168.4.1 wm:Starting Web Portal Setting up time: NTPServer=pool.ntp.org, TZ-Name=Africa/Abidjan, TZ=GMT0 *wm:config portal has timed out tzCstr=GMT0, server=pool.ntp.org:ur 1

⸮⸮n⸮r⸮⸮n|⸮ l ⸮ lb brl⸮nb⸮n l⸮rl⸮l⸮ ⸮Welcome to the tzupdate example Mac Address: C8:C9:A3:33:B7:9D EEPROMClass::read error, address 3 > 0 or 3 < 0 EEPROMClass::read error, address 2 > 0 or 2 < 0 wm:AutoConnect wm:Connect Wifi, ATTEMPT # 1 of 10 wm:Connecting to SAVED AP: galaxy wm:connectTimeout not set, ESP waitForConnectResult... wm:AutoConnect: SUCCESS wm:STA IP Address: 192.168.2.122 Connected to Access Point, visit http://192.168.2.122 to setup the clock or change WiFi settings wm:StartAP with SSID: ESP_33B79D wm:AP IP address: 192.168.4.1 *wm:Starting Web Portal Setting up time: NTPServer=pool.ntp.org, TZ-Name=Africa/Abidjan, TZ=GMT0 WS:ac tzCstr=GMT0, server=pool.ntp.org:rn 514 :ref 1 WS:av status=4 WCav=514 :ref 2 :ur 2 :ref 2 :ur 2 :c0 1, 514 [HTTP] handle route Custom

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Exception (3): epc1=0x4000bf64 epc2=0x00000000 epc3=0x00000000 excvaddr=0x4024e403 depc=0x00000000

stack>>>

ctx: cont sp: 3ffffc90 end: 3fffffd0 offset: 0150 3ffffde0: 4024e403 0000001a 3fff3098 4020f628
3ffffdf0: 3fff4ad4 00000001 3fff2f0c 4020206b
3ffffe00: 00000000 00000000 3ffe951c 00000430
3ffffe10: 000032ad ffffffff 40211920 ffffffff
3ffffe20: 000032ad 00000430 3fff5ae4 4020bedf
3ffffe30: 0000012c 00000020 3fff5e8c 40100dc2
3ffffe40: 00000000 0000000f 3ffffe88 00000000
3ffffe50: 3fff4b08 0000000f 3fff4ad4 40207b30
3ffffe60: 00000000 0023002f 00000000 00000030
3ffffe70: 0032fed0 3ffffec0 00000004 00000000
3ffffe80: 0023002f 00000000 00000000 000f000f
3ffffe90: 00000000 3ffffef0 00000008 3fff3268
3ffffea0: 3fff4b2c 3fff43f8 00000000 40210d84
3ffffeb0: 00000002 00000000 00000000 3fff3268
3ffffec0: 3fffdad0 00000001 3fff43a4 40201425
3ffffed0: 00000000 3fff4b2c 3fff4ad4 40207c80
3ffffee0: 3fffff00 00000000 00000000 0023002f
3ffffef0: 00000000 00000002 3fff2f48 00004bc6
3fffff00: 00000000 00000002 00000000 00000001
3fffff10: 00000000 3fff2d6c 3fff5ae4 3fff3268
3fffff20: 3fffdad0 3fff4b08 3fff4ad4 40209e3e
3fffff30: 40214298 00000000 00001388 4020ca4e
3fffff40: 00000000 00000000 3fff5ae4 00000000
3fffff50: 00000000 3fff3098 3fff2c6c 3fff3268
3fffff60: 3fffdad0 3fff2d6c 3fff2c6c 4020a0a8
3fffff70: 3ffe9838 3ffe983c 3ffe9844 3fff431c
3fffff80: 00000000 3fff4338 feefeffe feefeffe
3fffff90: 3fff4338 feefeffe feefeffe 3fff3268
3fffffa0: 3fffdad0 3fff2d6c 3fff2c6c 4020a23e
3fffffb0: 00000000 00000000 3fff323c 40211b58
3fffffc0: feefeffe feefeffe 3fffdab0 401010ed
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

ets Jan 8 2013,rst cause:2, boot mode:(3,7)

load 0x4010f000, len 3424, room 16 tail 0 chksum 0x2e load 0x3fff20b8, len 40, room 8 tail 0 chksum 0x2b csum 0x2b v00060a80 ~ld ⸮⸮n⸮r⸮⸮n|⸮ l ⸮ lb brl⸮nb⸮n l⸮rl⸮l⸮ ⸮Welcome to the tzupdate example

With EEPROM.begin(16);

⸮⸮n⸮r⸮⸮n|⸮ l ⸮ lb brl⸮nB⸮n l⸮rl⸮l⸮ ⸮Welcome to the tzupdate example Mac Address: C8:C9:A3:33:B7:9D wm:AutoConnect wm:Connect Wifi, ATTEMPT # 1 of 10 wm:Connecting to SAVED AP: galaxy wm:connectTimeout not set, ESP waitForConnectResult... wm:AutoConnect: SUCCESS wm:STA IP Address: 192.168.2.122 Connected to Access Point, visit http://192.168.2.122 to setup the clock or change WiFi settings wm:StartAP with SSID: ESP_33B79D wm:AP IP address: 192.168.4.1 *wm:Starting Web Portal Setting up time: NTPServer=pool.ntp.org, TZ-Name=Africa/Windhoek, TZ=CAT-2 WS:ac tzCstr=CAT-2, server=pool.ntp.org:ref 1 :rn 398 WS:av status=4 WCav=0 :ref 2 :ur 2 :ref 2 :ur 2 :c0 1, 398 [HTTP] handle route Custom

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Exception (3): epc1=0x4000bf64 epc2=0x00000000 epc3=0x00000000 excvaddr=0x4024e48f depc=0x00000000

stack>>>

ctx: cont sp: 3ffffc90 end: 3fffffd0 offset: 0150 3ffffde0: 4024e48f 0000001a 3fff30d8 4020f6b4
3ffffdf0: 3fff48e4 00000001 3fff2f4c 40202077
3ffffe00: 00000000 00000000 3ffe951c 00000430
3ffffe10: 000023ca ffffffff 402119ac ffffffff
3ffffe20: 000023ca 00000430 3fff5b4c 4020beeb
3ffffe30: 0000012c 00000020 3fff5e84 40100dc2
3ffffe40: 00000000 00000019 3ffffe88 00000000
3ffffe50: 3fff4918 00000019 3fff48e4 40207b3c
3ffffe60: 00000000 0019001f 00000000 0001d4c0
3ffffe70: 0032fed0 3ffffec0 00000004 00000000
3ffffe80: 0019001f 00000000 00000000 0019001f
3ffffe90: 00000000 3ffffef0 00000008 3fff32a8
3ffffea0: 3fff493c 3fff4208 00000000 40210e10
3ffffeb0: 00000002 00000000 00000000 3fff32a8
3ffffec0: 3fffdad0 00000001 3fff41b4 40201425
3ffffed0: 00000000 3fff493c 3fff48e4 40207c8c
3ffffee0: 3fffff00 00000000 00000000 0019001f
3ffffef0: 00000000 00000002 3fff2f88 00004bc6
3fffff00: 00000000 00000002 00000000 00000001
3fffff10: 00000000 3fff2dac 3fff5b4c 3fff32a8
3fffff20: 3fffdad0 3fff4918 3fff48e4 40209e4a
3fffff30: 40214324 00000000 00001388 4020ca5a
3fffff40: 00000000 00000000 3fff5b4c 00000000
3fffff50: 00000000 3fff30d8 3fff2cac 3fff32a8
3fffff60: 3fffdad0 3fff2dac 3fff2cac 4020a0b4
3fffff70: 3ffe9838 3ffe983c 3ffe9844 3fff412c
3fffff80: 00000000 3fff4148 feefeffe feefeffe
3fffff90: 3fff4148 feefeffe feefeffe 3fff32a8
3fffffa0: 3fffdad0 3fff2dac 3fff2cac 4020a24a
3fffffb0: 00000000 00000000 3fff327c 40211be4
3fffffc0: feefeffe feefeffe 3fffdab0 401010ed
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3424, room 16 tail 0 chksum 0x2e load 0x3fff20b8, len 40, room 8 tail 0 chksum 0x2b csum 0x2b v00060b80 ~ld ⸮⸮n⸮r⸮⸮n|⸮ l ⸮ lb brl⸮nB⸮n l⸮rl⸮l⸮ ⸮Welcome to the tzupdate example Mac Address: C8:C9:A3:33:B7:9D wm:AutoConnect wm:Connect Wifi, ATTEMPT # 1 of 10 wm:Connecting to SAVED AP: galaxy wm:connectTimeout not set, ESP waitForConnectResult... wm:AutoConnect: SUCCESS wm:STA IP Address: 192.168.2.122 Connected to Access Point, visit http://192.168.2.122 to setup the clock or change WiFi settings wm:StartAP with SSID: ESP_33B79D wm:AP IP address: 192.168.4.1 *wm:Starting Web Portal Setting up time: NTPServer=pool.ntp.org, TZ-Name=Africa/Windhoek, TZ=CAT-2

Is this the info you need? Let me know if its wrong or if something else is needed.

tobozo commented 5 months ago

thanks, although it wasn't the cause of the crash, it looks like the EEPROM.begin was indeed missing

the exception occurs after the handleRoute() function emits a message so I'll investigate from there, but the exception needs to be decoded; there's an arduino plugin for that: https://github.com/me-no-dev/EspExceptionDecoder

meanwhile I'll try to apply some esp8266 basic optimizations just in case the issue is caused by memory fragmentation i.e. moving TZ and HTML strings to progmem to free some RAM

tobozo commented 5 months ago

I pushed some changes on a new branch: https://github.com/tobozo/WiFiManagerTz/tree/1.3.4

:warning: Moving strings to PROGMEM saved about 16% of space in var/constants RAM!

If this improvement fixes the issue then it will confirm the crash was caused by memory exhaustion.

before (56% RAM used)

. Variables and constants in RAM (global, static), used 45484 / 80192 bytes (56%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     5312     initialized variables
╠══ RODATA   13276    constants       
╚══ BSS      26896    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60711 / 65536 bytes (92%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     27943    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 341756 / 1048576 bytes (32%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     341756   code in flash  

after (40% RAM used)


. Variables and constants in RAM (global, static), used 32488 / 80192 bytes (40%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1612     initialized variables
╠══ RODATA   3972     constants       
╚══ BSS      26904    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60711 / 65536 bytes (92%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     27943    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 358792 / 1048576 bytes (34%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     358792   code in flash