Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Język Toit - (podobno) 30 razy szybszy niż MicroPython na ESP32

ghost666 28 Nov 2021 10:58 1557 4
  • Język Toit - (podobno) 30 razy szybszy niż MicroPython na ESP32
    Opracowany przez zespół byłych pracowników Google, język Toit to w rzeczywistości kompletna platforma Internetu Rzeczy (IoT) ze zdalnym zarządzaniem, aktualizacjami oprogramowania sprzętowego dla flot urządzeń o funkcjach podobnych do tych oferowanych przez rozwiązania takie jak balena, Microsoft Azure czy platforma Particle edge-to-cloud.

    Toit obecnie pracuje na mikrokontrolerach ESP32 przy użyciu lekkich kontenerów. Po przetestowaniu istniejących języków wysokiego poziomu - MicroPythona i Javascriptu - zespół nie były wystarczająco zadowolony z oferowanych przez nie prędkości działania na platformach z małymi mikrokontrolerami. Opracował w związku z tym Toit - [racę zaczęły się w 2018 roku i właśnie zakończyły się wydaniem open-source z wydaniem kompilatora, maszyny wirtualnej i standardowych biblioteki. Wszystko dostępne jest w repozytorium na Github na licencji LGPL-2.1.

    "Jednym z głównych powodów przejścia z języka MicroPython na język Toit jest to, że Twoja aplikacja jest ograniczona wydajnością lub korzystasz z ESP32 z baterii, ponieważ Toit zapewnia do 30x wyższą wydajność z Toit na ESP32. Przysiedliśmy do pracy i kilka miesięcy później mieliśmy pierwsze wyniki. Wykonywaliśmy kod ponad 30 razy szybciej niż w MicroPythonie na ESP32 z językiem wysokiego poziomu, który oddziela alokację pamięci i którego programista Pythona może się nauczyć w ciągu kilku godzin: język Toit".

    Warto przyjrzeć się temu językowi dokładniej, wypróbowując go np. w Ubuntu 20.04. Maszyna wirtualna jest oparta na forku ESP-IDF z niestandardową implementacją malloc, poprawkami alokacji dla UART i poprawkami LWIP. Oto, co musimy najpierw zainstalować:

    Code: bash
    Log in, to see the code


    Teraz instalujemy narzędzia dla ESP32:

    Code: bash
    Log in, to see the code


    i już możemy zbudować środowisko Toit jak i przykładowe programy do uruchamiania na testowej maszynie:

    Code: bash
    Log in, to see the code


    Teraz można odtworzyć pierwszy przykład (Hello World):

    Code: python
    Log in, to see the code


    Ab go uruchomić wpisujemy:

    Code: bash
    Log in, to see the code


    A jak zbudować ten przykład do wersji, kórą można zaimplementować na ESP32? To proste:

    Code: bash
    Log in, to see the code


    Stworzy to plik z firmware Toit (toit.bin) z załadowanym przykładem. Można go wgrać do układu za pomocą esptool:

    Code: bash
    Log in, to see the code


    Drugi przykład jest bardziej złożony. Poniższy skrypt (http.toit) wykorzystuje m.in. Wi-Fi:

    Code: python
    Log in, to see the code


    Ten krótki przykład pobiera stronę główną Google i raportuje ile bajtów pobrał... czegoś w nim jednak brakuje - gdzie definiowane są dane do logowania do sieci Wi-Fi? To można zrobić na etapie budowy skryptu:

    Code: bash
    Log in, to see the code


    albo skonfigurować to w domyślnym programie tak, aby pobierał SSID i hasło z Makefile:

    Code: bash
    Log in, to see the code


    Jedną z możliwości, jakie oferuje Toit jest funkcja aktualizacji bezprzewodowej (OTA), co oznacza, ze po wgraniu szkicu po raz pierwszym firmware można aktualizować korzystając z narzędzi Toit.

    Kompletną platformę Toit można używać za darmo dla maksymalnie do 10 urządzeń, a oprócz strony Github, można również znaleźć dodatkowe informacje na stronie z dokumentacją nie tylko na temat oprogramowania układowego i języka Toit, ale także Cloud API i Platformy Toit jako całości.

    Źródło: https://www.cnx-software.com/2021/11/28/toit-open-source-language-claims-to-be-30x-faster-than-micropython-on-esp32/
    Code: actionscript
    Log in, to see the code

    Cool? Ranking DIY
    About Author
    ghost666
    Translator, editor
    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 wrote 11809 posts with rating 9944, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • #2
    khoam
    Level 42  
    Porównanie z MicroPythonem bardzo zabawne, biorąc pod uwagę, że ten drugi w zasadzie to nie nadaje się nawet do prototypowania aplikacji na ESP32. Szkoda, że autorzy nie pokusili się o porównanie Toit z Lua, Rust czy B4R.
  • #3
    ghost666
    Translator, editor
    khoam wrote:
    Porównanie z MicroPythonem bardzo zabawne, biorąc pod uwagę, że ten drugi w zasadzie to nie nadaje się nawet do prototypowania aplikacji na ESP32. Szkoda, że autorzy nie pokusili się o porównanie Toit z Lua, Rust czy B4R.


    Ja (prywatnie) totalnie nie rozumiem popularności MicroPythona - toż to koszmarnie powolne jest, działając na złożonej warstwie abstrakcji pod spodem... ale cóż, patrząc na popularność Pythona na świecie, to "gdy jedyne co znasz to młotek, to każdy problem wygląda jak gwóźdź" czy jakoś tak ;).
  • #4
    khoam
    Level 42  
    @ghost666 Mam podobną opinię o pythonie. Złośliwi twierdzą, że główną przyczyną powstania tego języka była niechęć studentów do nauki C++ :)
  • #5
    ghost666
    Translator, editor
    khoam wrote:
    @ghost666 Mam podobną opinię o pythonie. Złośliwi twierdzą, że główną przyczyną powstania tego języka była niechęć studentów do nauki C++ :)


    Nie no, ja Pythona (na komputerze) bardzo lubię, szanuję i dużo używam. Ale na MCU to nie widzę sensu...