Sunteți pe pagina 1din 37

NATIONAL POLYTECHNIC INSTITUTE

COMPUTING RESEARCH CENTER

U-boot
Jonathan Martnez Montes Cristbal Ramrez Lazo Abraham Josafat Ruz Ramirez

IPN-CIC

MICROSE Lab

Contenido

1. QU ES U-BOOT? 2. MONITOR 3. BOOTSTRAP 4. ARRANQUE

IPN-CIC

MICROSE Lab

Qu es un Boot loader?

Cuando el procesador est encendido, la memoria no tiene alojado al sistema


operativo, as que se necesita un software especial para llevar el sistema operativo a la la memoria a partir de los medios de comunicacin en el que reside . Este software es normalmente una pequea pieza de cdigo llamado el gestor de arranque . En un PC de escritorio , el gestor de arranque reside en el registro de inicio maestro (MBR ) del disco duro y se ejecuta despus de Basic Input Output System de la PC (BIOS ) realiza tareas de inicializacin del sistema . Como mnimo, un gestor de arranque para un sistema embebido realiza estas funciones : La inicializacin del hardware, especialmente el controlador de memoria Proporcionar parmetros de arranque para el sistema operativo Inicio del sistema operativo

IPN-CIC

MICROSE Lab

Que es U-Boot?

U-Boot es un gestor de arranque multiplataforma de cdigo abierto que proporciona apoyo para centenares tarjetas embebidas y muchos CPU, incluyendo PowerPC, ARM, XScale, MIPS, Coldfire, NIOS, Microblaze y x86.

IPN-CIC

MICROSE Lab

Las 10 reglas de oro de diseo de U-Boot

Las 10 reglas de oro de diseo de U-Boot: 1. Mantenerlo Pequeo 2. Mantenerlo Rpido 3. Mantenerlo Simple 4. Mantenerlo Portable 5. Mantenerlo Configurable 6. Mantenerlo Debuggable 7. Mantenerlo til 8. Mantenerlo Mantenible 9. Mantenerlo hermoso 10. Mantenerlo abierto El lema de las reglas de oro Cdigo genrico es el Cdigo de Buen
IPN-CIC MICROSE Lab 8

MONITOR

Monitor
U-Boot tiene un intrprete de comandos llamado monitor. Este intrprete sirve para crear un proceso de arranque personalizado.

IPN-CIC

MICROSE Lab

10

MONITOR

Comandos U-Boot

Comandos U-Boot
U-Boot tiene un conjunto incorporado de comandos para iniciar (booting) el sistema, administracin de memoria y actualizacin de un sistema embebido (firmware). Comandos personalizados pueden ser creados modificando el cdigo fuente de U-Boot.

IPN-CIC

MICROSE Lab

10

MONITOR

Comandos Incorporados

Comandos Incorporados
Para una lista completa y breve descripcin de los comandos incorporados, se recomienda usar la ayuda del propio monitor (help).

IPN-CIC

MICROSE Lab

10

MONITOR

Comandos Incorporados

IPN-CIC

MICROSE Lab

10

MONITOR

Comandos Incorporados

IPN-CIC

MICROSE Lab

10

MONITOR

Comandos Incorporados

IPN-CIC

MICROSE Lab

10

MONITOR

Variables

Variables
U-Boot usa variables de entorno que pueden leer o escribir un dispositivo no voltil. Las variables se usan para crear guiones (scripts) de los comandos y para configurar el proceso de arranque (boot).

IPN-CIC

MICROSE Lab

10

MONITOR

Variables

Las variables configuran cosas como el baud rate de la conexin serial, el tiempo de espera antes del auto boot, etc. Las variables tienen que ser almacenadas en memoria no voltil, como EEPROM o Flash.

IPN-CIC

MICROSE Lab

10

MONITOR

Variables

Los valores de las variables de fabrica son almacenados en el binario de U-Boot. Se pueden recuperar con el comando envreset.

IPN-CIC

MICROSE Lab

10

MONITOR

Variables

Las variables de entorno se almacenan como cadenas. Son sensibles a maysculas y minsculas. Variables personalizadas pueden ser creadas siempre y cuando se disponga de suficiente espacio en la memoria.

IPN-CIC

MICROSE Lab

10

MONITOR

Variables

IPN-CIC

MICROSE Lab

10

MONITOR

Variables

IPN-CIC

MICROSE Lab

10

MONITOR

Scripts

Scripts
Un script esta hecho con variables que contienen un conjunto de comandos que son ejecutados uno despus del otro.

IPN-CIC

MICROSE Lab

10

MONITOR

Imgenes del Kernel

Imgenes del Kernel


U-Boot permite descargar imgenes del Kernel usando Ethernet o USB. La memoria flash no es necesaria para probar un nuevo Kernel. Esto previene el deterioro de la memoria flash, debido a mltiples ciclos de borrado y escritura.

IPN-CIC

MICROSE Lab

10

MONITOR

Nmeros

Nmeros
El formato por defecto para los nmeros es hexadecimal. Si se escribe en la consola el numero 30100000 ser interpretado como 0x30100000.

IPN-CIC

MICROSE Lab

10

Boot Process

Boot process RBL - ROM Boot Loader, inicializa el procesador y lee de la memoria externa a la memoria RAM interna el SPL SPL Secondary Program Loader (UBL, XLoader) carga la siguiente etapa U-Boot U-Boot Habilita varias funcionalidades especficas del procesador y carga la imagen del kernel a la memoria persistente Kernel Image Etapa final

IPN-CIC

MICROSE Lab

Boot Process

IPN-CIC

MICROSE Lab

Boot Process

Boot process Despus del reset - Carga U-Boot bootloader en varios pasos: 1. El procesador realiza: 1.1 Ejecuta la primera fase del bootstrap que configura los vectores de interrupcin, de excepciones, los clocks y la SDRAM. 1.2 Descomprime el cdigo de U-Boot desde la memoria flash y lo copia a la RAM 1.3 Pasa el control de ejecucin al U-Boot 2. El U-Boot realiza: 2.1 Configura las direcciones Ethernet, Flash y consola serial. 2.2 Carga las configuraciones grabadas como variables de entorno en la memoria no-voltil. 2.3 Despus de un pocos segundos (delay_time), automticamente carga el kernel pre-instalado.
IPN-CIC MICROSE Lab 9

Boot Process

uImage

IPN-CIC

MICROSE Lab

Boot Process

Boot process (Memory Map) - SPL es cargado a la Memoria Ram Interna - U-Boot is cargado primero a la Memoria DDR - U-Boot carga la uImage - U-Boot realiza el checksum y relocaliza (si es requerido) el kernel encontrado en el uImage a la direccin de carga - U-Boot brinca a la enctrada especificada por el header de uImage, linux empieza en este punto

IPN-CIC

MICROSE Lab

Boot Process

Boot process 1. Corre start.S 2. Corre board.c 3. Corre main_loop (main.c)

IPN-CIC

MICROSE Lab

Boot Process

U-Boot File Estructure U-Boot contiene board, common, cpu, disk, doc, drivers, dtt, examples, fs, include, etc. Pero, cuando compilamos U-Boot exitosamente, de los archivos ms importantes son: config.mk Contiene deficiones de comandos para varias operaciones del dispositivo flash especfico (con el tamao correcto de la memoria flash y el tipo de memoria flash soportado) u-boot.bin El archivo ELF despus de la compilacin, el cual tiene que ser grabado en la flash

IPN-CIC

MICROSE Lab

Boot Process

flash.c Contiene definiciones de comando para varias operaciones del dispositvo flash especfico start.c El primer archivo (en ensamblador) para el arranque de la computadora

spd_sdram.c Inicializa y configura la DDR cuando la DIMM o SODIMM es usada


flash.h Contiene informacin especfica de la flash, incluyendo identificacin de fabricante, mscaras, flags e identificaciones del dispositivo

IPN-CIC

MICROSE Lab

Boot Process

1.

2. 3. 4. 5.

bootstrap 1.1 reset - start of u-boot 1.2 to superuser mode - as is when reset 1.3 Do lowlevel_init - (this will jump out to lowlevel_init.S in SoC) - (lowlevel_init) 1.4 Do Memory Remap if it is necessary. 1.5 Turn off watchdog timer - (this will jump out to watchdog.S in SoC) - (turnoff_watchdog) Do critical init when reboot (not from mem) Relocate andesboot to ram Setup stack Jump to second stage (board_init_r)

IPN-CIC

MICROSE Lab

Boot Process

cpu/n1213/start.S Setup Vector

lib/board.c board_init_f() Early Devices Setup

lib/board.c board_init_r() Setup SoC and Board Specific Devices board_init() Setup Mem for dlmalloc()

cpu/n1213/ag101/low_levelinit.S

Setup Memory Setup Memory Controller or on-chip SRAM

Calculate Addresses (SP, Dest, GD) for Relocation

cpu/n1213/start.S Setup SP for Common Board Setup

Setup Board Data Setup Board FLASH Setup Environment env_relocate(); Load Default Environments

Memory REMAP

cpu/n1213/start.S Copy Binary to RAM

cpu/n1213/ag101/watchdog.S

Fix Relocation Fix GOT Clear BSS

Turnoff Watchdog cpu/n1213/start.S Setup SP for Early Board Setup Environment (ASM->C)

Jump into Main loop

cpu/n1213/start.S Setup GD & Final Setup

IPN-CIC

MICROSE Lab

Comandos de Arranque

U-Boot ejecuta un cdigo situado en la memoria RAM, aunque tambin se puede leer en otros medios de comunicacin. El proceso de arranque se lleva a cabo normalmente en dos pasos:
La lectura de la imagen del sistema operativo de los medios de comunicacin (Ethernet, flash, USB) en la memoria RAM . Salta a la primera instruccin de la imagen en la memoria RAM.

IPN-CIC

MICROSE Lab

La lectura de imgenes en la memoria RAM

La lectura de imgenes en la memoria RAM De Ethernet La forma ms comn para arrancar una imagen durante el desarrollo es mediante la transferencia usando TFTP a travs de la interfaz Ethernet. Para ello, utilice el comando tftpboot, donde: La direccin de la RAM en el que colocar la imagen (loadAddress) El nombre del archivo de imagen (bootfilename)

# Tftpboot <loadAddress> <bootfilename>


La transferencia TFTP se produce entre la direccin serverip (host) y la direccin ipaddr (destino).

IPN-CIC

MICROSE Lab

La lectura de imgenes en la memoria RAM

Desde USB Otra manera de arrancar una imagen es leyndolo desde un dispositivo de almacenamiento flash USB. El USB debe estar formateado en el sistema de archivos FAT. Para leer una imagen desde un disco flash USB, escriba: # usb reset # fatload usb <dev>[:partition] <loadAddress> <bootfilename> Este comando lee el archivo bootfilename de la particin primaria del disco flash USB en la direccin loadAddress de la RAM.

Si no se especifica ninguna particin, se asume que la particin 1.

IPN-CIC

MICROSE Lab

La lectura de imgenes en la memoria RAM

From flash Para el arranque independiente, el dispositivo puede leer la imagen de la memoria flash, evitando la dependencia de ningn hardware externo. Para memorias flash NOR, hacer esto con los comandos de memoria: #cp.[b/w/l] <sourceAddress> <loadAddress> <count> Ese comando copia copia count bytes , words o long words (dependiendo del sufijo utilizado : b,w,l) de la direccin sourceAddress en loadAddress. Para flash memories NAND, commandos especiales deben ser utilizados: #nand read <loadAddress> <sourceAddress> <count> Este commando copia count bytes de la direccin sourceAddress en loadAddress.

IPN-CIC

MICROSE Lab

Arrancar las imgenes en la memoria RAM

Despus de que la imagen se transfiere a la RAM, se puede arrancar de dos maneras, dependiendo del sistema operativo: Para imgenes de Windows CE: # ir <loadAddress> Para las imgenes de Linux: # bootm <loadAddress> donde loadAddress (en ambos casos) es la direccin en la memoria RAM en la que reside la imagen.

IPN-CIC

MICROSE Lab

Direct Booting

Para simplificar el proceso, la versin Digi's U-Boot incluye el commando dboot, el cual lee una imagen de un medio y ejecuta en la RAM en un solo paso. La sintaxis del commando es: #dboot <os> <media> Donde os is linux o cualquier nombre de particin. Media es flash, tftp o usb. Ejemplo: #dboot linux flash

IPN-CIC

MICROSE Lab

Motivacin

IPN-CIC

MICROSE Lab

10