Изменения

Перейти к: навигация, поиск

Archos 101

3536 байтов добавлено, 22:20, 23 февраля 2012
м
Системные форматы
* [[: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 usb,uart > /proc/omap_softreboot # перезагрузиться с устройств USB -> UART
</code-bash>
 
То есть, при записи в /proc/omap_softreboot модуль конфигурирует загрузку и сразу же перезагружает девайс. Можно указать до 4 загрузочных устройств через запятую, без пробелов. Каждое устройство может быть одним из:
 
* mmc1: Первый интерфейс MMC/SD (на Archos 101 — '''внешняя''' карта)
* mmc2: Второй интерфейс MMC/SD (на Archos 101 — '''внутренний''' флеш-диск eMMC)
* usb: Загрузка образа по USB
* uart: Загрузка образа по последовательному интерфейсу UART3 (как подключиться к нему на Archos 101 — см. выше)
 
Есть и другие варианты, но все они актуальны скорее для других устройств, нежели для нашего 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)

Навигация