IngoberWiki

Omnia sunt communia

Herramientas de usuario

Herramientas del sitio


dispositivos_ingobernables_device_tree

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
dispositivos_ingobernables_device_tree [2018/10/29 12:18]
pietre
dispositivos_ingobernables_device_tree [2018/11/03 17:57] (actual)
pietre
Línea 1: Línea 1:
-  -     **Que es el árbol de dispositivos** 
-  -     ​**Perspectiva del usuario: Iniciar con el árbol de dispositivos.** 
-  -     ​**Sintaxis y compilación del Basic Device Tree.** 
-  -     ​**Ejemplo simple de fragmento de árbol de dispositivo.** 
-  -     ​**Organización general de un árbol de dispositivos.** 
-  -     ​**Ejemplos de uso del árbol de dispositivos.** 
-  -     ​**Consideraciones generales sobre el Árbol de dispositivos en Linux.** 
- 
 En informática,​ un árbol de dispositivos (también escrito device tree) es una estructura de datos que describe los componentes de hardware de una computadora particular para que el núcleo (kernel)del sistema operativo pueda usar y administrar esos componentes,​ incluyendo la CPU o GPU, la memoria, los buses y los periféricos. En informática,​ un árbol de dispositivos (también escrito device tree) es una estructura de datos que describe los componentes de hardware de una computadora particular para que el núcleo (kernel)del sistema operativo pueda usar y administrar esos componentes,​ incluyendo la CPU o GPU, la memoria, los buses y los periféricos.
  
Línea 28: Línea 20:
 Actualmente,​ el kernel de Linux puede leer la información del árbol del dispositivo en las arquitecturas ARM, x86, Microblaze, PowerPC y Sparc. Existe interés en extender el soporte para los árboles de dispositivos a otras plataformas,​ para unificar el manejo de la descripción de la plataforma en las arquitecturas del kernel. Actualmente,​ el kernel de Linux puede leer la información del árbol del dispositivo en las arquitecturas ARM, x86, Microblaze, PowerPC y Sparc. Existe interés en extender el soporte para los árboles de dispositivos a otras plataformas,​ para unificar el manejo de la descripción de la plataforma en las arquitecturas del kernel.
  
-**Perspectiva del usuario: antes del árbol de dispositivos 
-** 
- 
-El núcleo contiene la descripción completa del hardware. 
-El gestor de arranque carga un único archivo binario, la imagen del núcleo, y lo ejecuta (uImage o zImage) 
- 
-El gestor de arranque prepara información adicional, llamada ATAGS, cuya dirección se pasa al núcleo a través del registro r2. Contiene información como el tamaño y la ubicación de la memoria, kernel 
-línea de comando,​etc. el gestor de arranque le dice al kernel en qué placa se está arrancado a través de un entero tipo máquina, pasado en el registro r1. 
- 
-Comando U-Boot: 
-  
-bootm <kernel img addr> 
- 
-Variable de Barebox: 
-bootm.image 
  
-**Perspectiva del usuario: arrancar con un árbol ​de dispositivos:​**+===Árbol ​de dispositivos: ​Resumido===
  
-El kernel ya no contiene la descripción del hardware,​este se ubica en un binario separado: el blob del árbol del dispositivo,​ El gestor ​de arranque carga dos binarios: la imagen del núcleo ​la +El árbol de dispositivos son un conjunto ​de archivos .dts .dtsi que se encuentran ​arch/​arm/​boot/​dts ​en la carpeta del código fuente del kernel ​de linux. 
-DTB La imagen I Kernel permanece uImage o zImage DTB ubicado en arch/​arm/​boot/​dts,uno por placa, El gestor de arranque pasa la dirección DTB a través ​de r2Es se supone que debe ajustar el DTB con información ​de memoria,kernel,​línea de comando, y potencialmente otra información.No más tipo de máquina.+se editan ​con un editor ​de textos simple como gedit leafpad o geany
  
-**Comando U-Boot: +Estos archivos se han de modificar para configurar un archivo concreto para tu objetivo, ya sea una tablet, un teléfono móvil, un gps o cualquier dispositivo arm que queramos hacer funcionar con Linux
-** +
-bootm <kernel img addr> - <dtb addr>+
  
-Variables de Barebox: ​+Cuando tenemos configurado el archivo o los archivos para tu objetivo hay que compilarlo,
  
-bootm.imagebootm.oftree+Yo conozco 2 opcionescompilar el árbol entero o solo un archivo
  
 +a la hora de compilar el kernel se compilar también todo el árbol con la orden dtbs
  
 +''​make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs 
 +''​
  
-El árbol ​del dispositivo aplanado es ...+Si se realiza cualquier cambio en el árbol ​después de compilar el kernel solo se tiene que invocar:
  
-El árbol de dispositivos aplanado ​(FDTes una estructura de datos. Nada mas.+''​make -j$(nprocARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs'' ​
  
-Describe una configuración de hardware de la máquina. Se deriva del formato de árbol de dispositivo utilizado por Open Firmware. El formato es expresivo y capaz de describir la mayoría de los aspectos del diseño de la placa, incluyendo: 
  
-el número y tipo de CPU+==Árbol ​de dispositivos:​ Documentación oficial==
  
-direcciones base y tamaño ​de RAM+Para poder leer la documentación oficial del árbol ​de dispositivos que se aplica en el kernel de linux puede hacerlo online ​
  
-buses y puentes+https://​www.kernel.org/​doc/​Documentation/​devicetree/​
  
-conexiones ​de dispositivos periféricos+También puede descargar el código fuente ​de linux y poder leer los archivos de documentación en la carpeta "​Documentaction/​devicetree/​bindings y así poder empezar a sentirse hacker!!  ​
  
-controladores de interrupción y conexiones de línea IRQ 
  
-multiplexación ​de pines+Podríamos identificar 3 tipos de archivos del árbol, (estas denominaciones me las estoy inventando por que no tienen conceptos asociativos validos en ingles)
  
-Al igual que las imágenes initrd, una imagen FDT puede vincularse estáticamente en el núcleo o pasarse al kernel en el momento del inicio.+dts de definición de modelo
  
-El árbol del dispositivo aplanado no es ...+dts de definición de gama
  
-no es una solución para todos los problemas del puerto ​de la placa+dtsi de definición de subarquitectura
  
-Nada eliminará todos los controladores específicos ​de la placa para placas personalizadas y complejas.+Esta separación ha sido casual o practica, no esta documentada esta practica en los manuales oficiales del árbol ​de dispositivos, ​
  
-no es una interfaz ​de firmware+**dts de definición de modelo:**
  
-Puede ser parte de una interfaz de firmware genéricapero por sí solo el árbol ​de dispositivos es solo una estructura de datos.no reemplaza ATAGS ... pero una imagen FDT se puede pasar a través ​de un ATAG.+Estos archivos hacer referencia a un modelo determinadoes decir si samsung tuviese ​el interés ​de pasar sus tablets ​linux (que utopia) tendría que hacer todo un árbol ​de dispositivos propio, los del ultimo nivel serían estos ficheros que harían referencia a un modelo exacto, con un RAM,​CPU,​NAND,​Wi-Fi concreto.
  
-no pretende ser una interfaz universal.+**dts de definición de gama**
  
-Es una estructura ​de datos útil que resuelve varios problemas, pero si el uso del mismo sigue o no depende del autor del puerto ​de la placa.+Estos archivos pueden ser dts o dtsi, y si continuamos con el mismo ejemplo de samsung estos ficheros harían referencia a una gama entera ​de la que se diferenciasen componentes como Wi-Fi ,usb y controlador de energía, pero que mantienen siempre ​el mismo tipo de procesador, ​
  
-no es un cambio invasivo+**dtsi de definición de subarquitectura**
  
-No hay requisito para utilizar el enfoque FDT en un puerto ​de la placa.+Estos ficheros compondrían los componentes ​de subarquitectura,​ por ejemplo todas las tablets samsung de 32 bits, definen los conceptos básicos del procesador, las dependencias de estos ficheros suelen ser archivos ​.c
  
-Se requiere Device Tree para el nuevo soporte de placa en la arquitectura ARM. 
  
-No es necesario convertir puertos de placa existentes.Sin necesidad de modificar el firmware existente 
dispositivos_ingobernables_device_tree.1540811887.txt.gz · Última modificación: 2018/10/29 12:18 por pietre