Kann hier jemand englisch, hat Github und Muße LittleFS auf einem ESP32
zum laufen zu bringen? Bei meinem ESP32 funktioniert alles, aber bei
jemand anderem nicht aufgrund geänderter Hardware. Ich weiß nicht weiter
und kann nicht helfen, da ich das Board nicht habe.
hier das Problem:
https://tinyurl.com/mrxhktbw
1
E (11) esp_littlefs: ./components/esp_littlefs/src/littlefs/lfs.c:1225:error: Corrupted
es handelt sich soweit ich das rausgelesen habe um folgendes Board:
ESP32-WROOM-32D DEVKIT V4
ESP32-D0WD-V3 (revision v3.1)
https://tinyurl.com/3nzujhdc
Bitte kein KI Geblubber, das hilft nicht weiter.
Gebraucht er die identische ESP32 Library ? Ich verwende littlefs, mit
ESP32 V1.06 library. Wen ich hochstufe nach V2.xx ode V3.xx,
functioniert es nicht mehr....
Ja alles gleich V2, bis auf minimale Abweichung (CRC 1.0.3 statt 1.0.2
und ESP8266Audio 1.9.9 statt 1.9.7) Ich glaube langsam der Kollege hat
grundlegende Probleme mit der Stromversorgung, denn er meint er hat
einen AMS1117 (5V) hinter einem LGS5148 (12V) das sind schon mal 4 Watt
verbraten und es bleiben nur 600 mA. Er soll nun mal einen 91k dazu
löten und den AMS1117 weglassen, mal sehen was das wird.
Es kotzt mich so an bei Arduino dass man ständig was downgraden muss
damit es compiliert. Oder überhaupt noch in den Speicher passt. Gut
selber schuld, aber wenn man nur singen und klatschen in der Schule
hatte...
https://www.youtube.com/watch?v=iH1CBnGKKxI
Bin aber gerade dabei den Code zu aktualisieren für Arduino IDE 2.3.3
werde wohl aber nicht umhin kommen einen Windows 10 Rechner aufzusetzen.
Das kann dauern.
https://github.com/earlephilhower/arduino-littlefs-upload/issues/54
Die alte LittleFS library https://github.com/lorol/LITTLEFS ist jetzt in
Arduino esp32 cor v2 integriert.
Vielleicht liegen die Probleme darin begründet, dass die neue Arduino
Version verwendet wird.
Ich hatte einige Mühe, auf die neue Version umzustellen.
Hier sind zwei Github Repos, in der ich die neue Version verwendet habe.
Es wurde allerdings nicht die Arduino IDE sondern PlatformIO als
Programmierumgebung verwendet.
-https://github.com/RoSchmi/ESP32_LittleFS_Simple_Formatter
-https://github.com/RoSchmi/Esp32_WiFiManager_HeatingSurvey
Die Einzelheiten habe ich auch schon wieder vergessen. Rückfragen wären
für mich daher auch nur mit einigem Aufwand zu beantworten.
Kompilieren tut es ja, nur der Upload funktioniert nicht. Sobald ich
Windows 10 habe hebe ich alles an auf die neuste Version.
Wenn ich programmieren könnte würde ich PlatformIO nehmen. Aber das ist
nun mal ein fremdes Arduino Projekt.
4:2 für dich - kannst du dich nicht woanders auskotzen?
Alexander schrieb:> Wenn ich programmieren könnte würde ich PlatformIO nehmen. Aber das ist> nun mal ein fremdes Arduino Projekt.
Wenn du nicht programmieren kannst, lerne es. Oder such dir ein anderes
Hobby.
scnr
Du scheinst das Konzept Arduino nicht verstanden zu haben. Da benutzt
man als Konsument fertige Libraries und muss nicht selbst programmieren.
Und Open Source hat den Zweck zu teilen. Warum soll ich das Rad neu
erfinden?
Habe nun Windows 10 installiert und Arduino IDE 2.3.3 getestet. Das
Add-on "Upload LittleFS to Pico/ESP8266/ESP32" funktioniert soweit, bis
auf Startschwierigkeiten mit dem COM Port. Muss man wissen.
https://github.com/earlephilhower/arduino-littlefs-upload/issues/12
Nun gibt es aber ein undokumentiertes Feature eine eigene
Partitionstabelle anzulegen. Bei PlatformIO speichtert man die
`partitions.csv` einfach in das Sketch Verzeichnis.
https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/partition-tables.html#creating-custom-tables
Ich weiß wie ich die `boards.txt` ändern kann, so dass bei Custom
Partition Scheme meine .csv hinterlegt wird. Dann kann ich `Partition
Scheme: Custom` auswählen und es kompiliert auf diese Partitionsgröße.
`%UserProfile%\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0
.5\boards.txt`
(Zeilen irgendwo bei dem "DOIT ESP32 DEVKIT V1" hinzufügen)
`%UserProfile%\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0
.5\tools\partitions` -> hier die `custom.csv` speichern
1
# Name, Type, SubType, Offset, Size, Flags
2
nvs, data, nvs, 0x9000, 0x5000,
3
otadata, data, ota, 0xe000, 0x2000,
4
app0, app, ota_0, 0x10000, 0x160000,
5
app1, app, ota_1, 0x170000,0x160000,
6
spiffs, data, spiffs, 0x2D0000,0x120000,
7
coredump, data, coredump,0x3F0000,0x10000,
Allerdings ist das zu kompliziert. Man kann nicht von jedem verlangen in
den esp packages rumzupfuschen. Zumal die Änderung bei einem Update
flöten gehen. Deswegen möchte ich es pur aus dem Sketch heraus
partitioniert haben.
Das Add-on "Upload LittleFS to Pico/ESP8266/ESP32" erkennt
praktischerweise schon meine .csv und legt die LittleFS Partition
entsprechend an. Wählt man ein anderes Layout so erkennt das Add-on dies
ebenfalls (z.B. huge_app)
Bei Arduino ist es unklar, ob und wie das funktioniert. Ich konnte noch
keinen Erfolg erzielen, dass meine .csv irgendwie automatisch
berücksichtigt wird.
https://forum.arduino.cc/t/arduino-2-1-1-custom-partitions-with-esp32-core/1156402
Hat jemand einen Tipp was ich noch machen kann um meine .csv aus dem
Sketch Verzeichnis heraus zu laden? Ansonsten lösche ich die .csv wieder
und nehme gleich `huge_app` aus den Vorlagen, geht allerdings nur für
Boards wo das hinterlegt ist. Da müsste man "ESP32 Dev Module" als Board
wählen, und dann die entsprechende Vorlage. Den Schritt hätte ich gern
gespart.
Zur Erinnerung, es geht darum dass andere das zum laufen kriegen, ich
selbst komme mit Arduino 1.8.19 und Linux klar. Ich brauche das also
nicht für mich sondern für die einfachen Windows Nutzer, die nicht erst
von V3.xx auf V2.xx downgraden wollen.
Das Sketch selbst hab ich schon so angepasst dass es mit den aktuellen
Libs läuft, nur Punkt Komma Strich Änderungen. Allerdings sind die Libs
so gewachsen dass das Sketch nun ohne zutun nicht mehr in die Default
Partitionsgröße passt.
Sketch uses 1349289 bytes (102%) of program storage space. Maximum is 1310720 bytes.
3
Sketch too big
Alexander schrieb:> Das Add-on "Upload LittleFS to Pico/ESP8266/ESP32" erkennt> praktischerweise schon meine .csv und legt die LittleFS Partition> entsprechend an.Alexander schrieb:> app0, app, ota_0, 0x10000, 0x160000,
Alexander schrieb:> Nun gibt es aber ein undokumentiertes Feature eine eigene> Partitionstabelle anzulegen ... (gefolgt von einem link)
Was denkst du, worauf du da verlinkt hast? Auf die Dokumentation!
Arduino ist im Fall von ESP32 und STM32 ein Framework über einem
Framework. Da muss man immer die Doku der unteren Ebenen lesen, um alles
zu verstehen.
Bei über-Frameworks wird es mit jeder Ebene nach oben hin primitiver.
Man lässt Features weg oder dokumentiert sie nicht nochmal neu. Das
haben alle über-Frameworks so an sich. Sie versprechen durch
Zusammenfassung, Umbenennung und Einführung eigener Standards, die
Anwendung des Krams zu vereinfachen. Ich habe aber (mit Ausnahme des
ESP8266 in seiner Anfangszeit) noch kein über-Framework erlebt, das
dieses Versprechen wirklich erfüllt. Sobald man die geraden Pfade
zwischen den grünen Wiesen verlässt (so drück sich mein Chef aus), wird
es doch kompliziert - oft komplizierter, als bei Verzicht auf das
über-Framework.
Alexander schrieb:> Danke. Was mache ich falsch?> [code]> text section exceeds available space in board> Sketch uses 1349289 bytes (102%) of program storage space. Maximum is> 1310720 bytes.> Sketch too big> Alexander schrieb:>> app0, app, ota_0, 0x10000, 0x160000,
0x160000 entspricht 1310720 bytes. Ihre sketch ist aber 1349289 bytes,
passt nicht zusammen. Versuch mal app0 partition zu vergrossern. Siehe
auch dieses tool : https://esp32.jgarrettcorbin.com/
Jan H. schrieb:> 0x160000 entspricht 1310720 bytes
0x160000 entspricht 1441792 Bytes, das hatte ich ja schon vergrößert. Es
wird nur einfach ignoriert, da nicht explizit in der boards.txt
zugewiesen. Das Add-on findet die Datei ja, also liegt's nicht an der
Datei.
Monk schrieb:> Was denkst du, worauf du da verlinkt hast? Auf die Dokumentation!
Ja auf die Dokumentation für PlatformIO bin ich gestoßen. Aber ich bezog
mich auf das forum.arduino.cc
> Q: "Is this docuemented somewhere that you know of?"> A: "Not that I'm aware of"
Jan H. (jan_h74) hat ja noch eine Dokumentation für arduino-esp32
gefunden von espressif, aber wo ist die Dokumentation von Arduino? Wer
garantiert mir dass das auch wirklich implementiert wurde, und an wen
soll ich mich wenden weil es nicht funktioniert?
Wie gesagt, die Datei wird ignoriert. Hast Du es mal versucht, geht es
bei Dir?
edit: aber mir kam da gerade eine Idee.. wobei, csv da dürfte das keine
Rolle spielen..
Sorry bin beim Kompilieren eingeschlafen... hatte mal mit Zeilenende
CRLF und mal mit LF probiert, macht aber keinen Unterschied.
Hier das Log für deine partitions.csv (gekürzt):
1
Sketch too big; see support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it.
2
Sketch uses 1349333 bytes (102%) of program storage space. Maximum is 1310720 bytes.
3
Global variables use 39756 bytes (12%) of dynamic memory, leaving 287924 bytes for local variables. Maximum is 327680 bytes.
4
text section exceeds available space in board
5
6
Compilation error: text section exceeds available space in board
Da es bei dir geht, werde ich mal sukzessiv downgraden und schauen ab
wann es funktioniert. Ich werde aber erstmal Dein Projekt flashen und
gucken ob es da geht.
Alexander schrieb:> Wer garantiert mir dass das auch wirklich implementiert wurde, und an> wen soll ich mich wenden weil es nicht funktioniert?
Wie gesagt ist genau das der Knackpunkt bei solchen über-Frameworks.
Arduino ist für den Einstieg toll, aber wer mehr will sollte besser das
IDF verwenden. Leider muss man sich dann aber auch von anderen
Bibliothekten trennen, die von Arduino abhängen oder sie umschreiben.
Eine bequeme allgemeingültige Lösung für dieses Dilemma kann ich nicht
bieten.
Alexander schrieb:> Da es bei dir geht, werde ich mal sukzessiv downgraden und schauen ab> wann es funktioniert. Ich werde aber erstmal Dein Projekt flashen und> gucken ob es da geht.
Auch mit deinem kompletten Sketch funktioniert es bei mir nicht. Ich
habe überprüft dass deine `partitions.csv` auch wirklich nach
%TEMP%\arduino\sketches\* kopiert wurde. Das Add-on findet auch die
Datei und schreibt an die richtige Adresse 0x290000.
Beim Hochladen des Sketches sagt es weiterhin Maximum is 1310720 bytes.
Die .csv wird ignoriert.
Das mit dem downgraden könnte dauern, Arduino kompiliert immer so
ewig...
Jan H. schrieb:> Das project ist mit Arduino IDE 2.3.0, ESP32 lib V1.06 compiliert.> LittleFS.h wird verwendet.[LittleFS_esp32@1.0.6]
hab mal auf die [LittleFS@3.0.5] aktualisiert (ungetestet)
https://github.com/RP6conrad/ESP-GPS-Logger/pull/34
Es gibt augenscheinlich auch gar kein Problem mit LittleFS. Ich hatte
Probleme mit dem Add-on, weil das Windows 10 erfordert. Das eigentliche
Problem ist die *"Sketch too big; text section exceeds available space
in board."* Fehlermeldung, welche verhindert dass das kompilierte Sketch
geflasht wird.
Lässt sich lösen indem man eine vordefinierte Partitionstabelle
auswählt. Ich wollte aber eine Partitionstabelle über das Sketch
vorgeben, das hätte einen Klick erspart.
Das Feature ist aber kaputt gegangen, und wie Stefan schon schrieb,
fühlt sich auch keiner zuständig.
https://github.com/espressif/arduino-esp32/issues/10120
Keine Lösung, aber ein Workaround:
Alexander schrieb:> Ansonsten lösche ich die .csv wieder und nehme gleich huge_app aus den> Vorlagen, geht allerdings nur für Boards wo das hinterlegt ist. Da> müsste man "ESP32 Dev Module" als Board wählen, und dann die> entsprechende Vorlage. Den Schritt hätte ich gern gespart.
Hat jemand eine Idee wo die Arduino IDE 2.x die Benutzerauswahl
speichert? Ich möchte wissen wo steht welches Board und welches
Partitionslayout aktuell ausgewählt ist. In der
`%UserProfile%\.arduinoIDE\settings.json` habe ich das nicht gefunden?
Ich glaube es ist diese Datei. Die würde ich gerne per Skript auslesen.
Was bietet sich da an für Windows und Linux, Python? Ich wollte das
Skript gerne per platform.txt ausführen, dort wird aber für Windows .exe
verwendet.
Das war ne Sackgasse. Habe zwar ein Tool gefunden was die leveldb in
eine csv exportiert, wo ich einen Python Wrapper drumbauen konnte, aber
das klappt nur wenn im log was in Klartext steht.
https://github.com/markmckinnon/Leveldb-py
1
$ python ./getpartition_win.py
2
Found: leveldb-dump.exe
3
Attempting to repair DB
4
No Stats
5
Number of records dumped are ==> 7
6
Partition Scheme: huge_app, Huge APP (3MB No OTA/1MB SPIFFS)
Damit scheint es zu gehen. Kann zumindest binäre LevelDB lesen und auch
die Custom Partition Scheme Preferences schreiben. Ob die Arduino IDE
das annimmt weiß ich noch nicht.
https://github.com/wbolster/plyvel
Für den `Sketch too big` Fehler mit der partitions.csv gibt es nun auch
eine Lösung. Arduino hat da schon was vorgesehen, hat nur noch keiner
implementiert.
Mit einem Skript kann man die Prüfung selbst machen, man muss nur ein
JSON Array auf stdout ausgeben. Das wird dann von der Arduino IDE
mitgelesen.
Arduino IDE 2.3.3 kann nun unter Windows auch kein Python mehr? gut dass
ich ein Python Script geschrieben habe...
Im packages/esp32/hardware/esp32/3.0.7/tools Ordner sind nun alle
Dateien doppelt, einmal als .py und einmal als .exe - kriegt man raus
mit welchem Compiler ein Python Skript als Windows .exe kompiliert
wurde?
Alexander schrieb:> Alexander schrieb:>> Da es bei dir geht, werde ich mal sukzessiv downgraden und schauen ab>> wann es funktioniert. Ich werde aber erstmal Dein Projekt flashen und>> gucken ob es da geht.>> Auch mit deinem kompletten Sketch funktioniert es bei mir nicht. Ich> habe überprüft dass deine `partitions.csv` auch wirklich nach> %TEMP%\arduino\sketches\* kopiert wurde. Das Add-on findet auch die> Datei und schreibt an die richtige Adresse 0x290000.>> Beim Hochladen des Sketches sagt es weiterhin Maximum is 1310720 bytes.> Die .csv wird ignoriert.>> Das mit dem downgraden könnte dauern, Arduino kompiliert immer so> ewig...>> Jan H. schrieb:>> Das project ist mit Arduino IDE 2.3.0, ESP32 lib V1.06 compiliert.>> LittleFS.h wird verwendet.[LittleFS_esp32@1.0.6]>> hab mal auf die [LittleFS@3.0.5] aktualisiert (ungetestet)> https://github.com/RP6conrad/ESP-GPS-Logger/pull/34
Habe nochmal mit dieses thema weiter gemacht, und gewunschte
partitions.csv ablegen in ordner functioniert, aber....
- In Arduino IDE "Tools" einstellen "Erase All Flash Before Sketch
Upload Enable" (oder alte partition bleibt behalten).
- "Max Sketch space " wird noch immer von boards.txt file uebernommen,
und nicht von partitions.csv !!! So allerdings auch noch eine partition
in "Tools" auswahlen die genugend app space had !!
- Versuche war mit Arduino IDE 2.3, esp32 V2.0.7 library, und ESP32 S3
Dev module