В чем разница между деревом устройств и ATAG? Кроме того, являются ли ATAG обязательными и ожидает ли ядро их по фиксированному адресу или ожидает ли он их в r0-r3?ARM Linux Atags против дерева устройств
ответ
В дереве устройств описывается все аппаратное обеспечение, используемое ядром для выбора драйверов для загрузки, где все интерфейсы MMIO и т. Д. Во время выполнения. ATAG просто описывают такие вещи, как поиск параметров initrd и ядра, памяти и т. Д. - все остальное о машине жестко закодировано в ядре.
Предпочтительным способом является использование деревьев устройств вместо ATAG. Одним из преимуществ является тот факт, что добавление новой платформы не всегда требует добавления в ядро нового кода.
Чтобы ответить на ваш второй вопрос, если бы вы прочитали документацию для booting Linux on the ARM platform, вы обнаружите, что ядро ожидает, что следующее будет помещен в регистры перед управление передается ядру:
r0 = 0,
r1 = machine type number discovered in (3) above.
r2 = physical address of tagged list in system RAM, or
physical address of device tree block (dtb) in system RAM
Я считаю, что есть (или, по крайней мере, был) вариант загрузки ATAG из фиксированного местоположения вместо адреса, найденного в r2. Однако использование ATAG теперь устарело и устарело, а новые платформы не должны его использовать.
В основном, для отправки информации в ядро linux информация о конкретной машине на компьютере, как память, информация о консоли и т. Д., Были использованы ATAG. Эти ATAG были использованы ядром linux для инициализации MMU и другой подсистемы.
Но с появлением дерева устройств (более того, использование его с помощью руки, потому что оно уже привыкло к архитектуре powerpc.), Теперь вся информация, связанная с машиной, может быть передана с использованием FDT (tree tree blob).
Было высказано несколько идей, связанных с отправкой информации о дереве устройств в ядро с использованием нового atag «atag_dtd», но позже возникла дискуссия о том, что вообще не использовать ATAG, потому что не нужно было использовать два метода seprate для создания одного вещь. Итак, теперь ядро ожидает, что загрузчик предоставит следующую информацию.
r0 = 0
r1 = Same type of SOC fdt machine id.
r2 = physical address where the dtd can be found.
Он использует ту же структуру, что использовал загрузчик для отправки информации atag, поэтому он может быть совместим с backword.
Надеюсь, это поможет.
- 1. генерация дерева устройств для встроенного linux
- 2. Идентификация наложения дерева устройств
- 3. Как разные драйверы дерева устройств Linux имеют общие регистры?
- 4. Понимание механизма дерева устройств
- 5. Дерево устройств Linux (AD5628)
- 6. ARM __clear_cache эквивалент для устройств iOS
- 7. Как ядро linux получает данные из дерева устройств?
- 8. Создайте модуль ядра Linux из исходного дерева
- 9. segfault на ARM/Linux
- 10. ARM Development на Linux
- 11. ARM Embedded Linux ToolChain
- 12. Stacktrace arm-linux-gcc
- 13. Base против мобильных устройств
- 14. Как программировать файлы дерева устройств .dts?
- 15. Привет, драйвер устройства на основе дерева устройств на основе дерева
- 16. Как сопоставить ресурсы двух устройств в одном драйвере ядра Linux с использованием дерева устройств?
- 17. ARM R0 регистрирует значение при переходе от U-boot к ядру
- 18. оверлей дерева устройств: номера фрагментов
- 19. GPIO pin Обработчики прерываний в linux (arm)
- 20. Основы драйверов устройств Linux
- 21. Изменение дерева устройств для Beaglebone Black
- 22. Trie против дерева суффикса против суффикса
- 23. Arm Linux sshd-telnetd Kernel Oops Tracking
- 24. Ядро Linux 3.10 для ARM
- 25. Параметры компилятора arm-linux-gnueabi
- 26. ARM linux: адресное пространство процесса
- 27. CONFIG_DEBUG_PAGEALLOC на ядре ARM Linux?
- 28. встроенный Linux-адрес загрузки ARM
- 29. Queue Library in ARM Linux
- 30. Mongodump on Arch Linux ARM