Uzasadnienie jest jedno. Jeśli w dającej się przewidzieć niedalekiej przyszłości mikrokontroler ten zastąpi obecny ESP8266. to warto już teraz stracić trochę czasu by przejść te choroby wieku dziecięcego. Jeśli liderem w sprzedaży pozostanie jednak ESP-01 to lepiej iść na piwo. Albo na dwa...
Jednym z napotkanych problemów przy programowaniu ESP32 jest zbyt mały zakres dostępnej dla użytkownika pamięci flash. Z zainstalowanych 4 MB dla naszych programów standardowo dostajemy tylko 1 MB. A przykładowy program z biblioteką BLE zajmuje 1,2 MB. Najnowsza wersja Arduino IDE powiększyła tę przestrzeń do 1,3 MB ale to wciąż za mało by wicisną tam i BLE i jeszcze jakieś zabawki użytkownika.
Autorzy jądra ESP32 dla Arduino próbowali rozwiązać problem wprowadzając opcje partition scheme pozwalającą na zmianę ilości wolnej pamięci dla naszych programów.
Próbowali ale bezskutecznie - wszystkie opcje dają ten sam efekt 94% zajętej pamięci przez samą bibliotekę BLE
Do czasu usunięcia tej ewidentnej skuchy pozostaje nam tylko gmeranie w plikach konfiguracyjnych ESP32 CORE dla Arduino IDE.
Szczegóły rozwiązania problemu są ładnie opisane tu >>>>
Proponowana zmiana rzeczywiście powiększa obszar wolnej pamięci ale jednocześnie generuje błędy po wgraniu biblioteki BLYNK i próbie kompilacji. Pojawia się znany wśród miłośników ESP32 komunikat "user code done" i program się zawiesza.
Znalazłem inne rozwiązanie pozwalające na uruchomienie innych "konfliktowych"wobec BLEdevice.h bibliotek.
Powiększenie dostępnej pamięci flash nie zawieszające działania ESP32 (bez komunikatu "user code done")
Krok 1W katalogu ..\arduino-1.8.5\hardware\espressif\esp32\tools\partitions
z plikami konfiguracyjnymi dla profili partition scheme dodaję jeszcze jeden plik o nazwie max.csv
Plik max.csv jest kopią pliku no_ota.csv o zawartości jak poniżej.
Krok 2
W katalogu ..\arduino-1.8.5\hardware\espressif\esp32\ edytuję plik boards.txt
i zamieniam te trzy linijki. Najlepiej zrobić to edytorem NotePad++
na nowe wartości
2097153 DEC = 200000 HEX
Krok 3
W Arduino IDE dla ESP32 wybieramy Board : ESP32 Dev Max
i Partition Scheme: "No OTA (Large APP)"
A wynik tych zmian
dostępne jest 2MB a biblioteki BLE i BLYNKa generują "już tylko" 74 % zajętości pamięci.
I poniżej pokojowe współistnienie dwu bibliotek korzystających z tego samego zasobu - częstotliwości 2,4GHz i tej samej anteny na module ESP32
A więc ESP32 iTAGi i BLYNK wracają na stół a ciąg dalszy niechybnie może nastąpić..
przydatne linki
https://desire.giesecke.tk/index.php/2018/04/20/change-partition-size-arduino-ide/
http://esp-idf.readthedocs.io/en/latest/api-guides/partition-tables.html
https://desire.giesecke.tk/index.php/2018/01/30/change-partition-size/
140
Brak komentarzy:
Prześlij komentarz