Você está na página 1de 58

SISTEMAS DIGITALES

Master en Inteligencia Ambiental


ARM Linux
Sistemas empotrados
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Introduccin
2
ARM (Advanced RISC Machines) es una
arquitectura de 32 bits desarrollada por ARM
Holdings.
Arquitectura RISC.
Su simplicidad la hace ideal para aplicaciones de bajo
consumo.
2005: 98% de procesadores de telfonos mviles usan al
menos un procesador ARM.
Los procesadores ARM los desarrolla ARM y tambin
todos aquellos que sean titulares de su licencia.
En la actualidad ARM no hace procesadores. Slo los
disea y licencia sus diseos a fabricantes.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Caractersticas
3
Caractersticas del ARM:
1. Arquitectura Load/store.
La memoria slo es accesible mediante instrucciones
de load/store.
El resto de instrucciones slo manejan registros
internos.
2. Memoria alineada, los datos deben estar en posiciones
consecutivas.
3. 16 registros idnticos de 32 bits.
4. Juego de instrucciones RISC, con tamao fijo de 32 bits.
5. La mayor parte de instrucciones se ejecutan en un slo
ciclo.
6. Ejecucin condicional de las instrucciones.
7. Desplazador de barril de 32 bits.
8. Registro de retorno.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Introduccin
4
Gestin de
procesos
Gestin de
memoria
Sistema de
archivos
Control de
dispositivos
Gestin de red
Cdigo
dependiente
de la
arquitectura
Gestor de
memoria
Sistemas de
ficheros
Dispositivos
de carcter
Subsistema de
red
Dispositivos
de bloque
Drivers de
tarjetas
Interfaz de llamadas al sistema (API, del sistema operativo)
Programas de usuario
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Soporte para punto flotante (1)
Muchas arquitecturas y plataformas ARM no tienen la unidad de punto
flotante. En ese caso hay que indicar al crear el kernel qu se va a hacer para
poder hacer operaciones con nmeros reales.
Hay dos soluciones para la emulacin:
Hard float: Permitir que los binarios en el espacio de usuario usen
instrucciones de punto flotante, y emular en el kernel el comportamiento de
dichas instrucciones mediante el uso de la excepcin illegal instruction.
Soft float: Aadir la emulacin en el espacio de usuario en el momento de
la compilacin, usando la opcin del compilador -msoft-float.
La solucin habitual en Linux es hard float.
La emulacin hard float es lenta debido al manejo de excepciones y el
cambio de contexto implicado.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
En Linux hay dos emuladores hard float disponibles:
NWFPE, NetWinder Floating Point Emulator
CONFIG_FPE_NWFPE
FastFPE, ms rpido pero no tan completo, no
adecuado para aplicaciones cientficas
CONFIG_FPE_FASTFPE
Algunas familias S pueden realizar operaciones en punto
flotante usando el coprocesador matemtico VFP.
VFP est disponible en las familias ARM10,
ARM11 y Cortex.
ARM proporciona soporte para el uso del VFP.
Soporte para punto flotante (2)
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Mezclando hard y soft float
La razn de soportar la emulacin en el Kernel es que los
binarios pueden usar las ventajas del hardware en el
momento que est disponible, sin necesidad de recompilar
(el kernel est preparado tanto para la emulacin como
para el uso del coprocesador real).
Por desgracia, dadas las restricciones impuestas por el
Application Binary Interface (ABI) no es posible mezclar
ambas emulaciones en el ABI normal.
Una aplicacin y todas sus libreras deben ser compiladas para uno
u otro caso.
Afortunadamente las nuevas especificaciones EABI
resuelven el problema.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
EABI (1)
Embedded-ABI (EABI) es el nuevo
estndar ABI para la plataforma ARM.
EABI especifica formatos estndar par conversin de
ficheros, tipos de datos, uso de registros, organizacin de
la pila, y paso de parmetros a funciones en programas
empotrados.
Ventajas:
Posibilidad de mezclar cdigo hard y soft float.
Permite usar los binarios creados por otros
compiladores.
Soporte para Thumb.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
EABI (2)
Otros cambios en EABI:
La estructura en el empaquetamiento y el alineamiento ha cambiado. No hay
alineamiento mnimo en estructuras.
El stack para una funcin est alineado a 8 bytes en lugar de 4.
El alineamiento para los enteros de 64 bits son 8 bytes.
System call interface:
El numero de la system call se pasa como parte de la instruccin SWI.
El kernel lee y decodifica la instruccin SWI contaminando la cache de datos con
instrucciones.
El numero de la llamada al sistema se pasa en el registro r7.
Los argumentos de 64 bits son alineados a un nmero par en lugar de usar la
siguiente posicin libre.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
EABI en gcc y Linux
El soporte para EABI se aadi en la version GCC 4.1.0.
Buildroot permite seleccionar el ABI del sistema objetivo (si se va
a usar ABI o EABI al construir el kernel).
El soporte EABI se aadi en la version del kernel de Linux 2.6.16
CONFIG_AEABI
Aade el soporte EABI en el kernel del Linux de
forma que las aplicaciones puedan ser compiladas
con el nuevo EABI.
CONFIG_OABI_COMPAT
En un kernel EABI-able, proporciona soporte para el
viejo ABI.
Solo funciona para binarios no Thumb.
Ejecutar un Binario EABI en un Kernel NO EABY no
funciona.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Introduccin a Thumb
Introduccin a Thumb
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Dos juegos de instrucciones
Modo por defecto en ARM: instrucciones de 32 bits
Con la revisin ARMV4T ISA, un nuevo juego de
instrucciones de 16 bits fue aadido : Thumb mode
ARMV4T ISA se usa en ARM7TDMI, ARM9TDMI, ARM7x0T, ARM9xxT
La T en el nombre indica que esa arquitectura puede usar Thumb.
Cuando un microprocesador est en modo Thumb, usa el
juego de instrucciones reducido Thumb.
Son instrucciones de 16 bits.
La mayora se mapean directamente como instrucciones ARM.
En la revisin ARMV5TE ISA, se aadieron mejoras para la
conmutacin entre modos ARM y Thumb.
Las instrucciones de 16 bits son tiles para aumentar la
densidad del cdigo y disminuir el tamao de los ejecutables.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Compilar con Thumb
Cualquier toolchain para ARM es capaz de
generar binario que usan Thumb
Opcin -mthumb del compilador GNU C (gcc)
int bar(int c, int d)
{
return c + d;
}
int foo(int a, int b)
{
a += 3;
b -= 2;
return bar(b, a);
}
arm-linux-gcc -mthumb -c
arm-linux-objdump -S
0000000 <bar>:
0: b580 push {r7, lr}
2: b082 sub sp, #8
4: af00 add r7, sp, #0
6: 1d3b adds r3, r7, #4
8: 6018 str r0, [r3, #0]
a: 1c3b adds r3, r7, #0
c: 6019 str r1, [r3, #0]
e: 1d3b adds r3, r7, #4
10: 1c3a adds r2, r7, #0
12: 6819 ldr r1, [r3, #0]
[...]
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Ganancia en tamao
int bar(int c, int d)
{
return c + d;
}
int foo(int a, int b)
{
a += 3;
b -= 2;
return bar(b, a);
}
Las instrucciones en Thumb ocupan la mitad de espacio.
Ganancia en tamao en un pequeo ejemplo no representativo:
Reduccin de 28 bytes, 22% de reduccin de cdigo
arm-linux-gcc -c
arm-linux-gcc -c -mthumb
test.arm.o
test.thumb.o
$ sizediff test.arm.o test.thumb.o
text data bss dec hex filename
124 0 0 124 7c test.arm.o
96 0 0 96 60 test.thumb.o
-28 0 0 -28 -1C +/-
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Codificacin
001 10 Rd 8-bit immediate
15 0
Instruccin Thumb
1110 001 0 Rd 0000 8-bit immediate 01001 0 Rd
31
0
Instruccin ARM
Major opcode indica
format 3
move/compare/add/sub
with immediate value
Minor opcode indica
add instruction
Registros destino y fuente Valor inmediato
Condicin: siempre
El procesador slo tiene un juego de instrucciones (ARM).
Cuando est usando Thumb el procesador (mediante un
hardware dedicado, con lo que no se pierde tiempo)
expande las instrucciones Thumb de 16 bits almacenadas
en memoria a 32 bits, antes de irlas ejecutando.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Diferencias ARM - Thumb
En modo Thumb se usa un conjunto de
registros reducido.
En modo Thumb algunas instrucciones,
tales como branch o link, precisan 2
instrucciones.
Algunas operaciones no se pueden realizar
en Thumb: por ejemplo, acceder a los
coprocesadores o al registro de estado.
0000000 <bar>:
0: b580 push {r7, lr}
[...]
00000020 <foo>:
[...]
4e: f7ff fffe bl 0 <bar>
[...]
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Por diversas razones es necesario poder combinar cdigo ARM y cdigo
Thumb juntos:
Cdigo Thumb que quiere hacer alguna operacin que no se puede hacer
en modo Thumb.
Cdigo crtico que precisa acceder a todo el espacio de memoria
codificado en ARM.
Cdigo que usa libreras compiladas en modo ARM.
El compilador GNU Compiler proporciona un mecanismo transparente
denominado interworking que permite la mezcla de cdigo ARM y
Thumb.
La arquitectura ARM proporciona instrucciones para pasar de un modo a
otro.
bx y blx, El bit ms bajo de la direccin determina la conmutacin:
Si bit[0] es 0, el procesador pasa o permanece en modo ARM.
Si bit[0] es 1, se pasa a modo Thumb.
Thumb y ARM interworking
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Interworking
000081c4 <main>:
81c4: b580 push {r7, lr}
81c6: af00 add r7, sp, #0
[...]
81cc: f005 fb30 bl d830 <__foo_from_thumb>
[...]
00008220 <foo>:
8220: e1a0c00d mov ip, sp
8224: e92dd800 push {fp, ip, lr, pc}
[...]
8254: e12fff1e bx lr
0000d830 <__foo_from_thumb>:
d830: 4778 bx pc
d832: 46c0 nop (mov r8, r8)
0000d834 <__foo_change_to_arm>:
d834: eaffea79 b 8220 <foo>
Funcin main(),
compilada en modo
Thumb, llama a foo()
en modo ARM.
GCC genera
wrappers alrededor
de foo() para cambiar
de modo
PC es un registro de 16
bits usado como
contador de programa
LR es el link register y
almacena la direccin
de retorno
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Interworking
Dos instrucciones b en Thumb.
Almacenan direccin de retorno en lr.
lr = pc + (immediate << 12)
pc = lr + (immediate)
lr = addr of next instruction | 1
Cambiar a modo ARM
pc tiene el bit mas bajo a 0 para pasar a modo ARM
Llamar a la funcin
Retornar al modo Thumb
lr tiene el bit mas bajo a 1 para pasar a modo
Thumb
f005 fb30
bl d830 <__foo_from_thumb>
4478 bx pc
eaffea79 b 8220 <foo>
e12fff1e bx lr
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Interworking en nuestro sistema
Posibilidades:
Modos ARM y Thumb independientes en el kernel y en el
espacio de usuario.
Se puede usar un kernel en modo ARM con un
programa en Thumb. La ABI (interfaz kernel
programa) permanece igual.
Modo completo Thumb en el espacio de usuario,
incluyendo libc.
uClibc Parece que no soporta el modo Thumb de
forma correcta.
Thumb en el espacio de usuario, excluyendo glib.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Generar toolchain
La toolchain que se utiliza para generar el cdigo debe ser
capaz de trabajar con interwork, para ello se han de usar las
opciones:
--enable-interwork en la configuracion de la binutils
--enable-interwork en la configuracin de gcc
Para habilitar el mecanismo interworking se utiliza la opcin
-mthumb-interwork al generar el cdigo.
En Uclibc hay que hacer lo siguiente:
-mthumb-interwork
USE_BX en la opcin de configuracin
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Compilacin de las aplicaciones
Manualmente
Aadir la opcin -mthumb al comando de compilacin.
CFLAGS+=-mthumb
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Linux empotrado
Hasta ahora hemos visto qu se necesita para
crear un sistema empotrado.

pero

Qu se hace realmente para crearlo?


SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Usar una distribucin
Una distribucin proporciona paquetes binarios preparados
para usar.
Hay distribuciones como Debian que estn disponibles
para arquitecturas empotradas (ARM, MIPS, PowerPC).
Esto hace relativamente fcil conseguir un sistema
funcional pero:
El mantenedor del sistema ha realizado una serie de opciones de
configuracin que pueden o no pueden coincidir con las opciones
necesarias para el usuario (soft float vs. hard float, EABI vs
OABI,)
No se dispone de control sobre la integracin. (inicializacin,
dependencias)
Si se desea integrar un parche o cambiar algo es necesario
reconstruir el paquete. No hay mecanismos que automaticen esto.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Manualmente
Es posible compilar, configurar e instalar todos los
componentes que precisa tu sistema Linux
manualmente.
Esto da flexibilidad, pero:
Es preciso conocer las dependencias entre componentes.
La compilacin cruzada es una tarea tediosa.
No hay un mecanismo automatizado para reconstruir el
sistema si se desea aadir o corregir algo.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Usar mtodos de construccin
Hay mtodos de construccin que facilitan la tarea de crear un
sistema Linux empotrado.
Se automatiza el proceso de descarga, configuracin,
compilacin e instalacin de los paquetes.
Mtodo sistemtico para reconstruir el sistema.
Facilita la integracin de parches o aadir nuevas funcionalidades.
El sistema de construccin conoce la mayora de los paquetes
de cdigo abierto disponibles:
Las dependencias son gestionadas y los problemas de la compilacin
cruzada estn resueltos.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Buildroot
Buildroot < http://www.buildroot.net/ > es un conjunto
de makefiles que automatizan el proceso de construir una
toolchain cruzada y un sistema Linux empotrado.
Inicialmente esta herramienta se cre orientada para
uClibc.
Durante mucho tiempo la herramienta ha estado sin
mantenedor.
Pero desde enero de 2009 tienen un mantenedor oficial, Peter
Korsgaard.
Se libera una nueva versin cada 3 meses.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Usuarios de Buildroot
Actualmente estan usado esta
herramienta:
ATMEL para AVR32 development
kit
Gumstix
Armadeus (ARM boards with FPGA)
Calao Systems
http://www.calao-systems.com/
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Configuracin de Buildroot
Buildroot usa el
sistem Kconfig
configuration
system
Ofrece un
interfaz
menuconfig-like
Salva la
configuracion en
un fichero
.config
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Arquitecturas Target:
arm, armeb, avr32, cris, i386, mips, mipsel, powerpc, superh, superh64,
x86_64
Variantes de arquitecturas:
Para ARM, por ejemplo: Generica, ARM7TDMI, ARM610, ARM710,
ARM720T, ARM920T, Xscale, etc.
ABI selection:
Para ARM, EABI or OABI
Opciones para Target:
Opciones de construccin:
Herramientas que se deben usar, directorios
Documentacin de instalacin?, smbolos de depuracin?, nivel de
optimizacin?
Configuracin de Buildroot
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Configuracin de la Toolchain
Buildroot puede crear una toolchain (limitada a toolchains en
uClibc) o usar otra toolchain externa (de un conjunto de
toolchains compatibles)
En el caso de crear la toolchain, Buildroot permite seleccionar
cosas como:
Versin de Kernel headers
Versin de uClibc y configuracin
Versin de GCC y opciones
(Fortran, C++, Java, Objective C, )
Versin de GDB y opciones
(gdbserver, gdb on the target, cross-gdb on the host)
Opciones generales de configuracin de la toolchain
(large file support, RPC support, IPv6 support, locale support, etc.)
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Seleccin de paquetes
Varios cientos de paquetes estn disponibles.
Dependencias entre paquetes son gestionadas.
Paquetes pincipales: busybox, bash, bzip2, diffutils, flex,
native toolchain, grep, bootutils, cups, at, beecrypt, dash,
file, gamin, less, lsof, ltrace, memstat, module-init-tools,
procps, psmisc, screen, strace, sudo, syslogd, klogd, util-
linux, which, etc.
Librerias bsicas : libconfig, libconfuse, libdaemon,
libelf, libevent, libgcrypt, libiconv, libidn, liblockfile,
liboil, libsysfs, etc.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Base de datos: MySQL client, sqlite
Editores : ed, nano, uemacs, vim
Networking: argus, avahi, axel, boa, bind, bridge-utils, DHCP
support, dnsmasq, dropbear, ethtool, haserl, ifplugd, iperf, iproute2,
ipsec-tools, iptables, kismet, l2tp, lighttpd, linkns, lrzsz,
mDNSresponder, mii-diag, mrouted, nbd, ncftp, netcat, netkitbase,
netkittelnet, netplug, netsnmp, nfs-utils, ntp, openntpd, openssh,
openssl, openvpn, portmap, pppd, pppoe, pptp-linux, proftpd, quagga,
isisd, samba, rsync, stunnel, tcpdump, tftpd, thttpd, vsftpd, wireless
tools, etc.
Hardware/system tools: dm, dmraid, e2fsprogs, fis, libfuse, hal,
hdparm, hotplug, i2c-tools, input-tools, iostat, libaio, libraw1394,
libusb, lm-sensors, lvm2, mdadm, mtd utils, pciutils, setserial, udev,
usbutils, etc.
Seleccin de paquetes
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Audio/video: aumix, flac, gstreamer with plugins, libmad,
libmpd, libogg, libtheora, libvorbis, madplay, mpg123,
mplayer, speex, vlc, festival
Libreras grficas: ncurses, slang, dialog, DirectFB,
imagemagick, jpeg, libpng, libungif, pixman, SDL, QT
Embedded, Gtk (atk, cairo, pango, glib), fontconfig,
Freetype, Matchbox, X.org Kdrive and a few X applications
(window managers, etc.)
Compresores
Gestor de paquetes: ipkg, portage, rpm
Interpretes, leguajes: lua, microperl, python, ruby, tcl, php
Misc: Libreras XML , Java, juegos
Seleccin de paquetes
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Filesystemy kernel
Seleccin del formato del sistema de ficheros raz
(root filesystem):
cramfs, cloop, ext2, jffs2, ubifs, squashfs, tar, cpio,
initramfs, romfs.
Tambin es posible crear un raw root filesystem
(sistema de ficheros raz sin formato).
Configuracin del Bootloader
U-Boot soportado
Configuracin del kernel
Versin, configuracin, parches y formato binario
pueden ser especificados (uImage, zImage, bzImage)
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
36
Ejemplo de construccin
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Jerarquia de directorios
En los fuentes
docs/, documentation
package/, the configuration items and Makefiles for building the
userspace packages
project/, the configuration items and Makefiles for the project concept
(several projects in the same Buildroot tree)
scripts/ various utilities
target/linux/, building the Linux kernel
target/<fstype>/, generating the root filesystem image
target/device/, ready-made configuration for supported boards
target/generic/target_skeleton/, the default root filesystem skeleton
toolchain/, building a cross-compiling toolchain
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Using Buildroot in a nutshell
Descargar ltima versin estable y obtenerla del
repositorio SVN
make menuconfig
Make
raw root filesystem se crea en
project_build_ARCH/PROJECT/root/
Imagen root filesystem y kernel se crea en
binaries/PROJECT/
La localizacin de los directorios de salida se
puede cambiar usando O=/path/to
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Directorios generados
build_ARCH
Un directorio para cada paquete que se crea
staging_dir, donde se encuentra la toolchain y donde los paquetes
son instalados
project_build_ARCH/PROJECT
autotools_stamps, gestin de dependencias
buildroot-config, Ficheros de cabecera relacionados con Buildroot
root, El sistema root filesystempara el objetivo
toolchain_build_ARCH
Donde la toolchain es configurada y creada
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Alternativas
Similares a Buildroot
PTXdist, Pengutronix
http://www.pengutronix.de/software/ptxdist/index_en.html
LTIB, Freescale.
Buen soporta para las placas de Freescale
http://www.bitshrine.org/
Aproximaciones diferentes
OpenEmbedded, Mas flexible pero ms compleja
http://www.openembedded.org
Gentoo Embedded
http://www.gentoo.org/proj/en/base/embedded/handbook/
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
41
Bootloaders
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Bootloaders
El bootloader es el software responsable de:
La inicializacin bsica del hardware.
Cargar una aplicacin binaria (el kernel, en nuestro caso)
desde la flash, red, o dispositivo no voltil en la memoria.
Ejecutar la aplicacin.
Adems de estas funciones bsicas la mayora de los
bootloader proporcionan un shell bsico con diversos
comandos, para la ejecucin de diferentes operaciones:
Inspeccin de memoria
Carga de dispositivos
Diagnosis hardware
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Bootloaders en x86
En los sistemas x86 la placa posee la BIOS
Este programa se ejecuta automticamente en la CPU
despus de un reset y es el responsable de:
La inicializacin bsica del sistema.
Cargar un pequeo programa en memoria (primer sector del
disco duro) para el arranque del sistema operativo.
Esta pieza de software es el primer cargador de
arranque, que inicia el cargador propiamente dicho
(grub, lilo)
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Bootloaders en arquitecturas
embebidas
En las arquitecturas embebidas el arranque de bajo nivel es muy
dependiente del procesador y de la placa de desarrollo.
Algunas placas tienen NOR flash de las cuales la CPU carga las primeras
instrucciones despus de un reset. En este caso el cargador de arranque se flasea
en la memoria NOR en la posicin adecuada.
Algunas CPU tienen integrada un cargador en una ROM interna que
automticamente permite el arranque de un pequeo programa almacenado en
NAND flash. En este caso se usa un cargador de dos etapas. El primero que se
encuentra en la flash en la posicin preprogramada arranca al cargador principal.
El cargador en la arquitectura embebidas se ejecuta
inmediatamente despus de un reset. Por lo tanto ser el
encargado de inicializar todos los dispositivos, incluida la
memoria DRAM.
El vendedor debe proporcionar la informacin ya que el cargador
es muy dependiente de la placa.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Cargadores de cdigo abierto mas populares en
la actualidad
U-Boot, the universal bootloader de Denx
Es el ms usado en ARM, tambin se puede usar en
PPC, MIPS, x86, m68k, NIOS, etc.
http://www.denx.de/wiki/U-Boot
RedBoot, basado en RedHat eCos
http://sources.redhat.com/redboot/
uMon: MicroMonitor general purpose, multi-OS bootloader
http://microcross.com/html/micromonitor.html
Bootloaders en arquitecturas
embebidas
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
U-Boot
U-Boot es un proyecto de software libre
Disponible en http://www.denx.de/wiki/U-Boot
Documentacin disponible en
http://www.denx.de/wiki/U-Boot/Documentation
Los ltimos desarrollos estn disponibles a travs la
herramienta git: http://git.denx.de/cgi-
bin/gitweb.cgi?p=u-boot.git;a=summary
La lista de discusin se encuentra en
http://lists.denx.de/pipermail/u-boot/
Desde el 2008 se libera una nueva versin (release)
cada 2 meses. Las versiones son identificadas por el
nombre, que contiene el mes y el ao YYYY.MM.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Compilar U-Boot (1)
Obtener el cdigo fuente y descomprimir
El directorio include/configs/ contienen un fichero de
configuracin para cada una de las arquitecturas
soportadas:
Se definen CPU, perifricos, configuracin de perifricos,
mapeo de memoria, caractersticas de U-Boot que se deben
incluir, etc..
Hay un fichero .h que determina las constantes de
preproceso. Leer el fichero README
Si la placa es soportada por U-boot, debera haber un
fichero correspondiente a la placa concreta. Por
ejemplo include/configs/omap2420h4.h.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Compilar U-Boot (2)
U-Boot debe ser configurado antes de compilar
make BOARDNAME_config
Donde BOARDNAME es el nombre del fichero .h (de
configuracin) en el directorio include/configs/, sin el .h
Una vez configurado U-Boot, hay que asegurarse de
que el compilador cruzado est disponible en el PATH
export PATH=/usr/local/uclibc-0.9.29-2/arm/bin/:$PATH
Finalmente, se compila U-Boot, con el prefijo
adecuado a la arquitectura en la que se quiere realizar
la carga:
Ejemplo Si es arm-linux-gcc:
make CROSS_COMPILE=arm-linux-
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Instalar U-Boot
U-Boot debe ser instalado en la memoria flash para
poder ser ejecutado por el hardware. Dependiendo del
hardware, la instalacin vara
En placas con algn monitor especfico de carga, que
permite instalar en la flash un segundo bootloader, es preciso
usar la documentacin de la placa as como las herramientas
recomendadas por el fabricante.
Si ya est instalado es posible substituir U-boot por una
nueva versin. Ojo al actualizar: Si se produce un problema
la placa puede quedar inutilizada.
Si la placa dispone de un interfaz JTAG que permite modificar
remotamente la memoria flash sin ningn sistema de apoyo es
posible recuperar la placa.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
U-boot prompt
Cargado el U-Boot, es posible conectar el sistema remoto
al host a travs de una consola serie.
Realizada la conexin, al encender la placa en la consola
serie se ver algo como esto:
U-Boot 1.1.2 (Aug 3 2004 - 17:31:20)
RAM Configuration:
Bank #0: 00000000 8 MB
Flash: 2 MB
In: serial
Out: serial
Err: serial
u-boot #
El shell del U-Boot ofrece un conjunto de comandos. A
continuacin veremos los ms importantes.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Comandos de informacin
U-Boot> flinfo
DataFlash:AT45DB021
Nb pages: 1024
Page Size: 264
Size= 270336 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0001FFF (RO) Bootstrap
Area 1: C0002000 to C0003FFF Environment
Area 2: C0004000 to C0041FFF (RO) U-Boot
U-Boot> nand info
Device 0: NAND 256MiB 3,3V 8-bit, sector size 128 KiB
U-Boot> version
U-Boot 2009.08 (Nov 15 2009 - 14:48:35)
Informacin
sobre la flash
Informacin
flash NAND
Informacin U-
Boot
Esta informacin cambia de una placa a otra
(en funcin de la configuracin de compilacin)
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Variables de entorno (1)
U-Boot puede ser configurado a travs de variables de entorno
que afectan al comportamiento de los comandos.
Mirar la documentacin para la lista completa.
El comando printenv muestra todas las variables de entorno, o
una sola:
u-boot # printenv
baudrate=19200
ethaddr=00:40:95:36:35:33
netmask=255.255.255.0
ipaddr=10.0.0.11
serverip=10.0.0.1
stdin=serial
stdout=serial
stderr=serial
u-boot # printenv serverip
serverip=10.0.0.2
Configuracin de red
Para mostrar una sla variable
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Variables de entorno (2)
El valor de las variables de entorno puede ser cambiado
mediante el comando setenv :
u-boot # setenv serverip 10.0.0.2
Las variables de entorno son almacenadas en la flash usando
el comando saveenv. La localizacin en la flash es definida
en tiempo de compilacin a travs del fichero de
configuracin.
Se pueden usar pequeos scripts para modificar las variables
:
setenv myscript 'tftp 0x21400000 uImage ; bootm
0x21400000'
Para ejecutar el script:
run myscript
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Transferencia de ficheros hacia el target
U-Boot es usado principalmente para la carga y arranque de una
imagen del kernel, pero permite cambiar la imagen y el root
filesystem almacenados en la flash.
Los ficheros pueden ser intercambiados entre el host y el target.
Mediante una conexin de red. U-Boot contienen un driver Ethernet para
esto. El protocolo TFTP puede ser usado para ello.
A travs de una conexin serie si no es posible una conexin Ethernet.
Target
Host
U-Boot TFTP
cliente
TFTP
servidor
Ethernet
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Configurar TFTP
En un sistema GNU/Linux basado en Debian
Instalar el paquete tftpd-hpa (tftp server):
Reiniciar el superservidor inetd :
sudo /etc/init.d/openbsd-inetd restart
Copiar los ficheros al directorio root del servidor TFTP.
Ejemplo:
cp arch/arm/boot/uImage /var/lib/tftpboot
Para comprobar que el servidor funciona instalar el cliente
TFTP:
apt-get install tftp-hpa
Usar para descargar un fichero
tftp localhost
> get uImage
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
U-boot mkimage
La imagen del kernel que U-boot carga debe estar preparada. Es
necesario aadir una cabecera especial especfica para U-Boot.
Esto se hace mediante la herramienta que proporciona Uboot,
mkimage
En Debian / Ubuntu: basta con instalar el paquete uboot-
mkimage.
O, en su defecto, crearla a partir de los fuentes.
La imagen especial para el sistema target uImage, creada a
partir de un Makefile de los fuentes del kernel, puede ser usada
para crear la imagen adecuada para U-Boot.
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
Flasheando una imagen del kernel
Compilar el kernel y generar U-Boot header (debe estar instalada mkimage).
Ejecutar make uImage
Copiar la nueva imagen al directorio raz del servidor TFTP
En la placa, mediante el shell de U-Boot, descargar la nueva imagen a memoria
(8000 posicin hexadecimal donde se deposita el fichero):
u-boot # tftp 8000 uImage
Desproteger NOR flash
u-boot # protect off 1:0-4
Borrar NOR flash
u-boot # erase 1:0-4
Copiar a NOR flash (0x01000000: first sector)
u-boot # cp.b ${fileaddr} 1000000 ${filesize}
Restaurar proteccin NOR :
u-boot # protect on 1:0-4
SISTEMAS DIGITALES
Master en Inteligencia Ambiental
boot commands
Parmetros especficos de arranque del
kernel :
u-boot # setenv bootargs mem=64M \
console=ttyS0,115200 init=/sbin/init \
root=/dev/mtdblock0
Ejecutar el kernel almacenado en una
posicin fsica
(RAM o flash):
bootm 0x01030000
Misma lnea

Você também pode gostar