Как uboot передает информацию об оборудовании в ядро ​​без использования DTS

Я новичок в разработке встроенного Linux. Я должен портировать uboot и пользовательский дистрибутив Linux на новую плату на базе ARM.

У используемого нами загрузчика (2009.08) нет папок Arch и DTS. Я полагаю, что это более старая версия, в которой не используется DTS для передачи информации об оборудовании в ядро ​​(v 3.0). Я много читал о DTS, но в Интернете недостаточно информации об этом (устаревшем?) Способе передачи аппаратной информации от uboot к ядру, которое мы используем. Интернет говорит мне, что для этой задачи есть файлы C, как в uboot, так и в исходном коде ядра, которые нужно синхронизировать, но может ли кто-нибудь указать мне в этом направлении? Также, пожалуйста, исправьте меня, если мои предположения неверны, и попросите дополнительную информацию, если это необходимо.

1 ответ

Решение

(Старый) метод передачи данных между U-Boot и ядром Linux ARM называется списком памяти ATAG. Такая информация, как используемые области памяти, тип машины и информация о плате, передается из U-Boot в ядро ​​Linux ARM с использованием этого списка данных.

В U-Boot встроены ATAG lib_arm/armlinux.c (1.1.5) или lib_arm/bootm.c (2009.08) или arch/arm/lib/bootm.c (2015.04) и требуют параметры конфигурации CONFIG_SETUP_MEMORY_TAGS и существенные значения CONFIG_xxx_TAG.
Затем ATAG обрабатываются Linux в arch/arm/kernel/setup.c,

Для документации см. Раздел 8 этого или этого альтернативного сайта.

добавление

Также см. Слайд № 4 этой презентации о загрузке before-Device_Tree

Другие вопросы по тегам