Об этом проекте

MOGWAI NANO — это скриптовый движок для микроконтроллеров, построенный на .NET nanoFramework. Он описан как сопутствующий рантайм, а не порт настольного движка MOGWAI, и спроектирован с учётом ограничений встраиваемых систем. Вы пишете код MOGWAI на ПК в MOGWAI NANO Studio, обнаруживаете устройства в сети и запускаете этот код удалённо на оборудовании через WiFi. Как это работает: код, написанный с использованием синтаксического сахара (if/then/else, while/do, for/do, forever do, таймеры и т. д.), десахаризуется на рабочем столе в канонический RPN перед отправкой на устройство. Устройство выполняет только эту минимальную форму — токенизатор, стек и диспетчер примитивов, что позволяет сохранить прошивку небольшой. В README указано, что канонические примитивы являются приватными и генерируются автоматически, их не следует вводить вручную. Перечисленные возможности языка и оборудования: - Арифметика, сравнения, управление потоком, пользовательские функции, ссылки, навыки и флаги, структурированная обработка ошибок (trap/guard) - GPIO, I2C, SPI, PWM, ADC и выделенный драйвер OLED-дисплея SSD1306 - Задачи для параллельного выполнения, каждая в собственном нативном потоке с изолированным экземпляром рантайма, взаимодействующие с родительским через события - Модель выполнения с ленивым парсингом и двумя настраиваемыми режимами (mogwai.frugalMode) - Многократно используемые библиотеки кода, называемые «юнитами», хранящиеся во флеш-памяти и загружаемые по требованию - Одноразовые и повторяющиеся таймеры, именованные секундомеры - События с данными, передаваемыми через MOGRecord - UDP-обнаружение и TCP-связь с обнаружением разрыва соединения - Постоянный автозапуск для автономных развёртываний Вопросы памяти обсуждаются подробно. Обычный ESP32 оставляет примерно 40 КБ свободной оперативной памяти, чего, как указано в README, достаточно для простых скриптов, но это подвержено фрагментации и сбоям выделения памяти при длительных или многосистемных нагрузках. Плата с PSRAM, такая как ESP32-S3, представлена как проверенная эталонная платформа и рекомендуется для составных проектов. Задачи описываются как затрачивающие примерно 10 КБ каждая и практичные только с PSRAM. В README отмечается, что классический ESP32/WROVER с поддержкой PSRAM в nanoFramework должен работать аналогично, но не был протестирован авторами. Таблица поддерживаемых платформ: ESP32 протестирован для небольших однозадачных скриптов; ESP32-S3 с PSRAM протестирован и рекомендован; классический ESP32/WROVER с PSRAM не тестировался; Raspberry Pi Pico W в настоящее время не поддерживается (конфигурация пинов, специфичная для ESP32, сломала сборки Pico; планируется вернуть после реструктуризации); STM32 и TI указаны как «должны работать», но не тестировались. MOGWAI NANO Studio — это настольный компаньон на основе Avalonia с собственным редактором кода, отдельными вкладками живой консоли для локального и удалённого вывода, управлением файлами и светлой/тёмной темами. Более ранняя консольная версия Studio существовала до версии 0.5 и больше не поддерживается начиная с 0.6. В релизах прилагаются прошивка устройства (MogwaiNano.bin) и самодостаточные архивы Studio для каждой платформы (win-x64, linux-x64, linux-arm64, osx-x64, osx-arm64). Краткое руководство охватывает прошивку с помощью nanoff, перезагрузку питания, развёртывание приложения, настройку WiFi через файл wifi.json и запуск первой программы, мигающей светодиодом. В README задокументированы конкретные особенности: на ESP32_REV3 требуется явный --address 0x1E0000, и это должна быть отдельная команда от --update; --masserase рекомендуется при первой прошивке; прошивка ESP32-S3 может занять несколько минут. Документация включает руководство по началу работы, справочник примитивов устройства, справочник примитивов Studio для набора команд nano.* и таблицу значений DeviceFunction для ESP32. В дорожной карте перечислены завершённые пункты, такие как I2C, SSD1306, PWM/ADC, SPI (проверено с драйвером RFID MFRC522, написанным полностью на скрипте MOGWAI NANO), проверка ESP32-S3/PSRAM, задачи, система библиотек юнитов и графический интерфейс Studio; ожидающие пункты включают поддержку двоичных/битовых операций, проверку STM32 и TI, BLE, динамическую загрузку PE и реструктуризацию в общее ядро с частями для каждой платформы. Проект лицензирован под Apache 2.0. Он благодарит Лорана Эллербаха, участника nanoFramework, за помощь, и ссылается на настольный проект MOGWAI и .NET nanoFramework.