LINUX.ORG.RU

u-boot, LOADADDR и магические числа

 , ,


0

1

Собираю Ubuntu-14.04 для Mele A2000G (телеприставка на ARM'е). По инструкциям sunxi собрал ядро, загрузчик, debootstrap'нул файловую систему, но собрать всё воедино не получается.

Попробовал оттолкнуться от того что имею, взял готовый рабочий образ SD'шки с Ubuntu-12.10, посмотрел тамошний boot.scr. И вот теперь сижу и думаю, что же всё это значит.

Во-первых, что это за параметр такой LOADADDR, который нужно установить при сборке ядра? И в какое значение? sunxi его вообще не указывают, в интернете обычно встречается

LOADADDR=0x40008000 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

Далее. sunxi пишут такой boot.cmd:

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
fatload mmc 0 0x43000000 script.bin || ext2load mmc 0 0x43000000 boot/script.bin
fatload mmc 0 0x48000000 uImage || ext2load mmc 0 0x48000000 uImage boot/uImage
bootm 0x48000000
А в интернетах встречается другой:
ext2load mmc 0 0x46000000 uImage
ext2load mmc 0 0x49000000 sun4i-a10-a1000.dtb
env set fdt_high ffffffff
bootm 0x46000000 - 0x49000000 

Что это за числа после mmc 0 и bootm? Почему они различаются и какие они должны быть?

Я пробовал положить ядро linux-sunxi/experimental/3.10 и его модули в образ Ubuntu-12.10, но ОС не загрузилась. Возможно не только загрузчик неправильно настроил, но ещё и некоторые параметры ядра надо было включить. Однаков вопрос с магическими числами остаётся открытым.

★★★★★

Про LOADADDR так сразу не вспомню, но вроде он не для ядра, а для uBoot (точнее, uImage).

Что это за числа после mmc 0 и bootm?

Ну, параметры fatload и bootm точно есть в документации (ЕМНИП, для fatload - это адрес, куда загружаются данные; для bootm - адреса, где лежат образ запускаемого ядра, initrd, FDT).

Почему они различаются и какие они должны быть?

В сущности, любые - лишь бы не перекрывались и соответствовали адресам, для которых собирается uBoot.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)

что это за параметр такой LOADADDR

Думаю, это просто адрес в памяти, куда u-boot загрузится. Вроде любой можно указывать.

Что это за числа после mmc 0 и bootm?

Аналогично. Я на tegra 2 разные ставил - все грузилось.

Extraterrestrial ★★★★★ ()

sunxi-3.14

tailgunner, Extraterrestrial, спасибо за ответы. Пока попробую собрать linux-sunxi-3.14 (где-то встречал информацию, что то ли у 3.4, то ли у 3.10 были проблемы), кроме того включу опции которые советовали в Google Groups.

Скажите, что нужно сделать чтобы заменить ядро в образе SD'шки Ubuntu-12.10? Достаточно ли

  • подмонтировать загрузочный раздел и заменить там uImage
  • подмонтировать основной раздел, заменить там /lib/modules

Или нужно шаманить что-то с пересборкой и переустановкой загрузчика?

Camel ★★★★★ ()
Последнее исправление: Camel (всего исправлений: 1)
Ответ на: sunxi-3.14 от Camel

Судя по скриптам загрузки - да, хватит просто заменить образы на SD. Но они должны быть собраны для тех же адресов.

tailgunner ★★★★★ ()

Смотри. ext2load читает файл с fs и кладет его в физ. память по адресу такому-то.

mmc - тип девайса 0 - использовать 0й ммс 0x46000000 - адрес куда положить. Похрен какой, лишь бы было там достатчно места, uImage сам себя куда надо релоцирует. тоже самое для dtb

bootm 0x46000000 - 0x49000000 - загрузить образ валяющийся по 0x46000000 адресу, initrd у нас нет, вместо адреса initrd прочерк, dtb по адресу 0x49000000

ncrmnt ★★★★★ ()
Ответ на: комментарий от tailgunner

ЧЯДНТ?

Судя по скриптам загрузки - да, хватит просто заменить образы на SD. Но они должны быть собраны для тех же адресов.

Успех пока достигнут лишь частично. Ubuntu-12.10 успешно обновился до Ubuntu-14.04 простой заменой quantal на trusty в sources.list с последующим apt-get dist-upgrade. Вот только ядро осталось старое.

Сборка свежего ядра и подмена его в загрузочном образе пока к успеху не привела. Диагностику осложняет отсутствие не только USB-TTL преобразователя для подключения консоли, но даже монитора. Буду копать дальше.

Camel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.