Brauche Hilfe beim debuggen: ESP6266 & unaligned memory access

Guten morgen.

Ich bin mit meinen (rudimentaeren) c++ kenntnissen am Ende.
Ich habe hier ein geforktes git repo zum betreiben einer Wortuhr mit einem esp (weemos mini) und einem ws2812b LED Streifen.

Soweit so gut erstmal. Allerdings fliegt mir der ESP bei starten mit einer exception und bootloop um die Ohren und ich weiss nicht, wie ich das gefixt bekomme.

Hier alles, was ich bisher an informationen bekommen konnte:

Git repo (verzeihung dass ich auf eine externe seite verweise, aber das ist zuviel code um das hier zu pasten): GitHub

Hier die exception:

Paste your stack trace hereException (9):
epc1=0x402015f5 epc2=0x00000000 epc3=0x00000000 excvaddr=0x40256d26 depc=0x00000000

>>>stack>>>

ctx: cont
sp: 3fff0f70 end: 3fff1390 offset: 01a0
3fff1110:  40256d26 3fff1180 3ffefd40 4020f335  
3fff1120:  3ffef9d4 3fff1180 3ffefd40 4020f335  
3fff1130:  3ffe8b93 3ffef83c 3ffefd40 4020f550  
3fff1140:  3ffe90ff 0000001c 3ffefd40 00000001  
3fff1150:  40256d26 3fff1180 3ffef83c 402016d4  
3fff1160:  3ffe90ff feefeffe 3ffefd40 3ffefe60  
3fff1170:  00000000 3ffef83c 00000000 402018a8  
3fff1180:  ff000000 ffffffff 00ffff00 4020f5c4  
3fff1190:  00000000 0000000c 3ffef83c 40203335  
3fff11a0:  feefeffe feefeffe feefeffe feefeffe  
3fff11b0:  3ffe9101 00000000 3ffe9100 40213132  
3fff11c0:  3ffe8cee 00000000 3ffe8ced 3ffefe60  
3fff11d0:  3fffdad0 0000002f 3ffefd40 4020ef60  
3fff11e0:  3fffdad0 0000000c 3ffefd40 4020f335  
3fff11f0:  3ffe90ff feefeffe feefeffe 4020f335  
3fff1200:  3ffe8cbf 00000000 3ffefd40 4020f550  
3fff1210:  00008aa1 ffffff00 3f150020 4020f5c4  
3fff1220:  3fffdad0 0000000c 3ffef83c 40203478  
3fff1230:  3fffdad0 3ffefd40 3ffefd40 4020f335  
3fff1240:  3ffe9101 00000000 3ffe9100 40213132  
3fff1250:  3ffe91ac 00000000 3ffe91ab 3ffefe60  
3fff1260:  3fffdad0 00000013 3ffefd40 3ffefe60  
3fff1270:  00000072 4020e671 00000156 40213a50  
3fff1280:  00000005 00000000 00000005 4010035c  
3fff1290:  00000005 3ffef83c 3fff1bc4 4020e62c  
3fff12a0:  00000005 3ffef83c 3fff1bc4 40201514  
3fff12b0:  3fffdad0 3ffefd40 3ffef83c 4020462c  
3fff12c0:  00000000 00000000 00000000 00000000  
3fff12d0:  feefeffe feefeffe feefeffe feefeffe  
3fff12e0:  feefeffe feefeffe feefeffe feefeffe  
3fff12f0:  feefeffe feefeffe feefeffe feefeffe  
3fff1300:  feefeffe feefeffe feefeffe feefeffe  
3fff1310:  feefeffe feefeffe feefeffe feefeffe  
3fff1320:  feefeffe feefeffe feefeffe feefeffe  
3fff1330:  feefeffe feefeffe feefeffe feefeffe  
3fff1340:  feefeffe feefeffe feefeffe 402040c4  
3fff1350:  feefeffe 4021e26c 4021e258 feefeffe  
3fff1360:  feefeffe feefeffe feefeffe feefeffe  
3fff1370:  3fffdad0 00000000 3ffefe30 402114b0  
3fff1380:  feefeffe feefeffe 3ffe8560 401006ad  
<<<stack<<<

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

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v8b899c12
~ld

und hier die exception decoded:

Exception 9: LoadStoreAlignmentCause: Load or store to an unaligned address
PC: 0x402015f5: LEDFunctionsClass::setBuffer(unsigned char*, unsigned char const*, _palette_entry*) at C:\Users\dakky\AppData\Local\Temp\arduino_build_14834\sketch\ledfunctions.cpp line 570
EXCVADDR: 0x40256d26

Decoding stack results
0x4020f335: Print::write(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/Print.h line 60
0x4020f335: Print::write(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/Print.h line 60
0x4020f550: Print::println() at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\Print.cpp line 178
0x402016d4: LEDFunctionsClass::set(unsigned char const*, _palette_entry*, bool) at C:\Users\dakky\AppData\Local\Temp\arduino_build_14834\sketch\ledfunctions.cpp line 514
0x402018a8: LEDFunctionsClass::renderHourglass(unsigned char, bool) at C:\Users\dakky\AppData\Local\Temp\arduino_build_14834\sketch\ledfunctions.cpp line 794
0x4020f5c4: Print::println(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\Print.cpp line 190
0x40203335: LEDFunctionsClass::process() at C:\Users\dakky\AppData\Local\Temp\arduino_build_14834\sketch\ledfunctions.cpp line 348
0x40213132: uart_write(uart_t*, char const*, size_t) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\uart.cpp line 498
0x4020ef60: HardwareSerial::write(unsigned char const*, unsigned int) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/HardwareSerial.h line 158
0x4020f335: Print::write(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/Print.h line 60
0x4020f335: Print::write(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/Print.h line 60
0x4020f550: Print::println() at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\Print.cpp line 178
0x4020f5c4: Print::println(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\Print.cpp line 190
0x40203478: LEDFunctionsClass::setMode(DisplayMode) at C:\Users\dakky\AppData\Local\Temp\arduino_build_14834\sketch\ledfunctions.cpp line 472
0x4020f335: Print::write(char const*) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/Print.h line 60
0x40213132: uart_write(uart_t*, char const*, size_t) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\uart.cpp line 498
0x4020e671: Adafruit_NeoPixel::updateLength(unsigned short) at C:\Users\dakky\Documents\Arduino\libraries\Adafruit_NeoPixel\Adafruit_NeoPixel.cpp line 131
0x40213a50: malloc(size_t) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\umm_malloc\umm_malloc.cpp line 1677
0x4010035c: __digitalWrite(uint8_t, uint8_t) at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_wiring_digital.cpp line 85
0x4020e62c: Adafruit_NeoPixel::begin() at C:\Users\dakky\Documents\Arduino\libraries\Adafruit_NeoPixel\Adafruit_NeoPixel.cpp line 114
0x40201514: LEDFunctionsClass::begin(int) at C:\Users\dakky\AppData\Local\Temp\arduino_build_14834\sketch\ledfunctions.cpp line 310
0x4020462c: setup() at C:\Users\dakky\devzone\private\WordclockV3\src/src.ino line 206
0x402040c4: timerCallback() at C:\Users\dakky\devzone\private\WordclockV3\src/src.ino line 85
0x4021e26c: std::_Function_base::_Base_manager ::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) at c:\users\dakky\documents\arduinodata\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional line 1934
0x4021e258: std::_Function_handler ::_M_invoke(std::_Any_data const&) at c:\users\dakky\documents\arduinodata\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional line 2069
0x402114b0: loop_wrapper() at C:\Users\dakky\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_main.cpp line 122

Falls ihr noch mehr infos braucht, bitte sagt bescheid.

Danke und LG
Dakky

funkioniert das Original?
Wenn ja, was hast du geändert?

nein das orginal funktioniert so auch nicht. hab bisher eigentlich nur den Doku part verändert und das ganze auf platformio kompatibles verzeichnislayout umgezogen. Code an sich ist unverändert.

Achso noch die info falls das wer nachbauen kann/will: man braucht aktuell noch eine alte version von arduinojson. Die dependencies stehen in platformio.ini im projekt root:

lib_deps =
  Adafruit NeoPixel@1.3.5
  WifiManager@0.15.0
  ArduinoJson@5.13.2

Meine erste Vermutung war, daß die Bibliothek nur für 8 Bitter geschrieben wurde, zumindest nicht für de ESP. Anscheinend soll sie aber gerade mit dem ESP8266 (ESP-07) laufen.

Ein "unaligned" Fehler deutet auf Probleme mit dem Compiler/Linker hin, der größere Variablen nicht auf ihr natürliches Alignment legt. Daher wäre interessant zu wissen, mit welcher Version der Arduino IDE die Bibliothek erzeugt und getestet wurde. Das können nur die Entwickler sagen, und nur die können auch den/die jetzt aufgetretenen Fehler beheben.

leider hat der ursprüngliche entwickler keine kontaktdaten hinterlegt und keinen github issue tracker aktiv.
Daher jetzt mein Versuch hier, das projekt ins jahr 2020 zu heben :wink:

Es gibt zwei mögliche Ansprechpartner: thoralt für das ursprüngliche Projekt, und mrrioes für den Fork.

jep.
mrrioes erreich ich nicht (keine kontaktdaten und kein issuetracker aktiv)
thoralt: Fails to run in Wemos D1 mini · Issue #1 · thoralt/esp8266wordclock · GitHub issue is open :wink:

Versuch doch mal, ob du thoralt über seine (ältere) Emailadresse erreichst: thoralt(ät)thoralt.de