Cóż, potwierdza się prawda, że jak ktoś potrafi napisać skomplikowany program to wcale nie znaczy, że nie może być partaczem i idiotą...
Pisałem o tym w innym wątku, więc tutaj wkleję cytat:
tuxcnc pisze: ↑31 lip 2022, 06:47
Niestety autorzy przy okazji coś spieprzyli i to naprawdę może doprowadzić do szału.
Otóż plik index.html.gz jest teraz automatycznie ładowany do pamięci, co zapewne jest ukłonem w stronę kretynów którzy nie potrafią zrobić tego ręcznie. Pół biedy kiedy ktoś korzysta z wi-fi, ale przy Bluetooth jest zupełnie niepotrzebny, zajmuje prawie całą dostępną przestrzeń i uniemożliwia wgranie kilku różnych konfiguracji, chociaż układ raportuje wolne miejsce. Kończy się to tym, że choć absolutnie żaden błąd nie jest zgłaszany, to sterownik się uruchamia nieskonfigurowany, bo plik konfiguracji albo ma zero bajtów, albo jest ucięty przed końcem...
Nie było to dla mnie jakoś szczególnie istotne, ale dzisiaj zupełnie przypadkiem zacząłem o tym myśleć i doszedłem do dość interesującego wniosku - firmware ma ~1,3 MB plus ~0,2 MB systemu plików, to za żadną cholerę nie jest 4 MB pamięci dostępnej w ESP32 (zależy od wersji), czyli coś jest elegancko spieprzone...
Nawiasem mówiąc, na stronie Espressif znalazłem informację, że "SPIFFS is able to reliably utilize only around 75% of assigned partition space.", co by tłumaczyło dlaczego wywala się pomimo raportowania wolnego miejsca i czyni to problem jeszcze poważniejszym...
Przypomniałem sobie, że ESP32 nie ma takiej zwykłej pamięci kodu jak większość procesorów, tylko dostępny flash się partycjonuje i przydziela określone ilości pamięci do różnych celów. No to już byłem prawie w domu...
Ponieważ do swoich celów muszę samodzielnie kompilować FluidNC, mam zainstalowany odpowiedni kompilator i kod źródłowy.
Żeby nie przeciągać opowieści, znalazłem w internecie plik konfiguracyjny, który wydawał się odpowiedni do testów
https://github.com/espressif/arduino-es ... efault.csv więc go ściągnąłem, wstawiłem do źródeł, poprawiłem plik platformio.ini (board_build.partitions = FluidNC/ld/esp32/default.csv) i skompilowałem swoją wersję FluidNC, co akurat żadnego znaczenia nie ma, bo chodziło tylko o to, żeby dostać prawidłowy plik partitions.bin i go podmienić w folderze z wersją prekompilowaną przez autorów.
Zaistniała jeszcze potrzeba utworzenia obrazu partycji localfs o odpowiedniej wielkości, ale opisywać tego nie będę - jest bardzo proste narzędzie spiffsgen.py dostępne w necie, można sobie poszukać.
Ważne : ściągnięty z netu plik default.csv
na pewno nie jest rozwiązaniem optymalnym. użyłem go żeby uniknąć jakichś dodatkowych błędów, ale docelowo trzeba będzie go poprawić i jeszcze trochę inaczej spartycjonować dostępną pamięć.
W tej chwili jest ważne, że przedtem nie mieściły się krótkie pliki konfiguracyjne, a teraz jest do dyspozycji ponad megabajt miejsca.
Szczególnie polecam koledze
@drzasiek90 do jego partaniny, bo pisał że karty SD nie będzie używał, to może duży localfs mu się przyda...
Warto by było poinformować o powyższym autorów FluidNC, ale ja tego nie zrobię, bo mnie zbanowali...