2014-01-09 3 views

ответ

12

В дереве устройств описывается все аппаратное обеспечение, используемое ядром для выбора драйверов для загрузки, где все интерфейсы 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 теперь устарело и устарело, а новые платформы не должны его использовать.

3

В основном, для отправки информации в ядро ​​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.

Надеюсь, это поможет.

Смежные вопросы