Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

159
Visualizações
ARM Linux Atags vs árbol de dispositivos

¿Cuál es la diferencia entre el árbol de dispositivos y los ATAG? Además, ¿los ATAG son obligatorios y el kernel los espera en una dirección fija, o los espera en r0-r3?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Un árbol de dispositivos describe todo sobre el hardware que utiliza el núcleo para seleccionar qué controladores cargar, dónde están todas las interfaces MMIO, etc... en tiempo de ejecución. Los ATAG simplemente describen cosas como dónde encontrar un initrd y los parámetros del kernel, la memoria, etc. - todo lo demás sobre la máquina está codificado en el kernel.

El método preferido ahora es usar árboles de dispositivos en lugar de ATAG. Una de las ventajas incluye el hecho de que agregar una nueva plataforma no siempre requiere agregar código nuevo al kernel.

Para responder a su segunda pregunta, si leyó la documentación para iniciar Linux en la plataforma ARM , encontraría que el kernel espera que se coloque lo siguiente en los registros antes de que se entregue el control al kernel:

 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

Creo que hay (o al menos había) una opción para cargar ATAG desde una ubicación fija en lugar de la dirección que se encuentra en r2. Sin embargo, el uso de ATAG ahora está en desuso y obsoleto y las nuevas plataformas no deberían usarlo.

over 4 years ago · Santiago Trujillo Relatório

0

Básicamente, los ATAG se usaron para enviar información al kernel de Linux sobre la información específica de la máquina de la placa, como la memoria, la información de la consola, etc., y el kernel de Linux usó estos ATAG para inicializar la MMU y otros subsistemas.

Pero con la llegada del árbol de dispositivos (más de usarlo con arm porque ya se estaba usando en la arquitectura powerpc), ahora toda la información relacionada con la máquina se puede pasar usando FDT (device tree blob).

Surgieron algunas ideas para enviar información del árbol de dispositivos al kernel usando una nueva etiqueta "atag_dtd", pero luego hubo un debate sobre no usar ATAG en absoluto porque no había necesidad de usar dos métodos separados para hacer una sola cosa. Así que ahora el kernel espera que un cargador de arranque proporcione la siguiente información.

 r0 = 0 r1 = Same type of SOC fdt machine id. r2 = physical address where the dtd can be found.

Utiliza la misma estructura que usó el cargador de arranque para enviar información de una etiqueta para que pueda ser compatible con versiones anteriores.

Espero eso ayude.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda