VM5277: Универсальная платформа для embedded-разработки
Java-подобный язык + RTOS + кросс-платформенные драйверы для 8-битных МК
Проблемы существующих решений
Существующие решения (Arduino, MicroPython) не обеспечивают:
- Единую кодовую базу с ООП парадигмой для разных 8-битных МК.
- Готовую унифицированную поддержку RTOS и аппаратных абстракций.
Arduino и MicroPython, несмотря на популярность, имеют ограничения для кросс-платформенной разработки под 8-битные МК:
- Отсутствие единого ООП-языка
- Arduino (C++) требует ручной адаптации кода для разных архитектур (AVR vs. PIC).
- MicroPython не эффективен на 8-битных МК из-за высоких накладных расходов.
- Разрозненность RTOS и HAL
- Нет готовых API, работающих идентично на AVR/PIC/STM8.
- Аппаратные абстракции (GPIO, UART) реализуются вручную для каждого МК.
Цель работы
Создание ООП языка программирования с упрощенным синтаксисом Java
Особенности языка:
- Упрощенный Java-подобный синтаксис (без наследования, generics)
- Поддержка интерфейсов для полиморфизма
- Минимальная стандартная библиотека
Пример класса для GPIO:
class Led {
private byte pin;
public Led(byte pin) { this.pin = pin; }
public void on() { HAL.GPIO.write(pin, HIGH);}
}
Поддержка 8-бит микроконтроллеров различных производителей с единым кодом
Поддерживаемые архитектуры:
- AVR (ATmega, ATtiny)
- PIC (16/18-серии)
- STMicroelectronics (STM8)
Реализация ядер RTOS (для каждого семейства микроконтроллеров) с унифицированным API
Функционал:
- Динамическое выделение памяти
- Вытесняющая многозадачность
- Инициализация и обращение к драйверам
- Таймеры
- Блокировки
- Отладка (через Software UART)
Реализация базовых драйверов HAL, PAL
- HAL абстракция над портами и аппаратными интерфейсами
- PAL абстракция над программными интерфейсами
- Единый API для всех МК с разной реализацией
Другие ключевые функции
- Реализация драйверов верхнего уровня (ESP8266/BLUETOOTH через AT, SD card и др.)
- Поддержка многопоточности (Threading) на базе функционала RTOS
- Создание компилятора:
Исходный код → байт-код → нативная компиляция в assembler → Hex дамп прошивки
- Реализация прямой трансляции чистой функции в оптимизированный Ассемблер
Механизм отладки на базе half-duplex UART
- Универсальный бутлоадер с поддержкой отладки и обновления прошивки
- Half-duplex UART (1 пин) для команд и приёма диагностических данных
- Интеграция с LSP-сервером для работы в IDE
Преимущества решения
- Кросс-платформенность: единый протокол для всех МК (адаптация на уровне драйверов бутлоадера).
- Экономичность: не требует дорогостоящих отладчиков (достаточно USB-UART адаптера).
- Гибкость: отладка и логирование возможна даже на устройствах с ограниченным количеством выводов.
Технологический задел
Использование накопленного опыта
В проекте будут применены(и частично улучшены) решения и архитектурные подходы, отработанные в предыдущих разработках:
5277 - комплексное решение по автоматизации
5277.ru
Текущий статус разработки
Активная разработка AVR ассемблера (альфа-версия)
Реализованные компоненты:
- Лексер
- Парсер
- Семантические проверки
- Генератор HEX дампа в процессе выполнения
Разработка компилятора (альфа-версия)
Реализованные компоненты:
Начата разработка AVR RTOS
Ведется разработка базовых компонент:
- Заголовочные файлы микроконтроллеров
- Базовый файл ядра
- Работа с GPIO
Ближайшие задачи
Этап |
Задачи |
Срок |
Ядро компилятора |
- Оптимизация AST
- Генерация промежуточного кода
|
Q3 2025 |
RTOS Core |
- Планировщик задач для AVR
- Базовые драйверы HAL
|
Q4 2025 |
Кросс-платформенность |
- Поддержка PIC/STM8
- Унифицированные API
|
Q1 2026 |
Инструментальная поддержка в 2024
В виде фоновой задачи, для удобства разработки планируется реализация LSP-сервера с:
- Кросс-редакторной поддержкой:
VS Code
, Kate
и вероятно IntelliJ