@danilus
Неуверенный пользователь linux :D

Где найти информацию по конфигурации uboot?

Я нуб в конфигурации uboot прошивках и т.д. В моих блужданиях по интернету я нашел не слишком подробную или информацию для слишком знающих людей.

1. Хочу узнать как сконфигурировать uboot или хотя бы модернизировать defconfig
2. Хочу разобраться как запустить линукс на плате от сборки загрузчика.
3. Для более подробного погружения хочу понять как сконфигурировать загрузчик для условно неизвестной ноунейм платы (хотя на самом деле известной). Для экспериментов у меня имеется планшет на allwiner a10, и orange pi zero 2.
4. Во время блужданий по интернету наткнулся на такое понятие как "devicetree" или dts файл, как я понял это он отвечает за железо платы и хотелось бы разобраться в этом поподробнее.

П.С. Планирую прикупить ttl переходник для отладки.
П.П.С. Я еще не определился чем хочу заниматься в жизни, возможно пойду учится в этом направлении в целом, прошу сильно не пинать :D
  • Вопрос задан
  • 238 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
У меня был некоторый опыт с uboot, правда для другой ОС

Если у вас какая-то стандартная покупная плата, то возможно в uboot уже есть готовый config. Обычно производители плат в документации указывают как собрать uboot под их плату (если они поддерживают uboot), либо это можно нагуглить в интернете.
Если же плата самодельная, то берете самый близкий для вашей платы config (вы же брали за основу какой-то референс дизайн платы, вот эту плату и берите за основу), переименовываете его и вносите в него соответствующие изменения.
Бывает, что вместе с config'ом требуется вносить изменения и в dts, они в uboot лежат в ./arch/<platform name>/dts. Название используемых dts лежит в переменной CONFIG_DEFAULT_DEVICE_TREE и/или в CONFIG_OF_LIST в config файле.

Config файл - это просто набор параметров, которые превращаются в набор инструкций #define при сборке.
С dts все сложнее. Там целый язык описания железа.

Для сборки uboot рекомендую следующую последовательность:
1. Заведите для сборки отдельный пустой каталог. Он будет текущим каталогом для всех дальнейших команд
2. Пусть каталог где лежит сам uboot хранится в переменной UBOOT_DIR. Архитектура процессора вашей платы (например arm) в переменной ARCH. Префикс для кросскомпилятора в CROSS (например arm-linux-gnueabihf-). Имя выбранного defconfig файла в переменной DEFCONFIG (имя указываете вместе с суффиксом _defconfig)
3. Очистка каталога сборки:
make -C $UBOOT_DIR ARCH=$ARCH CROSS_COMPILE=$CROSS distclean

Эта команда пригодится при пересборках в случае изменения конфигурации
4. Подготовка конфигурации для сборки:
make -C $UBOOT_DIR ARCH=$ARCH CROSS_COMPILE=$CROSS $DEFCONFIG

5. Сборка: make -C $UBOOT_DIR ARCH=$ARCH CROSS_COMPILE=$CROSS

Несколько полезняшек:
1. Вы можете задавать дополнительную опцию для make: -O <путь>
Она задает каталог, в котором будет происходить сборка. Этот каталог make создаст сама. Это бывает удобно, если работаете сразу с несколькими конфигами.
2. В uboot встроен конфигуратор конфигов :) Конфигурация происходит в текстовом режиме с помощью меню, присутствуют подсказки для опций и т.п. Когда вы создали начальную конфигурацию в п.4 выдайте команду:
make -C $UBOOT_DIR ARCH=$ARCH CROSS_COMPILE=$CROSS menuconfig

Тут то же можно добавлять опцию -O для выбора каталога с конфигурацией. После исправления конфигурации, не забудьте ее сохранить.
Дальше нужно дать команду:
make -C $UBOOT_DIR ARCH=$ARCH CROSS_COMPILE=$CROSS savedefconfig

Она создаст на основе текущей конфигурации defconfig файл в каталоге сборки. Этот файл можно переименовать в <имя платы>_defconfig и подложить в каталог с конфигами uboot и в дальнейшем использоавть его для сборки.
3. В каталоге с uboot дайте комаду make help для получения списка возможных опций.
4. Обычно я собираю uboot под линукс, но та же схема вполне работает и в WSL под виндой. Набор кросс-компиляторов есть в портах (в WSL исопльзовал дистрибутив ubuntu).

Желаю удачи!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
Сначала, неплохо бы научиться гуглить в яндексе ))
первая же ссылка по вашему вопросу

619c42c15ee13470573224.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы