Давненько обещал добраться и довести напильником свои наработки по рокчипу, да тут и как раз приехал сабжевый ТВ стик. В общем, это все оказалось очень веселым приключением. Логичным продолжением моих прошлых трип-репортов про рокчип.
Дефолтный андроед у меня вообще так и не загрузился ни разу на нем, показав только кукишь в HDMI, и был быстро и решительно выпилен в реактор. В сам девайс была воткнута 8гиговая SD карта, на которую был раскатан корень Debian Jessie, готовый к экспериментам. Ну и понеслась.
Первым делом я открыл его, запомнил партнамберы того, что внутри и впаял внутрь HC-05 блютуз модуль, чтобы можно было не возиться лишний раз с проводами, подрубая терминал.
Первым серьезным приключением был вайфай. Сначала я сделал дамп стокового ядра, и загрузил дебиан, где костыльным модулем снял дамп использованных gpio ног. На основе лога загрузки и дампа я стал корячить уже корячить ядро.
Вайфай и блютуз тут AP6210. Это такая сборка из двух чипов от бредкома (broadcom). Если кто не знает, это те самые ребятки которые играют в опенсурс с Raspberry PI а тем временем плодят дичайшие огороженные костыли во всех других разработках. В общем, чтобы заработал вайфай, нам надо прописать нужные нам ножки rfkill, и прочее в arch/arm/mach-rk3188/, после чего воткнуть бинарный огороженный модуль rkwifi.ko. Я очень много времени убил на вайфай, пытаясь понять почему он не работает. Оказалось, что rfkill для вайфая прописывается... В platform_data bluetooth'a. Почему? А в топку логику, Китай же!
Блютуз так и не ожил, несмотря ни на какие манипуляции с brcm_patchram_plus, оставил его на закуску.
В остальном все завелось сравнительно быстро, включая даже мали. С этим мне пришлось изрядно повозиться. Сначала я искал причину того, что шрифты выглядели как лютое УГ, от которого вытекали глаза пару секунд. Когда я почти отчаялся - понял что виной всему оказался встроенный в новенький 55' ящик филипс «улучшайзер» изображения «Digital Crystal Clear». Если оно отключено телевизор сам добавляет артефактов по вкусу. Пока я это искал, заодно поднял и 32х битный цвет, вместо 16ти. Это избавило от неведомых косяков с QT_GRAPHICSSYSTEM=native, из-за которых все артифачило до невозможности.
Теперь самое интересное. mali воткнулся и завелся на ура. Из нестандартного пришлось только сделать один LD_PRELOAD для одного отсутствующего символа. Шестерни (es2gears) так же на ура завращались выдавая 300 fps (не бенчмарк, да). Вот только фон у них при включенным композитинге оказался прозрачным. Как сказал мне rz2k это скорее всего отсутствующий umplock в fbturbo. Еще при этом логотип K рыжий вместо синего (наблюдается только на 32х битах, на 16ти - все ок, но артефакты Qt).
Следующий косяк - это отсутствующий в либах вызов XInitThreads(), который приводит в частности к тому, что запуск es2_info завершается ошибкой. Пропатчить сходу по методу exception13 не вышло, сделал LD_PRELOAD, но он не сработал... В общем тоже просит любви.
В итоге пока остался на kwin_gles + xrender, который оказался на удивление шустрым. C остальным еще предстоит повеселиться. Что-то подсказывает мне, что основные мои проблемы решит патч на XInitThreads() но кто этих китайцев знает...
Теперь самое вкусное. На http://github.com/linux-rockchip/rockchip-3.0 Вы найдете бранч ядра ncrmnt-muldev. Именно там можно откопать мое патченное/напиленное ядро, в котором есть поддержка сабжевого стика, а вскоре добавится и поддержка планшета Pipo M6 Pro 3g.
TODO: Увлекательное путешествие в суть umplock'а и кишки fbturbo, а так же не менее увлекательное приключение с дизассемблингом и патчингом libMali.so по методу exception13. Да и на планшет наработки надо бы перетащить, ибо уже юзабельно.
>>> Просмотр (1920x1080, 404 Kb)