MicroLua

Бесплатно
Открытый исходный код

Сайт: github.com/MicroLua/MicroLua

MicroLua — это компактный интерпретатор языка программирования Lua, портированный и адаптированный для работы на микроконтроллере RP2040, используемом в платах семейства Raspberry Pi Pico. Проект ориентирован на встраиваемые системы с ограниченными ресурсами и сочетает в себе основы стандартного языка Lua с оптимизациями и привязками к аппаратным возможностям Pico SDK. MicroLua реализует минимальный набор возможностей языка, необходимый для выполнения скриптов, управления периферией и организации управляющей логики в режимах реального времени.

Разработка MicroLua следует принципам лёгкости и детерминированности: код интерпретатора уменьшён и переработан для уменьшения занимаемой памяти и стековых накладных расходов, добавлены интерфейсы к периферии RP2040 и адаптированы механизмы управления контекстом выполнения. Для конкурирующих задач, требующих одновремённой работы нескольких логических нитей, MicroLua использует кооперативную многозадачность на основе корутин языка Lua, что позволяет организовывать упрощённую многопоточность без использования тяжёлых планировщиков и прерываний.

  • Порт для RP2040: адаптация интерпретатора под архитектуру и ограничения Raspberry Pi Pico, включая оптимизацию использования SRAM и флеш-памяти.
  • Связки с Pico SDK: API для работы с GPIO, UART, SPI, I2C, PWM и таймерами через обёртки, совместимые с системными вызовами Pico SDK.
  • Минимальный runtime Lua: поддержка базовых типов, таблиц, функций, метатаблиц и стандартных библиотек, сокращённых для уменьшения размеров прошивки.
  • Корутины для кооперативной многозадачности: встроенная модель многопоточности на основе coroutine, позволяющая организовать неблокирующие задачи и планирование на уровне приложения.
  • Неблокирующие I/O и тайминги: механизмы для асинхронной работы с периферией и реализации таймаутов без блокировки основного цикла исполнения.
  • Интерфейс расширения на C/C++: возможность добавления нативных модулей и функций, интегрируемых с Pico SDK для критичных по производительности операций.
  • Управление ресурсами: примитивы и рекомендации по контролю использования памяти и стеков для надёжной работы в условиях ограниченных ресурсов.
  • Отладочные возможности: базовые средства логирования и диагностики для отслеживания выполнения скриптов и состояния периферии.
  • Примеры применения: автоматизация прототипов, управление датчиками и приводами, образовательные проекты и небольшие IoT-устройства, где требуется скриптовая логика на устройстве с ограниченными ресурсами.
  • Ограничения: отсутствие полного набора стандартных Lua-библиотек и ограниченная поддержка сложных многопоточных сценариев; в ряде случаев требуются нативные расширения для достижения приемлемой производительности.
Подробнее