IngoberWiki

Omnia sunt communia

Herramientas de usuario

Herramientas del sitio


dispositivos_ingobernables_device_tree

¡Esta es una revisión vieja del documento!


Árbol de dispositivos

Esta página describe cómo escribir un árbol de dispositivos para una nueva máquina. Se pretende proporcionar una visión general de los conceptos de árbol de dispositivos y cómo se utilizan para describir una máquina.

Para obtener una descripción técnica completa del formato del árbol de dispositivos, consulte la especificación ePAPR v1.1. La especificación de ePAPR cubre con mucho más detalle que los temas básicos cubiertos en esta página, consúltelo su en caso de necesitar mas información que no esté cubierto por esta página. El ePAPR está siendo actualizado con un nuevo nombre de Device tree Specification Documentation.

  1. Formato de datos básico
  2. Conceptos básicos
  3. Máquina de ejemplo
    1. Estructura inicial
    2. CPU
    3. Nombres de nodos
    4. Dispositivos
    5. Descripción de la propiedad compatible
  4. Cómo funciona el direccionamiento
    1. Dirección de la CPU
    2. Dispositivos con memoria asignada
    3. Dispositivos sin memoria asignada
    4. Rangos (traducción de direcciones)
  5. Cómo funcionan las interrupciones
    1. Datos específicos del dispositivo
  6. Nodos especiales
    1. aliases Node
    2. Nodo elegido
  7. Temas avanzados
    1. Máquina de muestra avanzada
    2. PCI Host Bridge
      1. Numeración del bus PCI
      2. Traducción de direcciones PCI
    3. Mapeo Avanzado de Interrupciones
  8. Notas

1 Formato de datos básico

El árbol de dispositivos es una estructura de árbol simple de nodos y propiedades. Las propiedades son pares clave-valor, y el nodo puede contener tanto las propiedades como los nodos secundarios. Por ejemplo, el siguiente es un árbol simple en el formato .dts:

/dts-v1/;

/ {

  node1 {
      a-string-property = "A string";
      a-string-list-property = "first string", "second string";
      // hex is implied in byte arrays. no '0x' prefix is required
      a-byte-data-property = [01 23 34 56];
      child-node1 {
          first-child-property;
          second-child-property = <1>;
          a-string-property = "Hello, world";
      };
      child-node2 {
      };
  };
  node2 {
      an-empty-property;
      a-cell-property = <1 2 3 4>; /* each number (cell) is a uint32 */
      child-node1 {
      };
  };

};

Este árbol es obviamente bastante inútil porque no describe nada, pero muestra la estructura de nodos y propiedades. Aquí tenemos:

un único nodo raíz: “/” un par de nodos secundarios:“node1” y “node2” a un par de nodos hijos de node1: “child-node1” and “child-node2” un montón de propiedades dispersas a través del árbol.

Las propiedades son pares clave-valor simples donde el valor puede estar vacío o contener un flujo de bytes arbitrario. Aunque los tipos de datos no están codificados en la estructura de datos, existen algunas representaciones de datos fundamentales que pueden expresarse en un archivo de origen de árbol de dispositivos.

Las cadenas de texto(string) (null terminated) se representan con comillas dobles

string-property = “a string”;

Cell son enteros sin signo de 32 bits delimitados por corchetes angulares: cell-property = <0xbeef 123 0xabcd1234>;

Los datos binarios (binary) se delimitan con corchetes:

binary-property = [0x01 0x23 0x45 0x67];

Los datos de diferentes representaciones se pueden concatenar juntos usando una coma:

mixed-property = “a string”, [0x01 0x23 0x45 0x67], <0x12345678>;

Las comas también se utilizan para crear listas de cadenas string-list = “red fish”, “blue fish”;

dispositivos_ingobernables_device_tree.1522937341.txt.gz · Última modificación: 2018/04/05 16:09 por pietre