GNU/Linux и устройство на Rockchip 2. Хабрахабр. Сначала немного предыстории.
Категория: e-books flash. Программа Rockchip RK28 Device Manager версии 1.27 для прошивки цифровых плееров. Заголовок сообщения: Замена процессора эл.книги. Вопрос к знатокам: Электронная книга на чипе RockChip RK2738. Так вот, внутри стоит процессор Rockchip RK2738 с ядром ARM9, работающим на частоте 400 МГц, и видеоускорителем. Установка драйвера RockChip USB. Данный драйвер понадобится вам для перепрошивки ANDROID TV BOX при помощи утилиты RockChip BatchTool.
Небольшое продолжение истории с медиаплеером GV2. B, описанным мной ранее ту/т. Напомню, что изначально бокс покупался не как Android приставка к телевизору, а как более мощная замена Raspberry Pi, на который я оставил заявку ещё в апреле, но приедет который только в августе. А GV2. B оказался у меня в руках через 8 дней после заказа, всего за $1. Raspberry Pi с зарядкой, шнурами и корпусом).
Это уникальная особенность Allwinner A1. SD карты, а не встроенного флеша. Я начал активнее работать над вопросом, и наткнулся аж на три способа прошить что- либо во флеш память устройства, что обнадёживает и, возможно открывает лазейку для заливки туда полноценного GNU/Linux.
Самонадеянно замечу, что это уже следующий шаг за банальным запуском чуть допиленного образа с SD карты. Цель. — Установить на устройство ядро Linux. Желательно самое новое. Либо самое новое из тех, которое содержит все драйвера, специфические для устройства.
Процессор: Rockchip 2738. Оперативная CPU: RockChip RK2738 Нашел SDK: Я так понимаю это типа драйвер подсветки LCD. К теме Опознание NoName устройств была присоединена тема eBook reader RockChip RK2729 SDK / Sago DFE7001 китайский девайс.
Поставить GNU. — Поставить окружение рабочего стола. Сделать резервную копию, чтобы устройство можно было вернуть в изначальное состояние, если что пойдёт не так. Хорошенько повеселиться со сложной задачей (сравнимо с установкой первых версий USB загрузчиков на Wii и прохождению Net. Hack или Dwarf Fortress).
Rockchip — семейство интегрированных контроллеров класса система на кристалле, на это, MMU в этих микроконтроллерах отсутствует ( присутствует в RK2738 (http:// rockchip.fr/ RK2738 %20datasheet%20V1.0.pdf, стр.
Средства. Устройство GV- 2. B от неизвестного китайского производителя, на базе Rockchip 2. RK2. 9) (CPU ARM Cortex A8 1. ГГц + GPU Vivante GC8. МГц), с 4. ГБ флеш памяти, 5.
МБ оперативной памяти и неплохим количеством разьёмов. Топик содержит много практики и совсем немного теории, лишь самое необходимое, чтобы понять о чём идёт речь и что происходит (признаюсь честно, мне и самому теории в описанных областях явно не хватает). С академической точки зрения тянет на трёхчасовую лабораторную работу. Также хочу сказать, что впервые занимаюсь всем этим, если исключить подключение диска с предварительно установленным на настольком компьютере Ubuntu к PC1. Выбор устройства. В модельном ряду G около двадцати разных устройств, на разных процессорах, с разным количеством разъёмов, но примерно одинакового функционала.
Поначалу я убивался по поводу того, что не взял устройство на Allwinner A1. Rockchip ситуация не намного хуже. Был вариант заказать устройство того же модельного ряда, но уже с Cortex A9, а именно Am.
Logic 8. 72. 6- M, но каких- то чрезвычаных преимуществ перед Rockchip 2. Am. Logic, всё тоже печально.
- Купил себе китайскую читалку eBook reader RockChip RK2729 SDK / Sago.
- Инструкция по прошивке с помощью RockChip Batch Tools. Если у вас уже установлен драйвер можете пропустить.
Методы. Итак, было найдено три способа обновить прошивку устройства (содержание той самой 4хгигабайтной флеш памяти). Первый — от производителя, использующего одну из OEM моделей линейки GV, не cработал, да оно и хорошо, потому что их прошивка предназначается для немного другого устройства, к которого три USB порта, и разница между ними настолько серьёзна, что обычно прошивка оборачивается превращением устройства в кирпич. Остались два. Второй, от хакера с Android.
Forums, заключается в том, что нужно наживать на дополнительную, вторую кнопку reset, находящуюся внутри коробки, удерживая её держать кнопку включения в течение нескольких секунд. Этот способ открыл интересные особенности, а именно меню Android system recovery utility v. Reboot system now— Factory reset— SYSTEM recover— Update from SDCARD— Update from u.
Disk— Factory test. К огромному сожалению, клавиатура, будучи подключенной к устройству, и отлично работающая уже после загрузки Android, на меню system recovery никакого воздействия не оказывала, а из трёх имеющихся на плате кнопок (power, reset, ещё reset) на меню действовала толко одна — первый reset, который то ли приводил он к выбору активного по умолчанию пункта Reboot system now, а то ли и просто работал по прямому назначению.
Остальные кнопки курсор, к сожалению, не двигали. Способ заключался именно в том, чтобы залить прошивку с карты памяти SD, что никак и не получалось. Отформатировав SD карту в fat. Dropbox'е?) скачанный апдейт для Android'а. При нормальной загрузке Android ругался на то, что на SD карте находится неправильный update.
Но заливать его я всё равно не спешил, ведь резервные копии делают не только трусы, а на форумах зачастую соощалось, что заливка того или иного update. Третий сынспособ оказался ближе к тому, что я собирался сделать. Заключался он в подключении устройства к компьютеру с помощью USB шнура. Поначалу очень смущало то, что в режиме system recovery устройство никак не определялось с компьютера, несмотря на то, что все нужные провода я подключал куда надо (и даже куда не надо, направляя встречное питание 4. В и 5. 0. 8В по USB, что по счастью не обернулось никакими последствиями). Как позже выяснилось, так и должно быть, ибо протокол у них там свой, и разница с подключением внешних носителей существенна. Под Windows обнаружилась программа Rockchip Flasher tool, которую язык никак не поворачивается назвать замечательной, потому что сделана она ужасно и единственное, что умеет делать — это прошивать новые update.
Но мне нужно было не только прошить, но и скачать имеющуюся, на случай того, если вдруг что- то пойдёт не так, поэтому от творчества китайских программистов пришлось отказаться. С ножками, кстати, нужно быть осторожнее. Резервное копирование. Хочется сохранить всё, что хранится во флеш памяти для возможности восстановления всего к изначальному варианту, если что пойдёт не так. Для этого существует несолько разных методов. Titanium Backup. Android приложение, с помощью которого можно сделать снимок системных разделов и скопировать его на SD карту. Всё бы хорошо, но устройство для этого необходимо рутировать (получить административные привилении).
Для того, чтобы рутировать устройство на Android 2. Universal Androot уже не подходит, и его автор предлагает на выбор воспользоваться Unrevoked, который подходит только для телефонов HTC, или Super. One. Click, который вроде бы всем хорош, но для того, чтобы зарутировать устройство требует его подключения шнуром к компьютеру с Windows.
Всё бы и неплохо, но он скачивает прошивку, добавляет туда какие- то файлы и заливает обратно. Менять прошивку для того, чтобы сделать её резервную копию — это маразм. Оставалось воспользоватся Android Debug Bridge из Android SDK, которая не факт что заработала бы с этим конкретным устройством, и тянущая за собой немалое количество зависимостей, которых мне совсем не хотелось. Ко всему прочему собирать всё это нужно было из исходников (читай AUR для Arch Linux).
Уже было взгрустнув, я вдруг обнаружил замечательную утилиту RK2. USB, и чуть менее хитрый файл с таблицей разделов. Запуск. Оказалось не так просто. Оказывается, устройство должно быть не в system recovery режиме, а в выключенном состоянии, но обязательно с подключенным питанием.
Проблема в том, что оно пытается включиться, как только чуствует, что поключено по USB. Но с этим можно совладать. Удерживая обе кнопки reset 5 секунд, отпускаю сначала вненшюю, а через 3 секунды и внутреннюю. Запускаю и стараюсь быть терпеливым.
Если покопаться на форумах и в исходниках RK2. Все описанные устройства это таблетки, и подключать их к компьютеру для обновления несколько проще (учитывая встроенный порт micro. USB, он же USB OTG).
Вот так выглядит файл parameter: FIRMWARE. Пропущен обязательный раздел, в котором собственно хранится сама таблица разделов. Попробую расшифровать. Размер считанного блока parameter — 0x. RK2. 9kitchen), это 5. Получается что размер условного блока это 2.
Что занимает память между 0x. МБ — загадка. parameter (таблица разделов)2. КБmisc. 4МБkernel. МБboot. 4МБrecovery. МБsystem. 25. 6МБbackup. МБcache. 11. 6МБuserdata.
МБkpanic. 4МБuserвсё оставшееся место. Препарация. Теперь у меня в руках набор img файлов, образов диска, которые я скачал. Интересно, что внутри. Из ранее полученных знаний мне известно, что для записи файлов, не предназначающихся для изменения (как то ядро ОС) на флеш память делают в формате cramfs, но некоторые особо хитрые китайцы умудряются то добавлять к этим образам ещё заголовки и подвалы, то использовать gzip, видимо, пытаясь затруднить чтение своих и создание собственных образов. Именно это чудо, прозванное в народе crapfs, я и увидел: $ sudo mount - t cramfs Image/boot. Мне попался тот самый случай, когда файлы пакуются gzip'ом, а потом к ним добавляется нелепый заголовок и подвал, в которых находится CRC и, наверное, ещё что- то.
Дальше — интереснее: $ mkdir myboot. Собирать это дело в обратном порядке нужно ещё аккуратнее, нужно сбросить даты на файлах: $ find . По сравнению с более ходовым tar, cpio имеет ряд преимуществ, углубляться в которые я в этом топике не хочу. И вот, у меня на руках собраный своими руками customboot. С kernel. img такая препарация не проходит. А вот что вышло с system. В папке app нашлись Android'овские APK файлы (архив исполняемого файла).
То есть можно туда добавить какие- нибудь новые программы или удалить те, которые есть, включая какой- нибудь назойливый и надоевший. В bin можно добавить su и busybox, что как я понимаю, достаточно для рутирования устройства. В etc поменять конфигурацию. На практике придётся несколько повозиться с тем, что в примонтированный образ cramfs просто так записать ничего не получится.
Ну, кое- что препарировать удалось. Новый образ. Было бы, конечно, здорово попробовать загрузиться с SD карты, загрузив туда заботливо приготовленный кем- нибудь образ, но такой возможности у RK2. Уповаю на то, что есть резервная копия. Образы, препарированные в предыдущем параграфе, все были в разных форматах, а именно: boot. Отсюда предположу, что танцы с бубном предстоят только с этим boot. Освежу память, напишу какие разделы нужны для установки Linux./ Корневой раздел. Содержит важную папку /boot, содержащую в себе образ ядра.
Но для простоты можно держать её и в корневом разделе. Другая важная папка, /home, содержит пользовательские данные, и неплохо выделить для неё отдельный раздел. Swap, нужен для виртуальной памяти для устройств с менее, чем 1.
ГБ памяти, однако использовать под это дело встроенную флеш- память с ограниченным циклом чтения- записи как минимум неразумно, лучше потом подцепить для этих целей внешнюю SD карту. Версия ядра 2. 6 опечалила.