Из SDK для наушников восстановили полноценную прошивочную платформу Mi Band 10
В Mi Band 10 обнаружили 1.4 МБ SRAM и 4 МБ flash вместо 512 КБ и 2 МБ, описанных в близком аудио-SDK. Реверс-инжиниринг периферии BEST1503 дал собираемую платформу с UART-загрузкой, AMOLED, тачскрином и портом DOOM. Главный технический результат состоит в переносе программной базы между родственными SoC через восстановление карты памяти и аппаратных блоков.
Для браслета Xiaomi Mi Band 10 опубликована собираемая платформа разработки для SoC Bestechnic BES2700iMP / BEST1503. Проект восстанавливает почтий минимум, необходимый для запуска собственного firmware: стартовый код, линкерные сценарии, HAL, управление питанием и тактированием, доступ к памяти, LCD-контроллер, тачскрин и прошивку по UART. Публичного даташита на BEST1503 нет, поэтому исходной точкой стало дерево SDK для близкого аудиочипа BEST1306, применявшегося в TWS-устройствах.
Перенос потребовал исправить те части, где сходство кристаллов заканчивается. Автор сопоставлял штатную прошивку Mi Band 10 с кодом аудио-SDK и восстанавливал регистры часов, PMU, карту SRAM и flash, параметры LCDC и путь обработки касаний. Для загрузки используется SecondStage-артефакт из опубликованного дерева инструментов Bestechnic. Это даёт рабочую цепочку сборки и записи образа, однако штатная прошивка браслета заменяется целиком.
Одним из результатов стала уточнённая память BEST1503. Базовое дерево BEST1306 описывает 512 КБ SRAM и 2 МБ flash, тогда как в исследованном устройстве доступны около 1.4 МБ SRAM и 4 МБ flash. Такая разница определяет и адресацию, и размещение секций, и предельный размер прикладной прошивки. Ошибка на этом уровне обычно проявляется задолго до инициализации периферии: загрузчик передаёт управление в неверно размещённый код либо приложение повреждает рабочие области стека и DMA-буферы.
Дисплей Mi Band 10 построен на AMOLED-контроллере Raydium RM690B0/C0 с видимой областью около 212×520 пикселей. Ранний вариант вывода использовал однолинейный режим и RGB332, однако актуальная реализация переключена на аппаратный четырёхлинейный Quad-SPI-путь с RGB565. Такой формат удваивает расход framebuffer относительно 8-битного представления, зато упрощает вывод графики и снижает объём преобразований цвета в CPU. В демонстрационной сборке используются два RGB565-буфера примерно по 220 КБ, а частота вывода достигает около 36 FPS.
Сенсорный контроллер Hynitron CST92xx отвечает на I²C-адресе 0x5A. В текущем коде шина реализована программно на GPIO 6 и GPIO 7, линия прерывания подключена к GPIO 27. Bit-bang I²C подходит для этапа bring-up и проверки распиновки, но оставляет зависимость от задержек ядра и требует аккуратно учитывать временные параметры при дальнейшем развитии платформы.
Порт GBADoom служит нагрузочным тестом всей цепочки. Игра работает с тиком 35 Гц, читает IWAD через XIP и использует отдельную arena размером 248 КБ. После удаления аудиостека, унаследованного от SDK для наушников, и таблицы reciprocal-значений занято примерно 89% flash. Демонстрация подтверждает одновременную работоспособность памяти, XIP, дисплея и пользовательского кода; её ценность состоит в выявленных границах ресурсов компактного носимого SoC.
Проект разработан и проверен на Mi Band 10. Применимость к Mi Band 9 пока остаётся предположением. UART-прошивка имеет экспериментальный статус и способна необратимо вывести устройство из строя, поэтому восстановленная платформа остаётся инструментом аппаратного исследования, а не штатной заменой firmware.