Аппаратная часть
Микроконтроллер, карта памяти, матрица кнопок, дисплей и USB-подсистема.
Плата
Устройство AJAZZ AKP153R, маркировка процессора ARX2902 Q2303. Приложение собирается для ARMv7-M в режиме Thumb без аппаратных операций с плавающей точкой.
USB работает через опрос контроллера MUSB. Прерывания в текущей реализации отключены. Функция board_service() обслуживает watchdog, клавиши и USB, в том числе во время ожидания дисплея.
Карта памяти приложения
Эти диапазоны задают контракт сборки. Это не измерение полной физической ёмкости процессора. Загрузчик расположен вне области приложения, и образ его не включает.
Таблица векторов содержит 80 записей, занимает 320 байт и начинается с базы приложения. Проверка ELF контролирует Thumb-адреса обработчиков, непересечение загрузочных сегментов, границы flash и RAM. Линкер отдельно проверяет отсутствие пересечения BSS и стека.
Клавиши
Матрица 3 × 5 сканируется с независимым подавлением дребезга 8 мс. В битовой карте HID бит row × 5 + column соответствует физической кнопке, начиная с верхней левой. Нажатие устанавливает бит, отпускание сбрасывает его. Удержание передаётся сохранением установленного бита, а жесты определяет хост.
Пауза переключения строк задаётся ограниченным числом инструкций. Функция platform_delay_ms() использует программную задержку относительно частоты ядра и не является калиброванным таймером. Для времени протокола и дребезга используется timebase.
Дисплей
Нативная геометрия панели 480 × 854. Физическая ориентация связана с нативными координатами формулой x = v, y = 853 - u, где u направлено вправо на устройстве, а v вниз.
Окна кнопок имеют размер 103 × 103 пикселя. Боковая область в нативных координатах начинается с x = 35, y = 10 и имеет размер 406 × 85. Полная карта находится в layout.json.
Штатный режим вывода использует DMA, глубину очереди на пути CPU равную 2 и цвет RGB565. Промежуточные буферы по 1440 байт каждый, выравнивание 4. При тайм-ауте DMA драйвер прекращает передачу и переходит на путь через CPU до следующего перезапуска.
Начальные последовательности регистров, порядок volatile-доступов и коэффициенты задержек сохраняются при рефакторинге. Изменение этих параметров требует проверки на плате.
Память SDRAM
Заставка использует canvas 0x600000, игра рисует кадр в 0x400000 и копирует результат в canvas заставки. До передачи экрана приложению эти области зарезервированы: 0x400000..0x52C3FF и 0x600000..0x72C3FF. Размеры учитывают RGB888, а в обычном режиме используется RGB565. Кадры не хранятся в RAM микроконтроллера.