IngoberWiki

Omnia sunt communia

Herramientas de usuario

Herramientas del sitio


dispositivos_ingobernables_u-boot

Guia para instalación u-boot

Existen 2 formas de descargarse el código fuente de das U-boot:

Desde el repositorio de git en la pagina oficial:

http://git.denx.de/u-boot.git

También se puede descargar todas las versiones en el FTP oficial:

ftp://ftp.denx.de/pub/u-boot/

Configuración de das u-boot

Hay muy pocos modelos de placas ( y con placas me refiero a placas de desarrollo, telefonos, tablets etc) que compartan la misma configuración de hardware, la velocidad de la memoria RAM, el procesador, la cantidad y el tipo de memoria interna etc..

Es por eso que el paso más importante del proceso es la configuración ya que normalmente se prepara una compilación del bootloader para cada placa que se quiera iniciar.

La configuración del bootloader se realiza por 2 vías: La plantilla _defconfig y las opciones del menú de compilación

Las plantillas de _defconfig son plantillas de configuración que sirven para cargar las opciones de un tipo de placa definida previamente, normalmente estas configuraciones están dentro del código fuente de das u-boot, una vez cargada la plantilla el menú de configuración tiene las opciones relativas a la placa cargada.

No siempre están la configuración de nuestra placa, en estos casos habria que cargar una defconfig del mismo fabricante de SoC o lo más aproximado posible para luego acabar de configurar el bootloader en el menú

La sintaxis de una placa por defecto sería la siguiente

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- q8_a13_tablet_defconfig

Vamos a analizar la orden:

make: Ordena al compilador que compile

-j$ (nproc) Le dice al sistema que compile con todos los núcleos/hilos disponibles, puede ejecutar -j 2 o -j 4 para indicar el nº de núcleos que quiera usar en la compilación

ARCH=arm Con esto definimos la arquitectura, en este caso arm

CROSS_COMPILE=arm-linux-gnueabihf- Definimos el toolchain ( conjunto de herramientas de compilación) que vamos a usar para la compilación cruzada, en este caso arm-linux-gnueabihf- que es el toolchain por defecto del proyecto GNU

q8_a13_tablet_defconfig Esto es la plantilla que se va a usar para este u-boot

Con este comando hemos cargado la plantilla que corresponde a tablets allwinner a13

U-boot compilación e configuración

El siguiente paso es cargar el menú de opciones, en este punto es la misma orden que la compilación del kernel, cargando “config,xconfig o gconfig según quiera el usuario.

Tanto xconfig como gconfig requieren dependencias de entorno de ventanas, xconfig necesita las librerías QT para ejecutarse y gconfig necesita gtk para ejecutarse.

La orden tipica para poder lanzar el menú de configuración sería el siguiente:

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xconfig

Esta orden va a generar el siguiente menú contextual:

Podemos configurar muchos elementos, no obstante si usamos una plantilla concreta no deberíamos efectuar ningún cambio,

Ahora ejecutamos la orden de compilación:

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

U-boot: Instalación

Ahora que hemos compilado el u-boot tenemos el archivo u-boot-sunxi-with-spl.bin y tenemos que insertarlo con el comando dd , si asumimos que tienes un micro sd insertada y esta identificado como /dev/mmcblk0p1 hay que desmontar con umount /dev/mmcblk0p1

Una vez desmontado hay insertar el u-boot con la siguiente linea de comando:

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8

IMPORTANTE: Al realizar el proceso escriba sync para sincronizar buses después pulse sudo eject /dev/mmcblk0 para estar seguro, no sea impaciente a la hora de extraer la tarjeta sd.

Si todo ha ido correctamente debería poder arrancar el dispositivo con u-boot con la sd insertada.

U-boot definición e historia

Es un programa de la familia de los llamados bootloaders o gestores de inicio para Linux,en este caso nos permite iniciar dispositivos con otro entorno distinto al de android,aprenderemos que es, como descargarlo,su configuración y la compilación adecuada que permite tener un sistema similar al bios altamente configurable.

Definición

Das U-Boot (subtitulado “Universal Boot Loader” y, a menudo abreviado como U-Boot) es un cargador de arranque primario de código abierto que se usa habitualmente en dispositivos integrados.

Empaqueta las instrucciones para arrancar el kernel del sistema operativo del dispositivo.

Está disponible para varias arquitecturas, incluyendo 68k, ARM, Blackfin, MicroBlaze, MIPS, Nios, SuperH, PPC, RISC-V y x86. U-Boot es un gestor de arranque de primera y segunda etapa,carga la ROM o el BIOS del sistema desde un medio de arranque admitido como una tarjeta SD, unidad SATA, FTP etc.

Si hay restricciones de tamaño, U-Boot se puede dividir en etapas: la plataforma cargaría un SPL pequeño (cargador de programa secundario), que es una versión simplificada de U-Boot.

El SPL haría la configuración de hardware inicial y la carga de la versión más grande y completa de U-Boot.

Independientemente de si se utiliza el SPL, U-Boot realiza tanto la primera etapa (por ejemplo, configuración de controladores de memoria y SDRAM) como el inicio de segunda etapa (realizando los pasos para cargar un sistema operativo moderno desde un medio valido) presentando un menú para que los usuarios interactúen y controlen el proceso de arranque, etc. )

U-Boot ejecuta una interfaz de línea de comandos en un puerto serie.

Usando la consola, los usuarios pueden cargar e iniciar un kernel, posiblemente cambiando los parámetros predeterminados.

También hay comandos para:

Leer información del dispositivo.

Leer y escribir memoria flash.

Descargar archivos (kernel, imágenes de arranque, etc.) desde el puerto serie o la red.

Manipular árboles de dispositivos y trabajar con variables de entorno (que se pueden escribir en almacenamiento permanente) y se utilizan para controlar el comportamiento del arranque en U-boot, como el comando de arranque predeterminado y el tiempo de espera antes del inicio automático, así como datos de hardware como la dirección MAC de Ethernet).

A diferencia de los cargadores de arranque de PC que oscurecen o eligen automáticamente las ubicaciones de memoria del kernel y otros datos de arranque.

U-Boot requiere sus comandos de arranque para especificar explícitamente las direcciones de memoria como destinos para copiar datos (kernel, ramdisk, árbol de dispositivos, etc.) para cargar el kernel y los argumentos para el mismo.

Debido a que los comandos de U-Boot son de bajo nivel, se requieren varios pasos para arrancar un kernel, pero esto también hace que U-Boot sea más flexible que otros cargadores de arranque, ya que los mismos comandos se pueden usar para tareas más generales.

En este caso usamos un script contenido en un .img para dar al sistema las direcciones de memoria adecuadas para cargar el Kernel y el árbol de dispositivos compilado (.dtb)

Este script se puede editar con cualquier editor de texto , una vez finalizado se le da formato con la aplicación mkimage de u-boot-tools.

Incluso es posible actualizar U-Boot usando U-Boot, simplemente leyendo el nuevo gestor de arranque desde algún lugar (almacenamiento local, o desde el puerto serie o la red) en la memoria, y escribiendo esos datos en un almacenamiento persistente al que pertenece el gestor de arranque.

U-Boot tiene soporte para USB, por lo que puede usar un teclado USB para operar la consola (además de la entrada desde el puerto serie), y puede acceder y arrancar desde dispositivos de almacenamiento masivo USB como lectores de tarjetas SD.

Almacenamiento de datos y medios de arranque

U-Boot arranca un sistema al leer el kernel y cualquier otro dato requerido (por ejemplo, el árbol del dispositivo o la imagen de ramdisk) en la memoria, y luego ejecuta el kernel con los argumentos apropiados.

Los comandos de U-Boot son en realidad comandos generalizados que se pueden usar para leer o escribir datos arbitrarios. Con estos comandos, los datos pueden leerse o escribirse en cualquier sistema de almacenamiento compatible con U-Boot, que incluyen:

(Nota: Estos son los medios de arranque que U-Boot puede cargar en la memoria (por ejemplo, un kernel o una imagen de ramdisk). U-Boot debe ser iniciado por la plataforma, y ​​eso debe hacerse desde un dispositivo que la plataforma ROM o BIOS es capaz de arrancar, que naturalmente depende de la plataforma.)

  • Almacenamiento en el sistema
      ◦ SD card
      ◦ SATA
      ◦ NOR flash
      ◦ NAND flash
      ◦ USB
  • Puerto serie (transferencia de archivos)
      ◦ Kermit
      ◦ S-Record
      ◦ YMODEM
  • Inicio por red (opcionalmente usando DHCP, BOOTP, or RARP)
      ◦ TFTP
      ◦ NFS

Sistemas de archivos compatibles

U-Boot no necesita poder leer un sistema de archivos para que el kernel lo use como un sistema de archivos raíz o ramdisk inicial; U-Boot simplemente proporciona un parámetro apropiado para el kernel y / o copia los datos a la memoria sin comprender su contenido.

Sin embargo, U-Boot también puede leer desde (y en algunos casos, escribir en) sistemas de archivos.

De esta manera, en lugar de requerir que los datos que U-Boot cargará se almacenen en una ubicación fija en el dispositivo de almacenamiento, U-Boot puede leer el sistema de archivos para buscar y cargar el núcleo, árbol de dispositivos, etc., por nombre de ruta

U-Boot incluye soporte para estos sistemas de archivos:

  • Cramfs
  • ext2
  • ext3
  • ext4
  • FAT
  • FDOS
  • JFFS2
  • ReiserFS
  • Squashfs
  • UBIFS
  • ZFS

Árbol de dispositivos

El árbol de dispositivos es una estructura de datos para describir el diseño del hardware.

Usando el árbol de Dispositivos, un usuario podría usar un U-Boot principal no modificado en hardware de propósito especial.

Como también lo adoptó el kernel de Linux, el árbol de dispositivos tiene la intención de mejorar la situación en la industria integrada, donde existe una gran cantidad de forks (de U-Boot y Linux) para mas información sobre el árbol de dispositivos puede ir a Árbol de dispositivos: Resumido La capacidad de ejecutar el software principal prácticamente le da a los clientes una vía contra la falta de actualizaciones del proveedor.

Usos

Los Chromebooks basados ​​en ARM se montan con U-Boot.

Las Chromebook basadas en Celeron e i5 lo utilizan como carga útil para coreboot.

La serie basada en PowerPC de computadoras AmigaOne con AmigaOS usa U-Boot, en particular Sam440ep y Sam460ex de ACube Systems Srl, y AmigaOne X5000 de A-Eon, el sucesor de AmigaOne X1000.

Los dispositivos de Ubiquiti Networks usan U-Boot

El teléfono móvil Nokia N900 utiliza variantes de u-boot para la ejecución de otros sistemas operativos.

Historia

El origen del proyecto fue un gestor de arranque para PowerPC llamado 8xxROM escrito por Magnus Damm.

En octubre de 1999, Wolfgang Denk trasladó el proyecto a SourceForge.net y lo renombró a PPCBoot, dado que SourceForge.net no permitia nombres de proyectos que comenzarán con dígitos.

La versión 0.4.1 de PPCBoot se lanzó por primera vez al público el 19 de julio de 2000.

En 2002, una versión anterior del código fuente se bifurcó brevemente en un producto llamado ARMBoot, pero se fusionó de nuevo en el proyecto PPCBoot poco después.

El 31 de octubre de 2002, se lanzó PPCBoot-2.0.0. Esto marcó la última versión bajo el nombre PPCBoot, ya que se renombró para reflejar su capacidad para trabajar en otras arquitecturas además del ISA PPC.

PPCBoot-2.0.0 se convirtió en U-Boot-0.1.0 en noviembre de 2002, ampliado para funcionar en la arquitectura del procesador x86.

Se agregaron capacidades de arquitectura adicionales en los siguientes meses:

MIPS32 en marzo de 2003, MIPS64 en abril, Altera NIOS-32 en octubre, Coldfire en diciembre y Microblaze en abril de 2004. El lanzamiento de U-Boot-1.1.2 en mayo de 2004 trabajó en los productos de 216 fabricantes de placas en diversas arquitecturas

El nombre actual de Das U-Boot agrega un artículo definido alemán, para crear un juego de palabras bilingüe con la palabra alemana para “submarino”.

Es un software gratuito publicado bajo los términos de la Licencia Pública General de GNU.

Se puede construir en una PC x86 para cualquiera de sus arquitecturas previstas usando una conjunto de herramientas de desarrollo cruzada de GNU (toolchain) por ejemplo crosstool, el Kit de desarrollo de Linux incorporado (ELDK) o OSELAS.Toolchain

La importancia de U-Boot en los sistemas embebidos Linux queda palpable en el libro “Building Embedded Linux Systems” de Karim Yaghmour, cuyo texto sobre U-Boot comienza,

“Aunque hay bastantes otros gestores de arranque, 'Das U-Boot, 'el gestor de arranque universal, es sin duda el gestor de arranque de código abierto más rico, más flexible y más activamente desarrollado disponible

dispositivos_ingobernables_u-boot.txt · Última modificación: 2018/11/05 17:04 por pietre