SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

W poprzednim tygodniu opisywałem świetną płytkę NodeMCU v2 opartą na układzie ESP8266. Oprócz podstawowych zagadnień, pokazywałem również jak wgrać nowy firmware w postaci binarnej jaki przygotowali twórcy. Najnowsza dostępna wersja w dniu tego wpisu to NodeMCU 0.9.6 datowana na 2015/02/16. Możemy jednak wgrać nowszy build, a nawet skorzystać z rozwojowego drzewa dev120.

Wszystko czego będziemy potrzebowali to Linuksa, trochę czasu i odrobinę miejsca na dysku twardym (około 4GB)

ESP Open SDK

W pierwszej kolejności sklonujmy repozytorium ESP Open SDK i przygotujmy zestaw odpowiednich narzędzi:

  1. cd ~
  2. mkdir nodemcu
  3. cd nodemcu/
  4. git clone https://github.com/pfalcon/esp-open-sdk.git
  5. cd esp-open-sdk/
  6. make STANDALONE=y

W zależności od posiadanego sprzętu i prędkości sieci, proces ten może zając od kilku do kilkunastu minut. Po tym czasie powinien wyświetlić się komunikat o pomyślnym wykonaniu zadania z prośbą o modyfikację zmiennej środowiskowej PATH. W moim przypadku będzie to:

  1. export PATH=/home/korneliusz/nodemcu/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

Sprawdźmy jeszcze, czy wszystko jest poprawnie, wydając poniższe polecenie:

  1. xtensa-lx106-elf-gcc -v

Using built-in specs.
COLLECT_GCC=xtensa-lx106-elf-gcc
COLLECT_LTO_WRAPPER=/home/korneliusz/nodemcu/esp-open-sdk/xtensa-lx106-elf/libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper
Target: xtensa-lx106-elf
Configured with: /home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/src/gcc-4.8.2/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=xtensa-lx106-elf --prefix=/home/korneliusz/nodemcu/esp-open-sdk/xtensa-lx106-elf --with-local-prefix=/home/korneliusz/nodemcu/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --disable-libmudflap --with-sysroot=/home/korneliusz/nodemcu/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG 1.20.0' --disable-__cxa_atexit --with-gmp=/home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpfr=/home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpc=/home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-isl=/home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-cloog=/home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-libelf=/home/korneliusz/nodemcu/esp-open-sdk/crosstool-NG/.build/xtensa-lx106-elf/buildtools --enable-lto --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c,c++
Thread model: single
gcc version 4.8.2 (crosstool-NG 1.20.0):

Możemy przystąpić do budowania firmware

Ponownie klonujemy repozytorium - tym razem zawierające firmware:

  1. cd ~/nodemcu/
  2. git clone https://github.com/nodemcu/nodemcu-firmware.git
  3. cd nodemcu-firmware.git/

Na tym etapie musimy zdecydować, czy interesuje nas gałąź master (obecnie z wersją 0.9.6), czy może chcemy spróbować deweloperskiej wersji 1.2.0. Jeśli tak, wybieramy gałąź dev120. Jeśli nie, pomijamy poniższe polecenie:

  1. git checkout dev120

Na koniec nie pozostaje nam już nic innego, jak wydanie polecenia kompilacji:

  1. make

Kiedy kompilacja dobiegnie końca, możemy przygotować nasz firmware i wgrać go NodeMCU v2 (oczywiście podłączająć go do USB):

  1. tools/esptool.py elf2image app/.output/eagle/debug/image/eagle.app.v6.out
  1. tools/esptool.py write_flash -fm dio -fs 32m -ff 40m 0x00000 app/.output/eagle/debug/image/eagle.app.v6.out-0x00000.bin 0x10000 app/.output/eagle/debug/image/eagle.app.v6.out-0x10000.bin

I praktycznie tyle. Sprawdźmy jeszcze za pomocą minicoma, czy rezultat jest zgodny z oczekiwaniami:

  1. minicom -D /dev/ttyUSB0 -b 9600

Po restarcie powinniśmy ujrzeć świeży firmware:

Custom firmware

Przed kompilacją i wgraniem, możemy zmodyfikować konfigurację naszego firmwareu edytując plik app/include/user_modules.h.

Właśnie tutaj zdecydujemy o dostępności poszczególnych modułów, oszczędzając tym samym cenne kilobajty.

Komentarze Komentarze
Avatar 1
Krzysztof Windows 7 / Mozilla Firefox 39.0
25 July 2015 - 12:32 Jaworzno

Rozglądam się za jakąś baterią do tego ustrojstwa, ale na elty nic znaleść nie mogę. Możesz coś polecić?

Avatar 1
pm7 Linux x86_64 / Mozilla Firefox 38.0
25 July 2015 - 14:38 Katowice

2*AA?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
25 July 2015 - 16:46 Bytom

Nie bardzo rozumiem pytania ;) Podpinasz pod Vin od 3.3 max do 8V. Jest tam regulator LDO

Avatar 1
Krzysztof Windows 7 / Mozilla Firefox 39.0
26 July 2015 - 15:57 Jaworzno

No chyba właśnie chciałem przekombinować niepotrzebnie z bateryjką pokroju: https://elty.pl/pl/p/750mAh-Battery-for-ODROID-W/1146

Avatar 1
Ihsiak Linux x86_64 / Mozilla Firefox 38.0
27 July 2015 - 10:09 Brak informacji

Jeśli chodzi o budowanie, to znalazłem takie coś http://frightanic.com/nodemcu-custom-build/ - nie trzeba budować u siebie. (Btw na githubie właśnie usunęli katalog pre_build).

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
27 July 2015 - 17:43 Bytom

ale trzeba podawać maila :)

Avatar 1
Ihsiak Linux x86_64 / Mozilla Firefox 38.0
08 December 2015 - 16:08 Brak informacji

Fakt, trzeba, o ile ktoś nie ma adresu specjalnie na śmieciowanie to można jeszcze użyć docker imagea: https://hub.docker.com/r/marcelstoer/nodemcu-build/ żeby nie szarpać się instalacją zależności