[ESP32-DevKitC + ESP-WROOM-32] Konfiguracja środowiska (Eclipse i Windows)

Tutaj zamieszczamy wyniki i recenzje z testowanych zestawów / podzespołów, jakie będą dostępne dla użytkowników forum
Awatar użytkownika
rezasurmar
Geek
Geek
Posty: 1033
Rejestracja: czwartek 03 wrz 2015, 23:46
Lokalizacja: Tychy
Kontaktowanie:

[ESP32-DevKitC + ESP-WROOM-32] Konfiguracja środowiska (Eclipse i Windows)

Postautor: rezasurmar » niedziela 12 mar 2017, 12:16

kamami.jpg



Otrzymałem do testów następujące moduły:
Zanim przejdę do zasadniczego tematu omówienia wyników testów, to przedstawię konfiguracje środowiska na potrzeby pracy z tymi modułami.

Konfiguracja środowiska dla WROOM_32
Krok 1: Make na windows
Windows nie posiada wbudowanego narzędzia make, dlatego użyjemy środowiska MSYS2.

By zainstalować, wystarczy ściągnąć paczkę z http://esp-idf.readthedocs.io/en/latest ... setup.html (wersja oczywiście zawsze najnowsza, dostępna)
https://dl.espressif.com/dl/esp32_win32 ... 170330.zip
Paczkę rozpakowujemy do C:\msys32
Powinno to wyglądać w ekspolratorze tak
Zrzut ekranu 2017-03-13 13.13.55.png


Następnie uruchamiamy skryptem C:\msys32\msys2_shell.cmd powłokę MSYS2
Zrzut ekranu 2017-03-12 18.34.49.png


Następnie musimy 'zainstalować' SDK dla wroom-32, tworzymy na dysku C folder esp
w oknie konsoli MSYS2 wpisujemy cd C:/esp czyli przechodzimy do utworzonego wcześniej folderu
następnie klonujemy repozytorium z GIT
git clone --recursive https://github.com/espressif/esp-idf.git

Teraz poinformować środowisko o ścieżce do naszych bibliotek esp-idf
wpisujemy w konsoli
export IDF_PATH="C:/path/to/esp-idf"

Jeżeli za każdym razem nie chcemy tego wpisywać, tworzymy plik path2idf.sh
w folderze C:\msys32\etc\profile.d
z zawartością
export IDF_PATH="C:/esp/esp-idf" (plik będzie w załączniku)
path2idf.txt

trzeba tylko rozszerzenie zmienić z txt na sh

Następnie wchodzimy w folder (jeżeli jesteśmy w c:/esp to nie musimy)
cd c:/esp/
Zrzut ekranu 2017-03-13 13.16.41.png

i ściągamy template projektu, wpisując w konsoli MSYS2
git clone --recursive https://github.com/espressif/esp-idf-template.git myapp
(gdzie 'myapp' jest dowolną nazwą, najlepiej bez spacji i polskich znaków, która będzie istotna w dalszej części, przy ustawianiu projektu pod eclipsem)
Zrzut ekranu 2017-03-13 13.37.15.png


Następnie przechodzimy do świeżo powstałego folderu myapp
cd C:/esp/myapp (oczywiście, jeżeli wcześniej byliśmy już w folderze /c/esp wystarczy cd myapp)

Teraz przyszedł czas na ustawienie odpowiedniego COMa dla 'wgrania firmware' do naszego modułu wroom
Podłączamy zestaw DevKit, następnie w menadżerze urządzeń sprawdzamy pod jakim COMem się zgłosił
Zrzut ekranu 2017-03-13 13.11.10.png


Wpisujemy w konsoli make menuconfig
pojawi nam się okno
Zrzut ekranu 2017-03-13 13.23.52.png


Przechodzimy do Serial flasher config, następnie klawiszem enter wchodzimy w Default serial port
Wpisujemy COM8 (odczytany wcześniej w menadżerze urządzeń)
Zrzut ekranu 2017-03-13 13.25.36.png

zatwierdzamy <Ok>, oraz zapisujemy przez <Save>,
Powinno nam się zmienić z domyślnego /dev/ttyUSB0 (który zostawiamy, jeżeli pracujemy na linuxie)
wychodzimy <Exit>, po wyjściu i jeżeli po drodze nic nie pomieszaliśmy ;), wyjdziemy do wiersza poleceń
Zrzut ekranu 2017-03-13 13.42.04.png


Następnym krokiem jest zbudowanie kompilacji wpisując w wiersz poleceń make all
Jest to konieczne do prawidłowego działania i kompilowania projektu w eclipsie

Bez zmiany folderów, będąc w C:/esp/myapp
wpisujemy w konsoli make all, powinna zacząć się kompilacja, jeżeli do tej pory wszystkie kroki przeszły bez błędów, to i kompilacja powinna przejść pomyślnie
Zrzut ekranu 2017-03-13 13.43.25.png

Jeżeli kompilacja przejdzie pomyślnie, powinniśmy dostać następujące informacje w konsoli
Zrzut ekranu 2017-03-13 14.10.53.png


Jak widać, jedną z informacji jest port COM8

Następną czynnością by załadować firmware, jest wprowadzenie naszego modułu w tryb bootloadera
Wykonujemy to w następujący sposób
Trzymając wciśnięty klawisz EN, naciskamy i przytrzymujemy klawisz boot, puszczamy EN, puszczamy drugi w kolejności boot.
Następnie w konsoli wpisujemy make flash
Jeżeli prawidłowo weszliśmy w tryb bootloadera, po chwili powinny nam się pojawić następujące komunikaty
Zrzut ekranu 2017-03-13 14.14.39.png

Po zakończeniu ładowania
Zrzut ekranu 2017-03-13 14.15.50.png


Mamy naszą przykładową aplikację myapp, załadowaną do modułu wroom.

Jeżeli chcemy zobaczyć co zawiera, wystarczy otworzyć plik C:\esp\myapp\main\main.c

Kod: Zaznacz cały

#include "freertos/FreeRTOS.h"
#include "esp_wifi.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_event_loop.h"
#include "nvs_flash.h"
#include "driver/gpio.h"

esp_err_t event_handler(void *ctx, system_event_t *event)
{
    return ESP_OK;
}

void app_main(void)
{
    nvs_flash_init();
    tcpip_adapter_init();
    ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) );
    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
    ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) );
    ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) );
    wifi_config_t sta_config = {
        .sta = {
            .ssid = "access_point_name",
            .password = "password",
            .bssid_set = false
        }
    };
    ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &sta_config) );
    ESP_ERROR_CHECK( esp_wifi_start() );
    ESP_ERROR_CHECK( esp_wifi_connect() );

    gpio_set_direction(GPIO_NUM_4, GPIO_MODE_OUTPUT);
    int level = 0;
    while (true) {
        gpio_set_level(GPIO_NUM_4, level);
        level = !level;
        vTaskDelay(300 / portTICK_PERIOD_MS);
    }
}


Po tych czynnościach możemy przejść do konfiguracji Eclipsa

Build and Flash z Eclipse IDE
Instalowanie Eclipse IDE

    Ściagamy paczkę “Eclipse for C/C++ Development”
Instalujemy gdzie nam pasuje, najlepiej w C:/eclipse (czyli po prostu trzeba rozpakować paczkę do katalogu C:/eclipse). Aktualnie wersja eclipsa to NEON2

Importowanie i ustawianie projektu w Eclipse
Import New Project
  • Wybierz File -> Import...
  • Następnie w oknie, wybierz “C/C++” -> “Existing Code as Makefile Project” and click Next.
  • Na następnej stronie, wprowadź “Existing Code Location” miejsce w którym został zaimportowany
    projekt z poziomy wiersza poleceń msys, przez GIT
    tj. w wierszu poleceń msys
    cd ~/esp
    git clone https://github.com/espressif/esp-idf-template.git myapp
    powoduje, utworzenie w c:/esp/myapp <--- ścieżka którą trzeba wprowadzić w Existing Code Location
  • Na tej samej zakładce, w oknie “Toolchain for Indexer Settings” wybieramy “Cross GCC”.
  • Następnie klikamy Finish.



Project Properties
  • Nowy projekt pojawi się w oknie Project Explorer. Right-click na projekcie, wybieramy Properties z menu.
  • Klikamy “Environment” “C/C++ Build” “Add...” wprowadzamy V oraz wartość 1.
  • Klikamy ponownie “Add...” wprowadzamy IDF_PATH. Wartość powinna być ścieżką dla naszego ESP_IDF.
Windows: (Use forward-slashes not backslashes for this path, ie C:/Users/MyUser/Development/esp-idf.)
w moim przypadku ścieżka do ESP-IDF to C:/esp/esp-idf
(o nią będzie oparta reszta ustawień)


Konfiguracja Środowiska dla Wroom_html_m5904ec30.png

na Windows , zostały nam jeszcze dwa kroki:
  • Na tej samej zakładce, edytujemy PATH environment variable. Usuwamy istniejące ścieżki, zastępujemy je poniższymi.
    C:\msys32\usr\bin;C:\msys32\mingw32\bin;C:\msys32\opt\xtensa-esp32-elf\bin
    (Jeżeli postanowimy zainstalować msys w innym miejscu, trzeba to uwzględnić).
  • Klikamy “C/C++ Build” odhaczamy “Use default build command”, wprowadzamy własną scieżkę dla make
    bash ${IDF_PATH}/tools/windows/eclipse_make.sh

Konfiguracja Środowiska dla Wroom_html_2c5d1f21.png

Następnie:
  • Przechodzimy do "C/C++ General" -> "Preprocessor Include Paths" property page:
  • Wybieramy "Providers"
  • Wybieramy "CDT Cross GCC Built-in Compiler Settings". W "Command to get compiler specs",
    zastępujemy ${COMMAND} na początku, sentencją xtensa-esp32-elf-gcc.
  • Cała opcja "Command to get compiler specs" powinna wyglądać tak
    xtensa-esp32-elf-gcc ${FLAGS} -E -P -v -dD "${INPUTS}"

    Konfiguracja Środowiska dla Wroom_html_m45c1b72d.png
  • Następnie wybieramy "CDT GCC Build Output Parser" i dodajemy na początku xtensa-esp32-elf-
    Prawidłowo powinno być tak
    xtensa-esp32-elf-(g?cc)|([gc]\+\+)|(clang)


    Konfiguracja Środowiska dla Wroom_html_m75ca5778.png

  • Klikamy Apply/OK by zamknąć okno ustawień, wybieramy Project -> Build by skompilować projekt.




Ustawiamy ścieżki dla plików nagłówkowych
Properties/C/C++ General/Paths and Symbols

w zakładce Includes wybieramy GNU C
${IDF_PATH}/components/esp32/include
${IDF_PATH}/components/newlib/include
${IDF_PATH}/components/freertos/include
${IDF_PATH}/components/nvs_flash/include
${IDF_PATH}/components/driver/include
${IDF_PATH}/components/log/include
/myapp/build/include
(gdzie myapp to nazwa projektu, zgodna z nazwą importowanego z git folderu)

Ostatnia ścieżka wymaga zaznaczenia
Is a workspace path
Zrzut ekranu 2017-03-14 11.35.31.png


Konfiguracja Środowiska dla Wroom_html_m1ce6ebee.png


Nie zapominamy o przebudowaniu indexów
prawym klawiszem na projekt, następnie Index/Rebuild


Po tym, możemy zbudować nasz przykład, klikamy prawym na projekcie, potem build
Następnie wchodzimy w tryb bootloadera na naszym module (opisany wyżej), na wszelki wypadek jeszcze raz opiszę

Przytrzymujemy klawisz EN, naciskamy boot, trzymając boot, puszczamy EN, puszczamy boot, jesteśmy w trybie bootloadera.

Następnie tworzymy target o nazwie flash
czyli znowy prawym klawiszem na projekt, Build target, Create .


Po Build Target, na targecie flash, soft zostaje załadowany do modułu wroom32
Zrzut ekranu 2017-03-13 15.17.08.png

Prawidłowe komunikaty konsoli eclipsa, po załadowaniu firmware
Zrzut ekranu 2017-03-13 15.17.01.png



Problemy z ładowaniem flash (bład w pliku esptool.py)
trzeba wyedytować (oraz dodać) opóźnienie skryptu programatora.
Otwieramy w tym celu plik
C:\esp\esp-idf\components\esptool_py\esptool\esptool.py
szukamy linii 300

i zmieniamy z
time.sleep(0.05) na time.sleep(0.5)
dodajemy za self.port.setRTS(False)
time.sleep(0.5)

(w nowszych wersjach esptool.py opóźnienie pierwsze jest już ustawione na 0.1, drugiego nadal brakuje, zalecam zmienić na 0.5, ewentualnie samemu potestować na opcjach z wersji beta2).

Konfiguracja Środowiska dla Wroom_html_2c4ddad4.png


PROBLEMY!!!! (na linuxie)
Every time I plugged in the device, dmesg showed the device coming up

and 'brltty' did *something* to it. At this point, no device was
present in '/dev'


problemy z CP210x pod linux.png


Wywalamy brltty (bug w systemach linux)

Kolejny problem tym razem związany z użyciem FTDI232R (na innych FTDI nie testowałem). LDME-Mate na virtualbox
(konieczna weryfikacja czy na stacjonarnie zainstalowanym linuxie też to występuje).



Konfiguracja Środowiska dla Wroom_html_40818835.png


Jak widać na załączonym obrazu, zalecane by ustawić na Kontroler USB 3.0, działa też na USB1.1, ale za każdym razem (nie wiem czy to zależy od komputera/wersji VirtualBOX, dlatego zalecam ustawienie USB3.0

A tutaj Link do skonfigurowanego środowiska LINUX LDME-Mate
https://www.dropbox.com/s/69sbo6fqkkntp ... X.ova?dl=0

Trzeba sobie zaimportować do VirtualBoxa, oczywiście takich oczywistości jak włączenie USB pod który podpięty jest DevKit na virtualboxie opisywać tutaj nie będę ;).
Maleńka podpowiedź
Zrzut ekranu 2017-03-13 19.51.18.png


Po hasło usera i roota, zapraszam na PW
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
rezasurmar
Geek
Geek
Posty: 1033
Rejestracja: czwartek 03 wrz 2015, 23:46
Lokalizacja: Tychy
Kontaktowanie:

Re: [ESP32-DevKitC + ESP-WROOM-32] Konfiguracja środowiska (Eclipse i Windows)

Postautor: rezasurmar » wtorek 14 mar 2017, 08:15

Wszelkie dyskusje i pytania proszę prowadzić i zadawać tutaj

Dyskusja [ESP32-DevKitC + ESP-WROOM-32] Konfiguracja środowiska


Wróć do „Jak to działa – czyli kącik testera”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość