Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wsparcie dla ESP32 i ESP8266 w TinyGO

ghost666 03 Paź 2020 12:06 867 1
  • Wsparcie dla ESP32 i ESP8266 w TinyGO
    TinyGO to projekt, który tworzy narzędzia pozwalające tworzyć w języku Go aplikacje na małe mikrokontrolery i inne systemy wbudowane. Dotychczasowo TinyGo obsługiwało płytki takie jak BBC micro:bit czy Arduino Uno.

    Pod koniec września, autorzy projektu dodali do niego obsługę popularnych układów ESP32 oraz ESP8266, co po raz pierwszy pojawiło się w TinyGo w wersji 0.15. Autorzy, w jednym we wpisów na swoim blogu, zdradzają trochę, jak to się stało i jakie spotkały ich przy tym wyzwania.

    "Od dawna chciałem używać TinyGo na układach ESP32 i ESP8266. Te chipy są niezwykle popularne ze względu na ich niską cenę i ogromną moc, więc ich obsługa była jedną z najbardziej pożądanych (jeśli nie najbardziej pożądaną funkcją) od powstania TinyGo. Z przyjemnością stwierdzam, że oba układy mają teraz wstępne wsparcie bezpośrednio w TinyGo!" pisze na swoim blogu Ayke van Laëthem, jeden z autorów projektu.

    "Dodanie wsparcia nie było łatwe. Główną przeszkodą była architektura zestawu instrukcji. W przeciwieństwie do wszystkich innych architektur obsługiwanych w TinyGo, te układy korzystają z architektury Xtensa, która nie znajduje się w LLVM (kompilator używany przez TinyGo). Na szczęście Espressif pracował nad forkiem dla LLVM, który dodaje obsługę tej architektury" opisuje Ayke.

    "Innym powodem, dla którego zajęło to tak dużo czasu, jest to, że projekt TinyGo potrzebuje deskryptorów rejestrów dla mapowanych pamięci I/O, aby kontrolować takie rzeczy, jak prędkość procesora i urządzenia peryferyjne (I²C, SPI, PWM itp.). W przypadku chipów z rdzeniem ARM Cortex-M są one zwykle dostarczane przez producenta w postaci plików SVD, które są czytelną maszynowo listą wszystkich dostępnych rejestrów. Jest on następnie konwertowany na kod w języku Go w celu ułatwienia użytkowania. Niestety dostawcy, którzy używają innego zestawu instrukcji w swoich układach (np. RISC-V, Xtensa), często nie dostarczają tych plików".

    Chociaż teoretycznie jest możliwe ręczne stworzenie tych plików, to jest to czynność czasochłonna i podatna na pomyłki. Tutaj w sukurs przyszła społeczność esp-rs, która mierzyła się z podobnym problemem podczas tworzenia implementacji Rust na ESP32. Wyodrębnili oni większość urządzeń peryferyjnych bezpośrednio z ESP-IDF, który przechowuje je w formie pliku nagłówkowego C i wypełnili pozostałe luki, ręcznie zapisując pozostałe części. "Tak więc, dzięki Rust na ESP32, możemy teraz mieć Go na ESP32!" podsumowuje autor.

    Oczywiście, po uruchomieniu najprostszego programu do mrugania diodą, apetyt szybko rósł. W ten sposób autor dodał obsługę popularnych diod LED RGB - WS2812. WS2812 ma pewne ścisłe wymagania czasowe, które są najłatwiejsze do osiągnięcia przy użyciu kodu na bardzo niskim poziomie, więc nie było to trywialne do realizacji.

    "Wciąż jest wiele do zrobienia. To tylko początkowy port, więc większość rzeczy, które sprawiają, że ESP32 jest tak świetny, nie zostało jeszcze zaimplementowanych". Następujące rzeczy są obsługiwane przez Go na ESP32 od 17 września tego roku:

    * Flashowanie bezpośrednio z TinyGo, (jeśli masz zainstalowany esptool.py)
    * Podstawowa obsługa GPIO, która umożliwia np. miganie diodami LED
    * Obsługa interfejsów UART i SPI
    * Obsługa diod LED RGB (WS2812)

    Do zaimplementowania zostało jeszcze wiele urządzeń peryferyjnych (takich jak np. interfejs I²C) i zaawansowane funkcje, takie jak praca w sieci (obsługa Wi-Fi) czy głęboki stan uśpienia. Ponieważ jest to nowa architektura, nie są obsługiwane jeszcze np. Goroutines (obsługa wielowątkowości); ESP8266 ma podobny poziom wsparcia, z tym wyjątkiem, że nie ma zaimplementowanej obsługi SPI.

    "Jeśli jesteś równie podekscytowany obsługą ESP32 / ESP8266 w TinyGo, pomóż nam! Dodanie obsługi wszystkich urządzeń peryferyjnych to mnóstwo pracy i naprawdę potrzebujemy pomocy społeczności, aby uzyskać pełne wsparcie dla tych potężnych układów. Więc dołącz do naszego kanału Slack (zaproszenie jest [url=]tutaj[/url]) i zapoznaj się z naszym przewodnikiem, aby rozpocząć!

    Źródła:
    https://aykevl.nl/2020/09/tinygo-esp32
    https://tinygo.org/
    https://github.com/tinygo-org/tinygo

    Fajne! Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 10009 postów o ocenie 8268, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • Computer ControlsComputer Controls
  • #2
    khoam
    Poziom 39  
    Rust dla ESP32 (rozwijany od dwóch lat) jest chyba lepszą alternatywą dla programistów C. Szczególnie dla tych, którzy nie lubią C++ ;)