Napisano dnia 24.08.2015 r. o godzinie 17:00
Autor: Piotr Sperka
W tym artykule opiszę w jaki sposób zainstalować potrzebne narzędzia pod Linuksem do programowania dla ESP8266 oraz w jaki sposób wgrać skompilowany program. Wszystkie opisywane operacje były wykonywanie pod czystą instalacją systemu Linux Mint 17.
1. Instalujemy potrzebne zależności do kompilacji toolchaina:
sudo apt-get install git autoconf automake build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev
2. Tworzymy katalog dla instalacji (proponuję /opt/Espressif) oraz nadajemy sobie do niego prawa właściciela:
sudo mkdir /opt/Espressif sudo chown NAZWA_UŻYTKOWNIKA /opt/Espressif/
3. Pobieramy z GitHuba źródła crosstool-NG:
cd /opt/Espressif git clone -b lx106-g++ https://github.com/jcmvbkbc/crosstool-NG.git
4. Kompilujemy toolchain. Wykonujemy kolejno:
cd crosstool-NG ./bootstrap && ./configure --prefix=`pwd` && make && make install ./ct-ng xtensa-lx106-elf ./ct-ng build
5. Czekamy około 15 – 60 minut zależnie od szybkości komputera i połączenia z siecią (polecenie ./ct-ng build pobiera potrzebne źródła).
6. Dodajemy do zmiennej systemowej PATH lokalizację naszego toolchaina. Edytujemy plik ~/.bashrc dowolnym edytorem, na przykład:
nano ~/.bashrc
Na końcu pliku dopisujemy linię:
export PATH=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin/:$PATH
Zapisujemy plik. Po ponownym uruchomieniu konsoli powinniśmy mieć bezpośredni dostęp do toolchaina. Sprawdzamy to wpisując:
xtensa-lx106-elf-gcc --version
Powinniśmy zobaczyć informacje o wersji kompilatora.
1. Przechodzimy do katalogu:
cd /opt/Espressif
2. Pobieramy program esptool-py:
git clone https://github.com/themadinventor/esptool esptool-py
3. Tworzymy dowiązanie symboliczne:
chmod +w /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin ln -s /opt/Espressif/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/
Do ESP8266 dostępnych jest kilka różnych SDK, jednak najbardziej popularne są oficjalne esp_iot_sdk oraz esp_iot_rtos_sdk. To ostatnie jest wyposażone w system FreeRTOS, dzięki czemu można tworzyć bardziej zaawanowane aplikacje.
1. Przechodzimy do katalogu:
cd /opt/Espressif
2. Pobieramy SDK:
git clone https://github.com/espressif/esp_iot_rtos_sdk.git
3. Przechodzimy do katalogu z pobranym właśnie SDK:
cd esp_iot_rtos_sdk
4. Pobieramy dodatkowe biblioteki (bez nich nie uda się niczego skompilować):
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
5. Wydajemy polecenie:
make COMPILE=gcc
Wszystko powinno się bezbłędnie skompilować. Oznacza to poprawną instalację oprogramowania we wszystkich poprzednich krokach.
6. Możemy już zacząć tworzenie własnej aplikacji – polecam wykonać kopię czystego sdk do wybranego miejsca. Główny plik kodu aplikacji użytkownika znajduje się w KATALOG_SDK/app/user/user_main.c
1. Pobieramy najnowsze archiwum z http://espressif.com/new-sdk-release/
2. Rozpakowujemy je w wybranym miejscu, a następnie z konsoli przechodzimy do tego katalogu.
3. Pobieramy dodatkowe biblioteki:
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
4. Aby sprawdzić działanie SDK kopiujemy zawartość któregoś z przykładów, np. KATALOG_SDK/examples/at do katalogu KATALOG_SDK/app.
5. Wydajemy polecenie:
make COMPILE=gcc
6. Jeżeli wszystko wykonaliśmy poprawnie, program powinien się skompilować bez błędów.
1. Zwieramy wyprowadzenie GPIO0 do masy.
2. Podłączamy zasilanie układu, a także wyprowadzenia RX, TX oraz GND do konwertera USB – Serial (np. opartego o układ FT232).
3. Wydajemy polecenie:
sudo esptool.py --port /dev/ttyUSB0 write_flash 0x00000 "ŚCIEŻKA_DO_SDK/bin/boot_v1.4(b1).bin" 0x01000 "ŚCIEŻKA_DO_SDK/bin/upgrade/user1.4096.new.6.bin" -fs 32m
W powyższym poleceniu zarówno ścieżki i nazwy plików bin, jak i miejsca do ich wgrania mogą się różnić zależnie od konfiguracji kompilacji. Po skompilowaniu naszego kodu dostaniemy informacje, jakie pliki i gdzie należy wgrać, np.:
!!! Support boot_v1.4 and + Generate user1.4096.new.6.bin successully in folder bin/upgrade. boot.bin------------>0x00000 user1.4096.new.6.bin--->0x01000 !!!
Parametr -fs 32m oznacza, że mój moduł ESP-12 jest wyposażony w 4MB pamięci flash (32Mb). Ścieżkę do portu RS232 należy oczywiście odpowiednio zmodyfikować, zależnie od posiadanego sprzętu (w przykładzie /dev/ttyUSB0).
4. Po zakończeniu wgrywania rozłączamy zasilanie, a także wyprowadzenie GPIO0 od masy i ponownie podłączamy układ do zasilania.
Mam nadzieję, że powyższy poradnik pomoże Wam bezproblemowo rozpocząć przygodę z programowaniem dla ESP8266. Co prawda temat ten jest szeroko omówiony w Internecie, jednak dużo poradników zawiera błędy i niedopowiedzenia, których starałem się unikać. W razie pytań z chęcią na nie odpowiem.