wtorek, 15 maja 2018

ESP32 BLE i poprawione Arduino IDE czyli iTAG powraca

Wciąż powraca pytanie o sensowność zakupu ESP32. Czy nie wystarczy ESP8266? Tańszy, mniejszy, z lepiej dopracowanym firmwerem i narzędziami, z ogromną ilością działających i sprawdzonych bibliotek. Po jaką cholerę pchać się w nowy procesor piętrzący przy każdym kroku co raz to nowe problemy?
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 1
W 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:

Publikowanie komentarza