Exploring MicroLua: Programowanie w języku Lua dla RP2040

Eksploracja MicroLua dla RP2040 Obraz tytułowy

Czy kiedykolwiek chciałeś zagłębić się w świat programowania w języku Lua i poznać możliwości mikrokontrolera RP2040? Nie szukaj dalej - MicroLua oferuje ekscytującą okazję, aby to zrobić!

W tym artykule chcę zagłębić się w to, co MicroLua czym jest, jak działa i dlaczego uważam, że jest to bardzo cenne narzędzie dla programistów.

Chcę wysłać ogromne podziękowania dla Remy Blank za rozwijanie MicroLua i dzielenie się nim ze światem. Remy udostępnił ją na licencji MIT (podobnie jak Lua), dzięki czemu MicroLua jest dostępna dla każdego.

Jestem naprawdę podekscytowany możliwością wykorzystania go w przyszłych projektach.

Czym jest MicroLua? Co to jest RP2040?

MicroLua używa więc implementacji Lua i pakuje ją.

Lua jest dynamicznie typowanym, wieloparadygmatowym językiem. Jest to oczywiście jeden z najszybszych języków skryptowych. Jest też bardzo mały (kod źródłowy i dokumentacja zajmują łącznie 1,3 MB!).

Jest więc szybki, mały i idealny, gdy chcesz osadzić coś w większych aplikacjach.

Lua ma również 21 wyróżnionych słów kluczowych i dość prostą składnię, więc jest stosunkowo łatwa do nauczenia.

Ale jeśli nie jesteś zaznajomiony, natychmiastową rzeczą, na którą wszyscy narzekają w Lua, jest to, że jest to język indeksowany w oparciu o 1. I szczerze mówiąc, za każdym razem mnie to denerwuje.

Oto przykład Lua, abyś mógł to zobaczyć:

Przykład Lua z Lua.org
Kredyt: lua.org.

Remy zaprojektował MicroLua do programowania specjalnie dla mikrokontrolera RP2040.

Mikrokontroler RP2040 jest wewnętrznym układem Raspberry Pi, który steruje Pico. Jednak Raspberry Pi również sprzedaje układ RP2040 osobno. RP2040 można więc znaleźć również w innych płytach, takich jak Adafruit Feather.

MicroLua pakuje więc Lua dla tych płyt. W tym kontekście MicroLua integruje najnowszy interpreter Lua (wersja 5.4) z interfejsami dla Zestaw do tworzenia oprogramowania Pico i zawiera bibliotekę wątków współpracujących.

Dzięki połączeniu interpretera Lua z interfejsami Pico, MicroLua umożliwia dostęp do pinów GPIO i timerów. Bardzo podoba mi się też to, że Remy dołączył bibliotekę wątków do współpracy. Tak więc, jeśli masz Pico, możesz bawić się oboma rdzeniami.

Dodatkowo MicroLua obsługuje Fennel, więc jeśli kochasz Lisp (tak jak ja), nadal możesz korzystać z MicroLua. Chcesz używać języka podobnego do Lisp na swoim Raspberry Pi Pico? Remy sprawił, że stało się to śmiesznie proste.

Pierwsze kroki z MicroLua

Aby skonfigurować MicroLua, będziesz musiał sklonować repozytorium, zainicjuj podmoduły i postępuj zgodnie z dostarczonymi instrukcjami kompilacji.

GitHub zawiera następujący kod, który pozwoli uruchomić zestaw testów:

# Configure the location of the Pico SDK. Adjust for your setup.
$ export PICO_SDK_PATH="${HOME}/pico-sdk"

# Clone the repository and initialize submodules.
$ git clone https://github.com/MicroLua/MicroLua.git
$ cd MicroLua
$ git submodule update --init

# Connect a Picoprobe to the target, on the UART and optionally on the debug
# port. Then view the Picoprobe's UART connection in a separate terminal.
# The "term" script uses socat.
$ tools/term /dev/ttyACM0

# Build the unit tests.
$ cmake -s . -B build -DPICO_BOARD=pico
$ make -j9 -C build/lib

# Start the target in BOOTSEL mode and flash it with picotool.
$ picotool load -v -x build/lib/mlua_tests.elf

# Alternatively, start the target in BOOTSEL mode and copy to its boot drive.
$ cp build/lib/mlua_tests.uf2 /mnt/RPI-RP2/

Gdy już to zrobisz, możesz zaczynać.

Powinienem wspomnieć, że Remy zidentyfikował kilka problemów z wydajnością MicroLua. Przede wszystkim fakt, że opóźnienie wysyłania zdarzeń jest stosunkowo wolne i wymaga pewnej poprawy.

Ponadto, jeśli przejdziesz do strona GitHubRemy dołączył mapę drogową rzeczy do dodania, takich jak więcej powiązań dla Pico SDK, system plików i komunikacja wieloprocesorowa. Remy chce też poprawić wydajność wątków, komunikację między rdzeniami i dostroić garbage collector.

Jest to więc projekt, który jest bardzo żywy i warto mieć go na oku.

Napisałem ten mały program w MicroPythonie - ale następnym razem użyję Fennel i MicroLua!

Wniosek

Teraz, gdy już to masz, zacznij swój następny projekt Pico. Świat jest twoją ostrygą!

Pierwszą rzeczą, o której pomyślałem, gdy zobaczyłem ten projekt, było Lua RTOS dla ESP32. Jeśli więc szukasz opcji dla Lua z mikrokontrolerami bardziej ogólnie, koniecznie sprawdź również ten projekt.

Jeśli jednak potrzebujesz inspiracji, możesz sprawdzić niektóre projekty Pico, które prezentowaliśmy:

Ponadto, jeśli masz Pico W, nie zapomnij podłączyć go do PiCockpitW ten sposób można połączyć się z nim z dowolnego miejsca na świecie za pośrednictwem Internetu.

Jakie projekty zamierzasz stworzyć przy użyciu MicroLua? Naprawdę nie mogę się doczekać użycia Fennel w moim następnym projekcie Pico!

Pozostaw komentarz