sobota, 3 listopada 2018

Problem z ESP8266? Wyczyść Chińczyka

Przy okazji poprzedniego wpisu o przeprogramowaniu ESP32 dowiedziałem się co nieco nowego o  procedurze bootowania tego mikrokontrolera. Najważniejsza informacja jest taka, co było sporym moim zaskoczeniem, że bootloader rezyduje na stałe w pamięci ROM mikrokontrolera skąd jest, w czasie startu procesora, przepisywany we właściwe miejsce. Tym samym nie można "źle" zaprogramować mikrokontrolera uszkadzając np.  bootloader jak  ma to miejsce modułach ARDUINO. ESP32 wyczyszczony do białego wciąż bez problemów daje się zaprogramować z ARDUINO IDE. Jeszcze większym zaskoczeniem była informacja o identycznej strukturze bootowania w ESP8266. Wielokrotnie moje ulubione ESP-01 czy D1 MINI kupione w chińskim supermarkecie buntowały się na współpracę z moim kodem resetując się co chwila. Dopiero wgranie nowego firmware uspokajało sytuację. Ale może zamiast nowego softu wystarczy porządnie wyszorować mikrokontroler ryżową szczotką usuwając wszelkie ślady chińskiej aktywności?
Dziś clean test poczciwego ESP8266.

Jeśli coś pójdzie nie tak będzie to jeden z krótszych wpisów i konieczność nowych zakupów.

Obiektem działań będą dwa moduły ESP-01.
Pierwszy to niebieski model z 512kB pamięci niemal już niespotykany w sprzedaży więc i szkoda nie będzie za duża gdybym go dobił. Drugi to najnowszy ESP-01S nagminnie stosowany przeze mnie w układach rozproszonej automatyki


ESP-01 512 kB


Moduł ten ma najmniejszą dostępną pojemność pamięci z modułów ESP
=  512 kB = 0,5 MB = 4 Mbit.

Do czyszczenia flasha należy więc zastosować 4Mbit plik dostępny tutaj.
Układ bez problemu odczytany był przez Dowland Tool (rzeczywiści pokazuje tylko 4Mbity pamięci) a następnie wyczyszczona została cala pamięć programu poprzez zapisanie jej samymi jedynkami 0xFF od adresu zero 0x0000.


Teraz sprawdzenie czy da się ją ponownie z programować w ARDUINO IDE.


Bez żadnego problemu i to BLYNKem! Trzeba tylko właściwie ustawić parametry procesora w konfiguracji ARDUINO IDE (w czerwonej ramce) a mała ilość pamięci nie przeszkadza by umieścić tam własne oprogramowanie. I zajmuje ono "tylko" 54% dostępnej pamięci. To świetna wiadomość choć już programu z OTA napewno nie da się w nim upchnąć.

Tym prostym sposobem upadły mi dwa mity związane z programowaniem  ESP.

  • nie ma konieczności instalowania czegokolwiek w pamięci ESP8266 przed wgraniem do niego własnego kodu. Zalecane jest natomiast kompletne wyczyszczenie pamięci z chińskich naleciałości
  • nawet w modułach z pamięcią 512 kB bez problemu można zainstalować BLYNKa lub VIRTUINO co przywraca do życia odłożone do lamusa stare moduły ESP-01

I jeszcze wniosek  - niby oczywisty. Z dużą rezerwą należy przytaczać informacje techniczne pobierane na różnych blogach (z moim włącznie!) bez osobistego sprawdzenia ich wiarygodności. Cóż w Internecie śpiewać każdy może ..... trochę lepiej lub trochę gorzej...

ESP-01S


Dla porządku wykonam podobny eksperyment z najnowszym ESP-01S. Zmienię tylko plik czyszczący pamięć na 8Mbit_Null.bin


Program "widzi" 8 Mbit pamięci na module i bez problemu wypełnia pamięć wskazanym plikiem.
Oczywiście równie bezboleśnie układ daje się zaprogramować przykładowym programem ale zajętość pamięci spadła o połowę. Co jest dość oczywiste.


Pouczająca lekcja i odzyskane układy ESP-01 512kB do dalszych eksperymentów.

I jeden generalny wniosek

Każdy jeden moduł z mikrokontrolerem ESP8266/32 po zakupie NATYCHMIAST wyczyścić przed dalszymi eksperymentami - ot tak na wszelki wypadek.

Ciąg dalszy ma więc nad czym pracować...


155



Brak komentarzy:

Prześlij komentarz