прошу помощи у знающих. Уже больше месяца пытаюсь по мануалам заставить OPI-PC грузиться с помощью u-boot. Цель эта продиктована необходимостью доступа к некоторым параметрам загрузки, недоступным в script.bin. Хотя бы подскажите в какую сторону копать. Использую
этот образ, впрочем на ubuntu и lubuntu с оф. форума также не получилось.
собираю из
mainline (ранее пытался собрать из sunxi u-boot с тем же успехом) исходников u-boot и заливаю на sd-карту данной командой:
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdd bs=1024 seek=8
предварительно на sd-карту залит работающий образ системы, поэтому с помощью fdisk удаляю первый раздел, создаю заново с 2048 сектора
(согласно этой и этой инструкциям) с таким же размером, форматирую в fat и заливаю туда uImage и script.bin из текущего используемого образа, будь то образ от UB3GAD или с оф. сайта. Компилирую boot.cmd в boot.scr с таким содержимым:
setenv bootargs console=ttyS0,115200 noinitrd
disp.screen0_output_mode=EDID:1280x720p50 init=/init
root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
fatload mmc 0 0x43000000 script.bin
fatload mmc 0 0x48000000 uImage
bootm 0x48000000
также uEnv.txt с таким содержимым:
bootargs=console=ttyS0,115200 disp.screen0_output_mode=EDID:1024x768p50 hdmi
aload_script=fatload mmc 0 0x43000000 script.bin;
aload_kernel=fatload mmc 0 0x48000000 uImage;bootm 0x48000000;
uenvcmd=run aload_script aload_kernel
два эти файла помещаю в загрузочный FAT-раздел рядом с script.bin и uImage. Также, перед компиляцией uBoot подправил файл bootm.c в исходниках, а именно изменил константу CONFIG_SYS_BOOTM_LEN с 8 мб на, например, 12 мб, иначе при загрузке в вывод по ttl загрузка отваливается с ошибкой:
Loading Kernel Image ... Image too large: increase CONFIG_SYS_BOOTM_LEN
после всех проделанных манипуляций процесс загрузки виснет на строке
полный вывод через TTL:
U-Boot SPL 2016.03-rc2-00197-gcf23b4d-dirty (Feb 27 2016 - 19:46:05)
DRAM: 1024 MiB
Trying to boot from MMC
U-Boot 2016.03-rc2-00197-gcf23b4d-dirty (Feb 27 2016 - 19:46:05 +0200) Allwinner Technology
CPU: Allwinner H3 (SUN8I)
I2C: ready
DRAM: 1 GiB
MMC: SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: No ethernet found.
starting USB...
USB0: USB EHCI 1.00
USB1: USB OHCI 1.0
USB2: USB EHCI 1.00
USB3: USB OHCI 1.0
USB4: USB EHCI 1.00
USB5: USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 2 for devices... 1 USB Device(s) found
scanning bus 4 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
scanning bus 3 for devices... 1 USB Device(s) found
scanning bus 5 for devices... 1 USB Device(s) found
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
reading /boot.scr
306 bytes read in 17 ms (17.6 KiB/s)
## Executing script at 43100000
Unknown command 'disp.screen0_output_mode=EDID:1280x720p50' - try 'help'
Unknown command 'rootwait' - try 'help'
reading script.bin
35724 bytes read in 59 ms (590.8 KiB/s)
reading uImage
10967184 bytes read in 9391 ms (1.1 MiB/s)
## Booting kernel from Legacy Image at 48000000 ...
Image Name: Linux-3.4.39-02-lobo
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 10967120 Bytes = 10.5 MiB
Load Address: 40008000
Entry Point: 40008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
Starting kernel ...
u-boot, собранный из репозитория sunxi выдает несколько другой вывод, но конечный результат такой же
p.s. ну, вообще цель отключить вывод звука через hdmi. Прочитал где-то на оф. форуме без этого параметра не будут работать некоторые мониторы подключенные через переходник hdmi2dvi
(с hdmi2vga проблем нету), с коей проблемой я и столкнулся. Не хочу особо заострять на этом внимание, думаю, метод заставить грузиться opi с помощью свежего u-boot будет полезен сообществу в целом