Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!