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/04/17 01:33]
pietre
dispositivos_ingobernables_device_tree [2018/11/03 17:57] (actual)
pietre
Línea 1: Línea 1:
-  *  Que es el árbol de dispositivos +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.
-  +
-  *  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 ​devicetree) 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 CPU, la memoria, los buses y los periféricos.+
  
 La razón principal para la existencia de Device Tree en Linux es proporcionar una forma de describir el hardware no detectable. Esta información fue previamente codificada en código fuente. La razón principal para la existencia de Device Tree en Linux es proporcionar una forma de describir el hardware no detectable. Esta información fue previamente codificada en código fuente.
Línea 24: Línea 10:
 La especificación Devicetree está actualmente gestionada por una comunidad llamada devicetree.org,​ que está asociada, entre otros, a Linaro y Arm. La especificación Devicetree está actualmente gestionada por una comunidad llamada devicetree.org,​ que está asociada, entre otros, a Linaro y Arm.
  
-Formatos de árbol de dispositivos+**Formatos de árbol de dispositivos**
  
 Un árbol de dispositivos puede contener cualquier tipo de datos, ya que internamente es un árbol de nodos y propiedades con nombre. Los nodos contienen propiedades y nodos secundarios,​ mientras que las propiedades son pares nombre-valor. Un árbol de dispositivos puede contener cualquier tipo de datos, ya que internamente es un árbol de nodos y propiedades con nombre. Los nodos contienen propiedades y nodos secundarios,​ mientras que las propiedades son pares nombre-valor.
Línea 34: 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+===Árbol de dispositivos:​ Resumido=== 
-El gestor ​de arranque carga un único ​archivo ​binario, la imagen ​del núcleo, ​lo ejecuta ​(uImage o zImage)+ 
 +El árbol de dispositivos son un conjunto de archivos .dts y .dtsi que se encuentran arch/​arm/​boot/​dts en la carpeta ​del código fuente del kernel de linux
 +se editan con un editor ​de textos simple como gedit leafpad o geany,  
 + 
 +Estos archivos se han de modificar para configurar ​un archivo ​concreto para tu objetivoya sea una tablet, un teléfono móvil, un gps o cualquier dispositivo arm que queramos hacer funcionar con Linux 
 + 
 +Cuando tenemos configurado el archivo o los archivos para tu objetivo hay que compilarlo,​ 
 + 
 +Yo conozco 2 opciones, compilar 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  
 +''​ 
 + 
 +Si se realiza cualquier cambio en el árbol después de compilar el kernel solo se tiene que invocar: 
 + 
 +''​make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs''​  
 + 
 + 
 +==Árbol de dispositivos:​ Documentación oficial== 
 + 
 +Para poder leer la documentación oficial ​del árbol de dispositivos que se aplica en el kernel de linux puede hacerlo online  
 + 
 +https://​www.kernel.org/​doc/​Documentation/​devicetree/​ 
 + 
 +También puede descargar el código fuente de linux poder leer los archivos de documentación en la carpeta "​Documentaction/​devicetree/​bindings y así poder empezar a sentirse hacker!! ​  
 + 
 + 
 +Podríamos identificar 3 tipos de archivos del árbol, ​(estas denominaciones me las estoy inventando por que no tienen conceptos asociativos validos en ingles) 
 + 
 +dts de definición de modelo 
 + 
 +dts de definición de gama 
 + 
 +dtsi de definición de subarquitectura
  
-El gestor de arranque prepara información adicionalllamada 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 memoriakernel +Esta separación ha sido casual o practicano esta documentada esta practica en los manuales oficiales ​del árbol ​de dispositivos
-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: +**dts de definición de modelo:**
-  +
-bootm <kernel img addr>+
  
-Variable ​de Barebox: +Estos archivos hacer referencia a un modelo determinado,​ es decir si samsung tuviese el interés ​de pasar sus tablets a 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.
-bootm.image+
  
-Perspectiva del usuario: arrancar con un árbol ​de dispositivos+**dts de definición de gama**
  
-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 y la +Estos archivos pueden ser dts o dtsiy 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íapero que mantienen siempre el mismo tipo de procesador, ​
-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 r2. Es se supone que debe ajustar el DTB con información de memoria,kernel,​línea ​de comandoy potencialmente otra información.No más tipo de máquina.+
  
-Comando U-Boot:+**dtsi de definición de subarquitectura**
  
-bootm <kernel img addr> - <dtb addr>+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
  
-Variables de Barebox: ​ 
  
-bootm.image,​ bootm.oftree 
dispositivos_ingobernables_device_tree.1523921598.txt.gz · Última modificación: 2018/04/17 01:33 por pietre