Порт Arduboy2 для SF32LB52¶
Что такое Arduboy2-SiFli?¶
OpenSiFli/Arduboy2-SiFli — порт библиотеки Arduboy2, поддерживаемый OpenSiFli для среды разработки SiFli. Arduboy2 задаёт модель приложения для компактного игрового устройства: цикл кадров, буфер дисплея, кнопки, спрайты, текст и, при необходимости, управление звуком. Поэтому порт SiFli полезен как проверка совместимости: он позволяет оценить, какую часть игры в стиле Arduboy можно сохранить при адаптации платы, дисплея, ввода, аудио и процесса сборки для SF32.
Репозиторий содержит референсную программную реализацию, а не готовую игровую консоль или проект аппаратуры для производства. README, дерево исходного кода, примеры, история issues и файлы лицензий служат основными источниками сведений о целевой плате, поддерживаемых API, инструкциях сборки и условиях распространения. Эта страница систематизирует инженерные решения для этой реализации, но не заменяет исполняемые инструкции из репозитория.
Зачем нужен этот порт для SF32?¶
Приложение в стиле Arduboy позволяет в компактном примере проверить сразу несколько проектных решений для встраиваемого устройства: предсказуемый цикл отрисовки, небольшие монохромные или низкого разрешения ресурсы, ввод кнопками, временные характеристики аудио и ограниченный бюджет памяти. Перенос этой модели на SF32 может стать отправной точкой для портативных игр, демонстраторов интерфейса, учебных устройств и других продуктов с локальным и предсказуемым взаимодействием.
Ценность порта не в том, что любой скетч для Arduboy заработает без изменений, а в том, что он показывает границы совместимости:
- Игра может сохранить высокоуровневую логику обновления, ввода, рисования и работы с ресурсами, если она использует только поддерживаемый API Arduboy2.
- Порт должен адаптировать предположения о дисплее, кнопках, аудио, временных интервалах и хранении данных, которые были заложены в исходное оборудование.
- Любой скетч, напрямую работающий с регистрами AVR, специальными выводами Arduboy, транзакциями дисплея, таймерами или структурой EEPROM, требует осознанной адаптации и отдельного подтверждения регрессионными тестами.
Это инженерные ожидания, а не подтверждённые измерениями заявления о совместимости. Сверьте их с актуальной версией репозитория OpenSiFli и зафиксируйте результат для выбранных платы и коммита.
Результат, область применения и условия начала¶
На этой странице описан поэтапный путь от примера OpenSiFli к воспроизводимой игре или интерактивной демонстрации на SF32. Она не утверждает, что порт поддерживает все возможности Arduboy2, любые игры Arduboy или платы SF32, и не гарантирует временные характеристики дисплея и аудио производственного уровня. Страница также не предоставляет лицензий на игры, шрифты, графику и другие ресурсы из сторонних репозиториев.
Ожидаемый результат: сборка Arduboy2-SiFli с ревизией исходников, зафиксированной в системе контроля версий, которая запускает один пример из репозитория или небольшой тестовый скетч, подтверждает работу выбранных трактов дисплея, ввода и аудио и фиксирует результаты для решения о целесообразности разработки более крупной игры или адаптации продукта.
Для кого: инженеры по прошивке, аппаратуре и продукту, умеющие работать с инструментами Arduino, читать код C/C++, загружать прошивку в плату SF32, анализировать последовательный вывод и выполнять базовые измерения дисплея, ввода и питания.
Перед началом подготовьте:
- Отладочную плату SF32LB52 с вариантом ArduinoCore-Zephyr
sf32lb52_devkit_lcd_sf32lb525uc6, а также внешние периферийные устройства, описанные ниже. В README указано, что дисплей, кнопки, внешняя EEPROM и аудиотракт проверялись на оборудовании SF32LB52. Путь для RGB-светодиода описан, но результаты его тестирования не приведены. Физическая ревизия платы и точная модель OLED-модуля также не зафиксированы. - Заведомо работоспособную установку Arduino и соответствующий пакет плат OpenSiFli. Имя варианта задаёт программную конфигурацию и карту выводов, но не доказывает, что все физические версии SF32LB52-DevKit-LCD соответствуют внешней разводке проекта. Перед подключением периферии сверьтесь со схемой конкретной платы.
- Точный коммит Arduboy2-SiFli, версию ядра/пакета Arduino, ОС хоста и инструмент загрузки.
- USB-кабель с линиями данных и возможность сохранить последовательный журнал и наблюдать за дисплеем, кнопками и звуком.
- Права на использование и распространение всех игр, изображений, шрифтов и звуковых ресурсов, включённых в производную адаптацию.
| Область | Исходная конфигурация проекта | Что подтвердить до адаптации |
|---|---|---|
| Исходный код | Зафиксированный коммит OpenSiFli/Arduboy2-SiFli и ревизии его зависимостей. | Чистый checkout и воспроизводимая запись сборки. |
| Плата | SF32LB52 и вариант ArduinoCore-Zephyr sf32lb52_devkit_lcd_sf32lb525uc6 с внешней периферией, указанной ниже. |
Запишите физическую ревизию платы, подключение, источник питания и успешную загрузку; в репозитории не зафиксированы ревизия платы и модель OLED. |
| Инструменты | Arduino IDE или CLI, пакет плат OpenSiFli и документированный способ загрузки. | Версии пакетов, выбранная плата, вывод компилятора, журналы загрузки и последовательного порта. |
| Эталонное поведение | Один пример из исходного проекта или минимальный скетч, проверяющий порт. | Обновление дисплея, реакция на ввод и поддерживаемое поведение аудио наблюдаемы и воспроизводимы. |
| Изменение продукта | Одна ограниченная адаптация игры или интерфейса. | После изменения эталонный тест продолжает проходить; сведения о ресурсах и лицензиях сохранены. |
Аппаратные и программные спецификации¶
Аппаратная спецификация¶
| Компонент | Требования | Назначение | Статус | Где получить | Совместимость и варианты замены |
|---|---|---|---|---|---|
| Отладочная плата SF32LB52 | Вариант ArduinoCore-Zephyr sf32lb52_devkit_lcd_sf32lb525uc6; в репозитории не зафиксирована физическая ревизия платы |
Запускает порт и предоставляет назначенные выводы MCU | Обязательно | Исходники Arduboy2-SiFli; вариант ArduinoCore-zephyr | Указан программный вариант платы и карта выводов, а не проверенная физическая сборка; до подключения сверьте фактическую ревизию и схему |
| Монохромный OLED-дисплей | 128 × 64 пикселя, подключение по SPI1; точная модель модуля и контроллера в репозитории не указана | Отображает кадровый буфер игры | Обязательно | Исходники Arduboy2-SiFli | Внешнее устройство. До использования проверьте контроллер, напряжение, разъём, ориентацию и временные параметры по документации модуля и платы |
| Шесть игровых кнопок | Совместимые с Arduboy входы, активный низкий уровень с подтяжкой вверх; карта выводов приведена в репозитории | Считывают направления и кнопки A/B | Обязательно | Исходники Arduboy2-SiFli | Кнопки внешние; сверьте назначенные Arduino IO с конкретной платой и зафиксируйте подключение и устранение дребезга |
| Внешняя EEPROM | AT24C02 или AT24C32 по I2C1, адрес 0x50 |
Поддерживает функции библиотеки, использующие EEPROM | Необязательно; требуется только для функций, использующих EEPROM | Исходники Arduboy2-SiFli | Проверьте микросхему, напряжение, подтяжки и разводку шины; конфигурация с установленной EEPROM в репозитории не задана |
| Аудиовыход и RGB-индикатор | Поддерживаемые аудиомодули (backends) используют назначенные выходы динамика; внешним RGB-светодиодом с общим катодом управляет программный PWM | Дополнительный звук и цветовая индикация | Необязательно; выбирается для проверяемого скетча | Исходники Arduboy2-SiFli | В исходниках не приведён полный перечень компонентов (BOM) для динамика и светодиода; проверьте внешнюю схему, выводы, ток и аудиоповедение |
| Хост и USB-подключение для передачи данных | Хост, поддерживаемый выбранной средой Arduino; кабель с линиями данных и доступ к журналам последовательного порта | Сборка, загрузка и наблюдение за эталонной работой | Обязательно | ArduinoCore-zephyr | Запишите ОС хоста, кабель/порт, версии пакетов и способ восстановления; кабеля только для зарядки недостаточно |
Программная спецификация¶
| Пакет или сервис | Требуемая версия или ревизия | Назначение | Статус | Где получить | Совместимость и обновление |
|---|---|---|---|---|---|
| OpenSiFli/Arduboy2-SiFli | Выберите и зафиксируйте коммит; статья не задаёт конкретную ревизию | Слой совместимости SF32 и примеры | Обязательно | Репозиторий | Повторно проверьте целевую плату, зависимости и поддерживаемые API для выбранного коммита |
| OpenSiFli/ArduinoCore-zephyr и пакет платы | Определите и запишите совместимый с портом коммит/версию пакета | Среда Arduino, описание платы, компилятор и интеграция загрузки | Обязательно | Репозиторий | Не заменяйте core или пакет платы на более новый без чистой сборки и регрессионной проверки периферии |
| Тестовый скетч и игровые ресурсы | Один пример из репозитория либо отдельно лицензированный тестовый скетч; зафиксируйте ревизии и лицензии ресурсов | Проверяет выбранный API и продуктовый сценарий | Выберите один вариант | Примеры Arduboy2-SiFli | Статья не предоставляет права на распространение сторонних игр, шрифтов, изображений и звуков |
Выбор поддерживаемой базовой конфигурации¶
Начните с сочетания платы и ПО, указанного в репозитории OpenSiFli, а не выбирайте похожую плату из каталога продуктов. Пакет платы, подключение дисплея, карта ввода, способ загрузки и предположения библиотеки входят в исходную конфигурацию.
В репозитории Arduboy2-SiFli нет отдельного файла с картой выводов платы: подробная таблица опубликована в README в разделе SiFli IO mapping. Логические определения выводов библиотеки находятся в pins_sifli.h, а разводка для конкретной платы задаётся в Devicetree overlay проекта ArduinoCore-Zephyr. Эти источники описывают программную исходную конфигурацию, а не проверенную физическую сборку. Перед подключением сверьте фактическую ревизию платы и её схему.
| Элемент конфигурации | Где проверить | Не следует предполагать, что |
|---|---|---|
| Целевая плата | Вариант ArduinoCore-Zephyr sf32lb52_devkit_lcd_sf32lb525uc6, указанный в README Arduboy2-SiFli, затем схема физической платы. |
Программный вариант подтверждает совместимость всех физических ревизий платы и конфигураций периферии. |
| Ядро Arduino | Пакет и ревизия OpenSiFli, указанные для целевой платы. | Последний пакет взаимозаменяем с ревизией, использованной в репозитории. |
| Дисплей и ввод | Определения выводов/конфигурации в репозитории и схема физической платы. | Геометрия исходного дисплея Arduboy, полярность кнопок и имена выводов совпадают с платой SF32. |
| Аудио | Поддерживаемый в репозитории аудиовыход и конфигурация конкретной платы. | Наличие API для тонов доказывает готовность временных характеристик динамика, громкости и питания для продукта. |
| Загрузка и восстановление | Документированный процесс Arduino или sftool для выбранной платы. |
Успешная загрузка с одного компьютера подтверждает наличие восстанавливаемого пути обновления в эксплуатации. |
В репозитории указаны программный вариант платы и карта выводов периферии; также сообщается, что дисплей, кнопки, внешняя EEPROM и аудиотракт проверялись на оборудовании SF32LB52. Путь для внешнего RGB-светодиода описан, но результаты его тестирования не приведены. Физическая ревизия платы, точная модель/контроллер OLED-модуля и полный комплект аксессуаров не указаны. Перед подключением или заявлением о воспроизводимости аппаратной конфигурации сверьте карту выводов варианта со схемой конкретной платы и запишите использованные компоненты и ревизии. Не заполняйте пробелы данными о выводах или адресах из другого проекта SF32.
Этапы проекта¶
Используйте этапы как точки принятия решений, а не как перечень функций.
| Этап | Какое решение помогает принять | Что должно быть получено |
|---|---|---|
| 1. Неизменённый пример | Удаётся ли собрать, загрузить и запустить документированный порт на выбранной базе? | Заведомо работоспособный скетч, записи коммита/пакета, журнал загрузки и наблюдаемое поведение. |
| 2. Проверка периферии | Предсказуемо ли работают дисплей, ввод, аудио, сброс и временные характеристики на реальной плате? | Запись испытаний периферии, включая отказы и восстановление. |
| 3. Воспроизводимая база исходников | Сможет ли другой инженер собрать тот же образ из чистого checkout? | Артефакт чистой сборки, сведения о среде и повторный результат. |
| 4. Контролируемая адаптация игры | Можно ли внести ограниченное изменение в игру или интерфейс, не нарушив работу порта? | Проверенное изменение, сведения о ресурсах/лицензиях и результат регрессии. |
| 5. Оценка готовности продукта | Достаточно ли надёжен пример, чтобы оправдать собственную аппаратуру или дальнейшие вложения в ПО? | Реестр рисков с ответственными, доказательствами, мерами снижения риска и решением продолжить, отложить или остановить работу. |
Архитектура системы и зависимости¶
flowchart LR
G["Игровой скетч\nобновление, ввод, отрисовка, ресурсы"] --> A["Arduboy2-SiFli\nслой совместимости"]
A --> C["Ядро Arduino\nпакет платы и среда выполнения"]
C --> S["SiFli-SDK / SF32\nGPIO, дисплей, таймеры, хранилище, аудио"]
S --> H["Выбранная плата SF32\nдисплей, кнопки, динамик, USB"]
A --> R["Эталонные тесты\nпоследовательный журнал и визуальная проверка"]
Это модель для принятия решений, а не утверждение, что в репозитории используются именно такие имена внутренних модулей. Прежде чем менять порт, проверьте фактические границы в исходном коде. Ключевые области проектирования продукта:
- Кадры и временные характеристики: игровой цикл должен обновлять и выводить кадры с повторяемой частотой; аудио и ввод, чувствительные к временным параметрам, необходимо измерить на целевой плате.
- Дисплей: слой совместимости должен сопоставить буфер и геометрию игры с выбранными контроллером дисплея, форматом пикселя, ориентацией и способом обновления.
- Ввод: имена и полярность кнопок, подавление дребезга, одновременные нажатия и поведение при пробуждении/сбросе следует проверить по разводке платы.
- Аудио: генерацию тонов, использование таймера, подключение динамика, громкость и отключение звука следует считать особенностями конкретной платы до проверки.
- Ресурсы и хранение: после компоновки выбранной игры необходимо измерить шрифты, спрайты, звуковые данные, размещение во флеш-памяти и использование RAM.
- Восстановление: перед экспериментами с временными параметрами, памятью или низким энергопотреблением сохраните проверенный способ загрузки прошивки и восстановления.
Основные области отказа — совместимость приложения/API, конфигурация дисплея, подключение ввода, работа аудио/таймеров, память и размещение ресурсов, загрузка и восстановление. Не следует сводить отказ в любой из этих областей к формулировке «порт не работает».
Этап 1 — Зафиксируйте неизменённый пример¶
Цель: проверить работоспособность базы, описанной в репозитории, прежде чем менять библиотеку или игру.
- Прочитайте инструкции репозитория, запишите основную ветку или выпуск, изучите примеры, конфигурацию платы, зависимости и файлы лицензий.
- Установите точные версии ядра/пакета Arduino и инструментов, требуемые репозиторием. Запишите ОС хоста и версии инструментов.
- Соберите и загрузите самый простой документированный пример или тестовый скетч.
- Сохраните последовательный вывод и запишите, что отображается на дисплее, как реагируют кнопки и есть ли звук в примере.
Что сохранить: коммит репозитория, версии зависимостей и пакетов, ревизию платы, сведения о подключении или схеме, результат сборки, журналы загрузки и последовательного порта, краткое описание поведения.
Критерий выхода из контрольной точки 1: исходный пример собирается и загружается на выбранную плату, а описанное поведение повторяется после сброса или цикла питания.
Этап 2 — Проверьте периферию и временные характеристики¶
Цель: отличить успешную компиляцию от базовой конфигурации, пригодной для игрового устройства.
- Проверьте очистку дисплея, обновление полного кадра, вывод спрайта или bitmap, работу с текстом и предположения примера о геометрии/ориентации.
- Проверьте все используемые проектом входы: отпускание и одновременное нажатие кнопок, быстрые нажатия, а также пробуждение или сброс, если применимо.
- Если используется аудио, проверьте запуск/остановку тона, взаимодействие с таймерами, отключение звука и влияние активности дисплея и ввода на аудиотракт.
- Прервите штатную работу сбросом, отключением/подключением кабеля и недопустимой или неполной последовательностью ввода. Запишите, возвращается ли плата в рабочее состояние для загрузки и запуска.
Что сохранить: визуальные результаты или снимки экрана, матрицу ввода, наблюдения за временными параметрами и аудио, журнал сбросов/восстановления, а также измерения тока и задержки, влияющие на решение по продукту.
Критерий выхода из контрольной точки 2: выбранный путь работы с периферией достаточно понятен, чтобы отличать ошибки приложения от проблем конфигурации платы, таймингов или питания.
Этап 3 — Создайте воспроизводимую базу исходников¶
Цель: обеспечить воспроизводимость порта без привязки к одной машине разработчика или готовому бинарному файлу.
- Начните с чистого checkout и инициализируйте все зависимости репозитория.
- Запишите пакет платы, версии Arduino IDE/CLI, компилятора и инструментов, файлы конфигурации и созданные ресурсы.
- Выполните сборку в чистом каталоге, сохраните образ и доступные сведения map/size, а также команду или вывод инструмента загрузки.
- Повторите сборку на второй машине или после удаления каталога сборки.
Что сохранить: ревизии исходников и зависимостей, сведения о хосте и инструментах, журнал сборки, бинарный файл или другой артефакт, отчёт о размере, журналы загрузки и последовательного порта.
Критерий выхода из контрольной точки 3: чистый checkout воспроизводит образ, проходящий проверки периферии этапа 2, без недокументированных локальных файлов и ручных правок.
Этап 4 — Осознанно адаптируйте одну игру¶
Цель: проверить границы совместимости одним контролируемым изменением продукта.
Начните с небольшого скетч или игры с понятными требованиями к дисплею, вводу, аудио и ресурсам. Сохраните исходный образ примера и меняйте только один тип поведения за раз:
| Тип изменения | С чего начать | Необходимая регрессионная проверка |
|---|---|---|
| Фирменный стиль и интерфейс | Экран заголовка, шрифт, спрайт, палитра или расположение элементов. | Сборка, загрузка, обновление кадров, ввод и проверка целостности ресурсов. |
| Логика игры | Одно ограниченное правило, уровень или переход состояния. | Повторяемая последовательность ввода, сброс, сохранение очков/состояния при наличии и временные параметры кадров. |
| Аудио | Один тон или короткий эффект через поддерживаемый путь. | Запуск/остановка, отключение звука, взаимодействие с таймером и работа под нагрузкой дисплея/ввода. |
| Хранение | Небольшое изменение сохранения или загрузки ресурсов. | Отчёт о размере, поведение при потере питания, обработка повреждения и восстановление. |
| Адаптация платы | Осознанное изменение назначения выводов дисплея, кнопок или динамика. | Подтверждение по схеме/выводам, полная регрессия периферии и возврат к эталонному образу. |
Не переносите в проект SF32 доступ к регистрам AVR, предположения о выводах исходной Arduboy или адреса хранения без инженерного решения, подтверждённого источниками. Храните лицензии сторонних игр и ресурсов рядом с адаптированным кодом; удаляйте всё, условия распространения чего неясны.
Что сохранить: проверенный diff, происхождение ресурсов, изображения до и после, журналы сборки и загрузки, результаты регрессии и образ для отката.
Критерий выхода из контрольной точки 4: адаптированная игра проходит эталонные проверки периферии; ограничения по памяти, временным параметрам, восстановлению и лицензированию записаны.
Этап 5 — Оцените готовность продукта¶
Не переходите от демонстрации порта к собственной аппаратуре или полевым испытаниям, пока команда не ответит на вопросы:
- Для каких точных моделей платы SF32, дисплея, кнопок, динамика и источника питания подтверждена работа, а что пока остаётся предположением?
- Какие частота кадров, задержка ввода, поведение аудио, время запуска и профиль тока измерены на предполагаемой базе продукта?
- Сколько flash и RAM потребляют игра, ресурсы, шрифты и среда выполнения, включая максимальный объём контента?
- Что происходит после сброса, просадки питания, его потери во время сохранения, повреждения ресурсов, неудачной загрузки прошивки или незавершённого обновления?
- Кто поддерживает разные части порта: команда продукта, OpenSiFli, SiFli или исходное сообщество Arduboy2?
- Совместимы ли лицензии всех игр, шрифтов, изображений, звуков и библиотек с предполагаемой моделью распространения?
Критерий выхода из контрольной точки 5: для оставшихся рисков назначены ответственные и собраны доказательства; для каждого риска определена мера снижения, явно согласовано отложенное решение либо принято решение остановить работу.
Передача материалов для проектирования изделия¶
Перенесите в раздел «Аппаратная часть» выбранную модель SF32, архитектуру дисплея и ввода, план аудио и таймеров, размещение флеш-памяти и ресурсов, результаты измерений энергопотребления, способ восстановления и исходные допущения для производственных испытаний. Если требования игры к дисплею, памяти, типу корпуса, питанию или подключению меняют список подходящих устройств, воспользуйтесь подбором компонентов SF32. Для подготовки программной среды начните с руководства по началу работы с Arduino, затем изучите обзор платформы Arduino.
Пример выполнил свою задачу по развитию продукта, когда другой инженер может повторно собрать порт, воспроизвести результаты проверки периферии, объяснить каждую адаптацию под конкретную плату и изучить доказательства до утверждения собственной платы или расширенной библиотеки игр.
Основные источники¶
- OpenSiFli/Arduboy2-SiFli
- MLXXXp/Arduboy2
- OpenSiFli/ArduinoCore-zephyr
- Начало работы с Arduino на SF32
- Обзор платформы Arduino
- Подбор компонентов SF32
Последнее обновление: