LINUX.ORG.RU
ФорумTalks

RK3188: Продолжение треша и ада

 ,


0

3

Доброго вечера мои любители треша, ада и эмбеддеда. В прошлой серии триллера я рассказывал о первых впечатлениях от рокчиповской кухни. Теперь, пожалуй продолжу повествование большим количеством треша и ада. На данном этапе даже я уже не уверен, что у меня получится довести дело до конца.

Бут. Тут они без сомнения финалисты. С горем пополам, матом, экспериментами и болтовней в #rockchip-linux удалось понять, что мой пад грузит ядро из boot в андройдовском image формате, подписанным rkcrc. Дальше написание паковщика и скриптов для прошива было делом 5 минут.

Как и ожидалось, для нанда забубенен FTL, который превращает их нанд в блок девайс, и делает балансировку нагрузки. Но вместо написания отдельного кривого блочного устройства, как это сделали содомиты из sunxi, рокчиповцы пошли дальше - контузили немного mtd подсистему и впихнули wear-leveling в свой standalone mtd device и монтируют в итоге /dev/mtdblockX как ext4.

Что самое неприятное, их огороженный загрузчик, который они не дают даже своим клиентам под NDA в BSP работает поверх этого же самого FTL, потому выпилить его из ядра ради нормального ubifs чревато тем, что нельзя будет потом загрузиться.

Меня долго удивляло - зачем у них включен FIQ дебаггер на последовательном порту, а консолька висит на ttyFIQ0. Оказывается консоль на их драйвере последовательного порта не работает, потому это «официальный» (tm) способ подцепить консоль на уарте. Поздравляю, первое место в номинации костыль года.

В msdos_partition.c у них воткнут какой-то странный их дебаг, который радостно сообщает о том, что на карточке MBR таблица разделов. Страшно подумать зачем они это делали.

Много спагетти в arch/arm/mach-rk3188, нетривиально инклюдятся сырцы из arch/arm/mach-rk30 и arch/arm/mach-rk29. Ядро вообще минное поле. Один неправильный конфиг - и оно упадет не при компайл-тайме, так в рантайме.

Экранчик - честная ипадовская ретина, которая сидит через anx6345 преобразователь на их lcdc0 (или 1?) интерфейсе. Из anx6345 к экрану торчит DisplayPort.

В общем, пока взлетели (детектятся и загружаются дрова): акселерометр (gs_lis3dh), компас (ak8975), гироскоп (l3g4200d_gryo), USB и 3г модем (MT6229) на одном из внутренних портов, оба SDIO порта (в одном карта с дебианом whezy, в другом сидит wifi), rtc (rtc_hym8563), подсветка экрана (pwm выход на одной из ног рокчипа), тачскрин(ct36x), cpufreq степпинг, и ddr_freq степпинг (хотя частоты/напряжения надо будет докрутить немного, чтобы получить заявленные 1.8Ghz, сейчас потолок 1.6Ghz. Да и память тоже может работать быстрее явно)

Не взлетело: anx6345 (детектиться по i2c на стоке, на моем ядре по этому адресу отсутствует. WTF? Подозреваю надо хитро врубать питание) и соответственно LCD панелька.

Напряжение логики VCC_IO для LCDC (1,8 или 3,3 вольта) задается параметром Kconfig для каждого LCDC интерфейса. Дефолт в BSP - 3,3 вольта. (Не загружайте дефолт на других падах посоны, попалите панель!!!!)

Не дошли руки врубить/затестить: WiFi, BT, GPS, звук, mali, спящий режим

Скорее всего забью: HDMI (нафиг нужен). Соответственно дебиан уже стартанул, потихоньку привожу систему в порядок:

Debian GNU/Linux 7 arvale ttyFIQ0

arvale login: root
Password: 
Linux arvale 3.0.36+ #28 SMP PREEMPT Thu Nov 21 22:37:06 MSK 2013 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@arvale:~# uname -a
Linux arvale 3.0.36+ #28 SMP PREEMPT Thu Nov 21 22:37:06 MSK 2013 armv7l GNU/Linux
root@arvale:~# cat /proc/cpuinfo 
Processor       : ARMv7 Processor rev 0 (v7l)
processor       : 0
BogoMIPS        : 1631.46

processor       : 1
BogoMIPS        : 1631.46

processor       : 2
BogoMIPS        : 1631.46

processor       : 3
BogoMIPS        : 1631.46

Features        : swp half thumb fastmult vfp edsp neon vfpv3 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc09
CPU revision    : 0

Hardware        : PipoMaxM6
Revision        : 0000
Serial          : 0000000000000000
root@arvale:~# 

★★★★★

Ответ на: комментарий от devl547

Для одноплатки есть всякие MK902/UG902. Они меньше. Тут именно хочется завести экран и мали. Кстати да, можно выкинуть если что все остальное достать экран и будет 9'7 DisplayPort монитор с ретиной на 2048х1536.

ncrmnt ★★★★★ ()

Вот именно для подобных вещей ЛОРу и нужен раздел блогов. Я думаю, было бы интересно листать отдельных личностей.

observer ★★★ ()

Слежу за обновлениями.

Очень интересное дело делаете, слежу за новостями.

Camel ★★★★★ ()

Я тоже некоторое время пересборкой Андроидных фирмварей занимаюсь, из двух твоих рассказов не понял, а что и зачем ты, собственно, делаешь, что так глубоко приходится раскапывать? Поясни ещё пожалуйста по wear leveling, как должно быть?

iamsoaw ()
Ответ на: комментарий от iamsoaw

Я туды дебиан вместо андроеда ставить собираюсь. Попутно поражаюсь на костыли.

Поясни ещё пожалуйста по wear leveling, как должно быть?

RTFM: http://www.linux-mtd.infradead.org/

По сути, у них сырой NAND. Они костылями прибивают FTL туда, где он не должен быть вместо того, чтобы ипользовать штатную подсистему ядра (ubi). и рассчитанную на это файловую систему (ubifs). ext4 поверх любого FTL, который прячет специфику нанда существенно сократит срок жизни нанда.

ncrmnt ★★★★★ ()
Ответ на: комментарий от ncrmnt

Понятно. Там, скорее всего, просто в цене дело. Дешевые чипы с дешевыми китайцами на кодинге и т.д. Взяли что было до них оттестировано, кое-как прикрутили и всё.

iamsoaw ()

Молоток! Завидую твоим знаниям.

athost ★★★★★ ()

Дальше написание паковщика и скриптов для прошива было делом 5 минут

уже все давно написано - abootimg и afptool на гитхабе лежат

Что самое неприятное, их огороженный загрузчик, который они не дают даже своим клиентам под NDA в BSP работает поверх этого же самого FTL, потому выпилить его из ядра ради нормального ubifs чревато тем, что нельзя будет потом загрузиться.

а как ты вообще собрался ядро пересобирать? китайцы его с config.gz собрали? или просто работаешь с дефолтным rk31** конфигом?

vvviperrr ★★★★★ ()
Ответ на: комментарий от vvviperrr

уже все давно написано - abootimg и afptool на гитхабе лежат

Неправильно выразился. Скорее собрать конвеер из имеющихся тулов. Я обошелся mkbootimg (с рокчиповскими хаками), rkcrc и rkflashtool.

а как ты вообще собрался ядро пересобирать?

молча

китайцы его с config.gz собрали? или просто работаешь с дефолтным rk31** конфигом?

Нет. За основу взял rk30box конфиг, и по результатам дампинга gpio, i2c и dmesg'а стока восстановил конфиг.

ncrmnt ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.