Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda