Изменения

Archos 101

3986 байтов добавлено, 22:23, 23 февраля 2012
м
Тестирование загрузки с других устройств
[[Файл:Archos-101-internet-tablet lg.jpg|200px|right]] [http://market.yandex.ru/model.xml?hid=6427100&modelid=6531601 Archos 101] — туалетный девайс на Андроиде от компании Archos, старшая модель 8-го поколения их «интернет-планшетов» (gen8 — это все модели 28/32/35/43/70/101). Заказывал с [http://www.computeruniverse.de computeruniverse.de].
Краткое резюме: говно, причём тивоизированное говно. Хотя это лечится — и штатно , через SDE, с потерей гарантии, и нештатно , эксплойтами, без потери гарантии… Загрузчики Archos 101 и вообще gen8 (а я подозреваю, что они такие же и у следующего поколения gen9) мною успешно взломаны. '''См [[#PWNED]].'''
== Плюсы ==
* Процессор TI OMAP 3630. Хорошо тем, что TI, потому что они предоставляют спеки, в отличие от анального Qualcomm’а со своими Snapdragon’ами.
Со всем этим Archos, правда, опоздал где-то так на полгодика, потому что когда они таки выпустили эти планшеты, уже проснулись и другие производители, и у многих тоже появился USB-HOST (а экран был , при экране, изначально лучше лучшем, чем у архоса — см. ниже хард-минусы).
== Минусы ==
* Камера ОТВРАТИТЕЛЬНАЯ — как на мобильниках 5-летней давности.
* Не заряжается по USB. Хотя это и следствие большой батарейки — она двумя амперами-то по-моему часа 4 заряжается, страшно представить, что было бы по USB. Но ''возможность'' зарядки по USB всё равно можно было предусмотреть.
* Маловато оперативки(256 Мб). Из-за этого девайс бывает не очень шустрый, хотя игрушки идут хорошо, HD видео девайс вполне показывает, и в Quadrant’е успешно получает 1247 попугаев!
* Нет ни 3G, ни GPS.
В общем-то хард-минусы всё и убивают, потому что с софт-минусами можно что-нибудь поделать кастомными прошивками. Сейчас вроде-бы уже есть более новые Archos gen9, которые, типа, поприличнее, но в руках не держал — и не горю желанием, потому что сильно лучшего качества экрана не жду. Да и весит Archos 101 G9 почти в два раза больше.
Однако, вот и софтовые минусы:
* [[:File:Archos 70 UART.jpg|Выводы UART на Archos 70]]
* [[:File:Archos 101 sys boot.jpg|Выводы конфигурации загрузки на Archos 101]]; чтобы поменять порядок загрузки на внешние интерфейсы (USB → UART → внешняя SD-карта → внутренняя SD-карта), нужно подать высокий уровень на sys_boot5 (1.8V через 33 кОм резистор).
 
== Тестирование загрузки с других устройств ==
 
Конфигурация загрузки Archos 101, имеющего процессор OMAP3630, задаётся 5-ю аппаратными выводами sys_boot[0:4]. Однако, у OMAP есть дополнительная фича — программная конфигурация загрузки. Если в специальную область памяти («scratchpad») записать специальную структуру, описанную в мануале, и потом дёрнуть программный reset (сброс) — процессор предпочтёт записанную конфигурацию аппаратной. Таким образом, ничего не перепаивая, можно заставить его инициировать процесс загрузки с любых возможных устройств, включая загрузку по USB или UART, а также загрузку с внешней карты памяти SD. Правда, с последней есть проблема — при включении питание на неё не подаётся, поэтому с неё так просто загрузиться не получится. Кроме того, (пока что) нет подходящего загрузика — точнее, есть U-Boot, но под него нет подходящей конфигурации. В целом, учитывая наличие исходников ядра, ничто не мешает её написать, но это должен кто-то сделать :)
 
А вот модуль для программного конфигурирования порядка загрузки я уже написал! Брать тут: [[Media:Omap softreboot.tar.bz2]] (56 Кб). В архиве исходники и модуль, собранный для Archos’овского ядра 2.6.29-omap1.
 
Использовать так:
 
<code-bash>
insmod omap_softreboot.ko
cat /proc/omap_softreboot # посмотреть справку
echo uart,usb > /proc/omap_softreboot # перезагрузиться с UART, потом USB
</code-bash>
 
То есть, при записи в /proc/omap_softreboot модуль конфигурирует загрузку и сразу же перезагружает девайс. Можно указать до 4 загрузочных устройств через запятую, без пробелов. Каждое устройство может быть одним из:
 
* mmc1: Первый интерфейс MMC/SD (на Archos 101 — '''внешняя''' карта)
* mmc2: Второй интерфейс MMC/SD (на Archos 101 — '''внутренний''' флеш-диск eMMC)
* usb: Загрузка образа по USB
* uart: Загрузка образа по последовательному интерфейсу UART3 (как подключиться к нему на Archos 101 — см. выше)
 
Для удалённой загрузки по USB указывайте <tt><nowiki>"uart,usb"</nowiki></tt>, потому что просто <tt><nowiki>"usb"</nowiki></tt> как-то приводит процессор в замешательство и USB-устройство не появляется.
 
Есть и другие варианты, но все они актуальны скорее для других устройств, нежели для нашего Archos’а:
 
* nand: NAND-флешка
* onenand: OneNAND/Flex-OneNAND
* doc: DiskOnChip
* xip: NOR-флешка
* xip_wait: NOR-флешка с «wait monitoring»
 
Приятного хакинга :)
== Системные форматы ==
** 4 bytes size (0xbee8 on Archos 101)
** 4 bytes loading address (0x40200800)
** CODE...CODE…
* 50 MB rawfs partition with kernels
* 128 MB system partition
* sections:
** 1 block section header
*** 4 byte magic number: 66 72 61 77 = "fraw"«fraw»
*** 2 byte checksum, unused and zeroed
*** 2 reserved bytes
*** 4 byte access mode
*** 484 zero bytes
** (size from superblock entry) blocks - blocks — section data
Rawfs layout — designed to fit into 32MB partition with first stage bootloader (256 KB):
</tab>
Rawfs по умолчанию не даёт ничего записывать, но в конфиге ядра есть CONFIG_RAWFS_FS_DISABLE_WRITEPROT — CONFIG_RAWFS_FS_DISABLE_WRITEPROT — если сие включить, то по идее должна разрешить.
Код вторичного загрузчика («avboot») говорит нам о том, что по идее эта фиговина может загружаться не только с rawfs-раздела, а также с обычного FAT (FAT16?), но проверять я это не рискну, если не сделаю себе «UnBrickable» аппаратный мод, позволяющий загрузиться откуда-нибудь ещё, а не только с внутренней флешки.
Magic numbers of archos signature block:
* f0 89 e5 da — da — kernel+initramfs* 5a 4d 66 58 («ZMfX»)  — secondary stage bootloader* d5 84 c2 d3 — d3 — / filesystem (androidmerged.squashfs.secure)
Format of rawfs partitions with kernel/initramfs:
** magic number: f0 89 e5 da
** 4 byte size of signature in bits (0x400 = 00 04 00 00 on «init» kernel, 0 = 00 00 00 00 on «custom» kernel).
** digital signature — signature — 0x80 bytes = 0x400 bits. Zeroed on «custom» kernel.
** 00 00 00 00
** 4 byte full size of image (header+kernel+initramfs)