Exploring MicroLua: Программирование на языке Lua для RP2040

Изучение языка MicroLua для RP2040 Титульное изображение

Вы когда-нибудь хотели погрузиться в мир программирования на языке Lua и изучить возможности микроконтроллера RP2040? Не останавливайтесь на достигнутом - MicroLua предлагает увлекательную возможность сделать именно это!

В этой статье я хочу подробно остановиться на том, что MicroLua что это такое, как он работает и почему я считаю его очень ценным инструментом для разработчиков.

Я хочу выразить огромную благодарность Реми Бланк за разработку MicroLua и его распространение по всему миру. Реми выпустил его под лицензией MIT (как и сам Lua), сделав MicroLua доступным для всех.

Мне очень хочется использовать его в будущих проектах.

Что такое MicroLua? Что такое RP2040?

Таким образом, MicroLua использует реализацию Lua и упаковывает ее.

Lua - это динамически-типизированный, мультипарадигмальный язык. И, конечно же, это один из самых быстрых скриптовых языков. Кроме того, он очень маленький (исходный код и документация вместе занимают 1,3 МБ!).

Таким образом, он быстрый, маленький и идеально подходит для встраивания в большие приложения.

Кроме того, Lua имеет 21 выделенное ключевое слово и довольно простой синтаксис, поэтому его сравнительно легко освоить.

Но если вы не знакомы, то первое, на что все жалуются в Lua, - это то, что это язык с 1-ориентированным индексом. И, честно говоря, меня это каждый раз задевает.

Вот пример на языке Lua, чтобы вы могли его увидеть:

Пример Lua с сайта Lua.org
Кредит: lua.org.

Реми разработал MicroLua для программирования специально для микроконтроллера RP2040.

Микроконтроллер RP2040 представляет собой штатную микросхему Raspberry Pi, которая управляет Pico. Однако Raspberry Pi также продается микросхема RP2040 отдельно. Таким образом, RP2040 можно встретить и в других платах, например, в Adafruit Feather.

Таким образом, MicroLua - это пакет Lua для этих плат. В связи с этим в MicroLua интегрирован новейший интерпретатор Lua (версия 5.4) с интерфейсами для комплект для разработки программного обеспечения Pico и включает в себя библиотеку кооперативных потоков.

Поместив интерпретатор Lua вместе с интерфейсами Pico, MicroLua позволяет получить доступ к выводам GPIO и таймерам. И мне очень нравится, что Реми включил библиотеку совместной работы с потоками. Таким образом, если у вас есть Pico, вы можете работать с обоими ядрами.

Кроме того, MicroLua имеет поддержку Fennel, так что если вы любите Lisp (как я), вы все равно сможете воспользоваться преимуществами MicroLua. Хотите использовать Lisp-подобный язык на своем Raspberry Pi Pico? Remy только что сделал это до смешного просто.

Начало работы с MicroLua

Чтобы установить MicroLua, необходимо клонировать хранилище, инициализировать подмодули и следовать предоставленным инструкциям по сборке.

На GitHub имеется следующий код, который позволит запустить набор тестов:

# 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/

Как только это будет сделано, можно приступать к работе.

Следует отметить, что Реми выявил несколько проблем с производительностью MicroLua. Прежде всего, это то, что задержка диспетчеризации событий относительно медленная и требует некоторого улучшения.

Кроме того, если вы обратитесь к страница на GitHubРеми включил в дорожную карту то, что необходимо добавить, например, дополнительные привязки для Pico SDK, файловую систему и многочиповую связь. Кроме того, Реми хочет улучшить производительность потоков, межъядерное взаимодействие и настроить сборщик мусора.

Так что проект очень живой, и за ним стоит следить.

Я написал эту маленькую программу в видео на MicroPython - но в следующий раз я использую Fennel и MicroLua!

Заключение

Итак, теперь, когда вы получили его, приступайте к реализации своего следующего проекта Pico. Мир - это ваша устрица!

Первое, о чем я подумал, когда увидел этот проект, это Lua RTOS для ESP32. Так что если вы рассматриваете варианты использования Lua с микроконтроллерами в целом, обязательно ознакомьтесь и с этим проектом.

Если вам нужно вдохновение, вы можете ознакомиться с некоторыми проектами Pico, о которых мы рассказывали:

Также, если у вас есть Pico W, не забудьте подключить его к PiCockpitТаким образом, к нему можно подключиться из любой точки мира через Интернет.

Какие проекты вы собираетесь создавать с помощью MicroLua? Я с нетерпением жду возможности использовать Fennel для своего следующего проекта Pico!

Комментировать