Приветствую! Решил попробывать загрузить линукс (для начала Ubuntu с ядром для ARM архитектуры) на своем планшете-китайце на базе процессора AllWinner A10. Так вот, согласно документу:
A10 boot overview
A10 is a quite 'closed chip'. There is a brom in the chip, which can not be modified. This brom will load program from external storage(nand, mmc), which is called boot0 in allwinner. Brom will check the header of boot0, and get hardware information from boot0. The hardware information is in a config file called sys_config.fex. A pc tools will read the config file, and write the hardware information to the head of boot0. After boot0 is booted up, it will continue to load another loader boot1, boot1 init all other hardware and provides hardware abstracts and services. According to the boot OS, boot1 loads an arm elf program, boot.axf. For booting linux, boot.axf loads the u-boot and jumps to the u-boot. Then u-boot will take over.
So, the whole boot process is: brom -> boot0 -> boot1 -> boot.axf -> u-boot -> kernel
BROM Brom in A10 is at the address 0xFFFF0000, After power up, arm core will fetch the first instruction at 0xFFFF0000 and execute it. The brom code contains two parts, one is the normal boot, the other is a block of code called FEL, which is mainly a USB communication program with host pc. Steps of brom boot: 1. Check the status of one pin (the bsp pin), if the pin is low, jump to FEL, waiting host command through usb, usually communicate with a pc tool livesuite to update the firmware in nand flash. This pin can be accessible by a button marked as Recovery or RECV on tablets. 2. Load 4k data from sdcard slot 0 beginning at offset 8k to the internal sram, check if the data has a magic string, if so, it's a boot0 head. Get boot0 size from the boot0 head, and load the whole boot0. If the checksum of boot0 is ok, will jump to boot0. Any of above is wrong, will jump to FEL. 3. Similar to 2, load boot0 from nand flash. First load the first page of nand flash, check the magic string, get the boot0 size, load the whole boot0, and jump to boot0. 4. Almost the same as step 2, except that boot0 is loaded from sdcard slot 2.
Т.е, согласно документу, загрузка начинается с BROM (подобие BIOS) который проверяет носители в таком порядке: 1. SDCard на 1 слоте 2. EEPROM (NAND) Flash 3. SDCard на втором слоте Где раньше будет «замечен» загрузчик boot0, оттуда и начнется загрузка. Но возиться с boot0 … u-boot мне не пришлось. Хотя, надо бы тоже разобраться, но потом). Так вот, есть уже готовые линукс-дистрибутивовы распространяемые в виде образа для SD карточки установленным загрузчиком. Просто, достаточно скопировать этот образ на диске.
#dd if=linux-image.img of=/dev/sd[x]
Образ скачивал с форума, посвященного микрокомпьютеру на данном процессоре. После записи, не удалось запустить, или удалось, но дисплей не работал. Хотя, я думаю вряд ли, потому что работала бы подсветка.
Образы брал с данного топика: https://www.miniand.com/forums/forums/2/topics/1
Собственно, кто может что посоветовать?