Copyright 2009 ATMEL CONFIDENTIAL
®
Creacion de Imagenes
Santiago Morrison
FAE
1
Copyright 2009 ATMEL CONFIDENTIAL
®
2
Agenda
Inicialización y descarga de Imágenes
Conceptos
Sobre herramientas de compilación
Conceptos relacionados con el Core
Breve reseña de la estructura de Linux- Espacio de Kernel y de Usuario,drivers
Comenzando a trabajar con AT91- Descargando Imagenes con SAM-BA
- Modificando SAM-BA
- Modificando BootStrap
- U-Boot
- Creacion de Imagenes
->BuildRoot
->OpenEmbedded
Copyright 2009 ATMEL CONFIDENTIAL
®
3
Inicialización y descarga de Imágenes
Herramientas Gratuitas para abrir imagenes :
VirtualBox , VMPlayer
Imagenes de VMWARE
http://www.thoughtpolice.co.uk/vmware/
Sitios de Interes
www.atmel.com,
www.avrfreaks.net ,
www.ubuntu.com ,
www.at91.com ,
www.vmware.com ,
http://www.linux4sam.com/ ,
http://www.at91.com/android4sam
www.yagarto.de
www.buildroot.org
www.buildroot.net
www.kernel.org
www.openembedded.org
Copyright 2009 ATMEL CONFIDENTIAL
®
4
Conceptos sobre herramientas de compilación
Distribucion Nativa
Toolchain
Make y otras herramientas
SAM-BA (Aplicacion sobre SO)
BuildRoot http://buildroot.uclibc.org/
OpenEmbedded http://www.openembedded.org
Copyright 2009 ATMEL CONFIDENTIAL
®
5
SAM-BA
SAM-BA GUI (AT91 ISP)
Modificacion de SAM-BA es posible mediante archivos scripts
TCL
Copyright 2009 ATMEL CONFIDENTIAL
®
6
SAM-BA GUI: Solucion gratuita para grabar memorias on board
Serial port, USB and JTAG SAM-ICE support
Interface grafica y por linea de comandos
Facil customizacion de la herramienta
AT91Boot_DLL.dll: Solucion gratuita para aquellos que desean
hacer su propia interface grafica
4. NVM Programming SolutionsSAM-BA
Copyright 2009 ATMEL CONFIDENTIAL
®
7
SAM9G20 Boot Sequence
Power Up
BMS = 1Yes No
NandFlash-Boot on
EBI Chip Select 3
SAM-BA Boot
Boot From
External Memory
on EBI Chip Select 0
User Application
SDCard-Boot on MCI
EEPROM-Boot on TWI
SerialFlash-Boot then
DataFlash-Boot
on SPI0 Chip Select 0
SerialFlash-Boot then
DataFlash-Boot
on SPI0 Chip Select 1
Optional
Copyright 2009 ATMEL CONFIDENTIAL
®
8
SAM9G45/46/M10/M11 Boot Sequence
Power Up
BMS = 1Yes No
NandFlash-Boot
SAM-BA Boot
Boot From
External Memory
on EBI Chip Select 0
Boot on on-chip RC
User Application
SDCard-Boot on MCI
EEPROM-Boot on TWI
SerialFlash-Boot then
DataFlash-Boot
on SPI0 Chip Select 0
OptionalBoot on on-chip RC
Copyright 2009 ATMEL CONFIDENTIAL
®
9
BuildRoot
Es un conjunto de scripts que nos permitirán configurar nuestra sistema
operativo para el sistema embebido .
Es un Makefile configurable el cual baja , configura y crea cross
compilers , el kernel , busybox , y casi todas librarías necesarias para
una simple , y pequeña instalación de una distribución de Linux , asi
también como un sistema de archivos basado en uClibc
Este utiliza un sistema de archivos denominado KConfig , al cual
tenemos acceso .
Cuando guardamos la configuración genera archivos .config , los cuales
son los que finalmente se encargan de decir que debe ser construido ,
bajado , instalado , etc
Por otra parte es relativamente fácil agregar la aplicación al árbol de
archivos dentro del KConfig
BuildRoot se puede descagar de http://buildroot.uclibc.org/
Que es BuildRoot?
Copyright 2009 ATMEL CONFIDENTIAL
®
10
Buildroot
Una vez descargado
Ejecutaremos “make menuconfig”
Una vez configurado
Ejecutaremos solo “make “
y complirara nuestra configuracion
Copyright 2009 ATMEL CONFIDENTIAL
®
11
OpenEmbedded
OpenEmbedded es usualmente definido como
una meta-distribucion , la que busca proveer
distribuciones de Linux Embebidas hechas a
mano desde cero
Por lo tanto no podemos definir a OpenEmbedded
como una distribucion de Linux en si misma
Es una coleccion de unidades metadata
conducidas por una herramienta , que convierta
estos datos / unidades en tareas de ejecucion
Que es OpenEmbedded?
Copyright 2009 ATMEL CONFIDENTIAL
®
12
Conceptos relacionados con el Core
Secuencia de Boot
BootStrap
U-Boot
Imagen que contiene el kernel
Root File System
Copyright 2009 ATMEL CONFIDENTIAL
®
13
Secuencia de Boot
Standard Application Deployment
1st Level Bootloader(NVM Memory Bootloader)
2nd Level
Bootloader
(Optional)
3rd Level
Bootloader
Main Application
AT91 AT91
BootstrapBootstrap
UU--bootboot
EE--bootboot
LinuxLinux
WinCEWinCE
Standalone AppStandalone App
FLASH
Media(s)
Copyright 2009 ATMEL CONFIDENTIAL
®
14
Secuencia de Boot
Copyright 2009 ATMEL CONFIDENTIAL
®
15
AT91 Bootstrap
Free 2nd Level Bootloader for SAM9 MPU
AT91Bootstrap integrates several sets of algorithms:
Device initialization such as clock speed configuration, PIO settings,
SDRAM initialization
Physical media algorithms such as DataFlash, NAND Flash, etc.
Loaded thanks to NVM Memory Bootloader located in ROM
Latest Version is integrated in our software packages
NVM Memory Bootloader Support GNU IAR Keil
NAND Flash
AT45 DataFlash
25xxx Serial Flash
SD Card
CFI NOR Flash
3. Application Deployment Bootstrap
Copyright 2009 ATMEL CONFIDENTIAL
®
16
U-Boot
Nombre
Das U-Boot
Universal Bootstrap Loader
Plataforma que soporta
ARM, 32-bit AVR, MIPS, X86, PPC and other
Codigo Fuente
http://git.denx.de/
Licencia: GNU GPL
Copyright 2009 ATMEL CONFIDENTIAL
®
17
En la fase desarrollo , ayuda a desplegar el kernel , driver , rootfs a
traves de la red
Provee soporte de red
No es necesario borrar la flash cuando el kernel o rootfs son
desplegados
Provee comandos de usuario
Provee comandos de read/write para flash y tambien para la
memoria volatil
Operaciones de Hardware
Pasa parametros al kernel en la fase boot
Por que U-Boot es necesario?
U-Boot
Copyright 2009 ATMEL CONFIDENTIAL
®
18
NVM Boot
U-Boot es necesario? – Secuencia Local de Boot
SRAM
NandFlash-Boot
SAMBA Boot
ROM
DDRAM
NandFlash-Boot
0x00300000 0x73F00000
Current running Application in Red
U-Boot
0x00000000
0x00200000
0x00020000
NAND FLASH
Linux Kernel
AT91BootstrapAT91Bootstrap
Linux Kernel
U-Boot
AT91Bootstrap U-Boot
Linux Kernel0x72200000
Root FS0x00400000
Physical Addr: Physical Addr:
NAND flash offset:
U-Boot
Copyright 2009 ATMEL CONFIDENTIAL
®
19
MyIP: 10.0.0.20
Server IP: 10.0.0.10
Kernel Name: uImage
NFS position: /opt/rootfs
Zipped Linux
kernel
Linux
kernel
OpenEmbedded
rootfs (/opt/rootfs/)
NFS server
Linux image
(/srv/tftp/uImage)
TFTP server
10.0.0.10
u-boot
DDRAM
Why U-Boot is needed? - Network
Virtual MachineTarget board
U-Boot
Copyright 2009 ATMEL CONFIDENTIAL
®
20
Imagen que contiene el kernel
Copyright 2009 ATMEL CONFIDENTIAL
®
21
Comenzando a trabajar con AT91
Descargando Imagenes con SAM-BA
Modificando SAM-BA
Modificando BootStrap
U-Boot
Creacion de Imagenes
->BuildRoot
->OpenEmbedded
Copyright 2009 ATMEL CONFIDENTIAL
®
22
Modos de Boot (SAM-BA)
AT91SAM9G45
Copyright 2009 ATMEL CONFIDENTIAL
®
23
SAM-BA (cont)
Si SAM-BA esta corriendo y el proceso de enumeracion fue
exitoso deberimos ver un nuevo USB Device
Si es la primera vez , pedira de instalar el driver , el cual se
hara de forma automatica si SAM-B GUI fue instalado
Copyright 2009 ATMEL CONFIDENTIAL
®
24
SAM-BA (Desde la linea de comandos)
Una vez que el Host detecto a USB Device ,corremos el demo para
descargar en la nandFlash la distribucion de Angstrom
Link del demo www.linux4sam.com
Copyright 2009 ATMEL CONFIDENTIAL
®
25
En lugar de correr el .bat , abriremos la aplicacion ,y presionamos “Connect”
SAM-BA (GUI)
Copyright 2009 ATMEL CONFIDENTIAL
®
26
Modificando SAM-BA
En el caso de que el hardware sea diferente del kit de evaluacion
,deberemos moficicar el applet
Buscar en el directorio applets , un archivo denominado build.log
En el se encuentra las diferentes posibilidades de compilacion
para distintas memorias
Si todo saliera bien luego de bajar el kernel/rootfs,la pantalla
deberia lucir asi
Copyright 2009 ATMEL CONFIDENTIAL
®
27
Modificando SAM-Ba (cont,)
Tambien podria ser modificadomediante Eclipse
Ventaja :tiene editor incorporado
Desventaja: configuracion debe ser adecuada
Copyright 2009 ATMEL CONFIDENTIAL
®
28
Modificando BootStrap
Los comentarios realizados para SAM-BA sobre como
deben moficarse valen para BootStrap tambien
Se puede modificar por lineas de comando o Eclipse
http://www.atmel.com/dyn/resources/prod_documents/AT91Bootst
rap1.16.zip
Copyright 2009 ATMEL CONFIDENTIAL
®
29
U-Boot - Comandos
Memory
base – print or set base address
crc32 – calculate the crc32 checksum over an address range
cmp – compare two memory ranges (cmp staddr1 staddr2 size (hex))
cp – copy memory ( cp source targer size (hex))
md – display memory ( md (.b,.w,.l) addr size (hex))
- .b-byte , .w-word, .l-long
mm – modify memory (mm (.b,.w,.l) addr (hex)) will prompt for new value
mtest – simple memory test (mtest start end pattern (hex))
mw – memory write (mw [.b, .w, .l] address value [count] (hex))
nm – memory modify (nm [.b, .w, .l] address (hex))
loop – infinite loop on address range (loop [.b, .w, .l] address number_of_objects (hex))
Copyright 2009 ATMEL CONFIDENTIAL
®
30
U-Boot Comandos
Flash operation
cp – copy memory (cp [.b, .w, .l] source target count (hex))
flinfo – print Flash memory information
erase – erase flash memory (see help for options)
protect – enable or disable flash protection
Download Commands
bootp - boot image via network using BOOTP/TFTP protocol
dhcp - invoke DHCP client to obtain IP/boot params
loadb - load binary file over serial line (kermit mode)
tftpboot, tftp- boot image via network using TFTP protocol
usbboot - boot from USB device
Copyright 2009 ATMEL CONFIDENTIAL
®
31
U-Boot Comandos – Variables
Variables de entorno relacionadas a comandos
print – imprimi todas las variables por la salida standard
setenv – setea las variables de entorno
saveenv - guarda las variables de entorno en flash
run – corre los comandos de variables
bootd - boot default, i.e., run 'bootcmd‘
Copyright 2009 ATMEL CONFIDENTIAL
®
32
U-Boot Variables
Que es una variable en U-Boot?
Variable puede ser configuracion
Variable pueden ser scripts de comandos
U-Boot comandos para variables ???
Variable como configuracion
Configuracion de red
- ipaddr – direccion de IP del board
- serverip – direccion de IP del servidor . TFTP o NFS
- netmask – mascara
Parametros de Boot
- bootargs – argumentos que seran pasados al kernel cuando el kernel comienza a correr
Variable como comandos
bootcmd – lista de comandos que seran llamados por el comando boot
Copyright 2009 ATMEL CONFIDENTIAL
®
33
Examples - Commands
tftp 0x72200000 linux.bin
Baja el linux.bin desde tftp server hacia target address 0x72200000
md 0x72200000
Muestra contenido de memoria 0x72200000
nand read 0x72200000 0x200000 0x100
Lee 256 bytes desde nand flash a RAM.
- 0x72200000 es el target de RAM
- 0x00200000 es el offeset de la Flash
- 0x00100 es el tama#o de bytes a leer
print – muestras todas la actuales variables
setenv ipaddr 10.0.0.20 - configura Ip
setenv ipaddr ‘10.0.0.20’ - igual
setenv ipaddr - borra variable
Copyright 2009 ATMEL CONFIDENTIAL
®
34
U-Boot Ejemplo
Host IP (tftp server) : 10.0.0.1
Kit IP : 10.0.0.20
Imagen:
Comandos :
setenv serverip 10.0.0.1
setenv ipaddr 10.0.0.20
setenv netmask 255.255.255.0
ping 10.0.0.10
setenv bootcmd 'tftp 0x72200000 linux-2.6.30-uImage; bootm 0x72200000'
saveenv
boot
En el Host copiar inux-2.6.30-uImage en la carpeta que se exporta
/srv/tftp
Copyright 2009 ATMEL CONFIDENTIAL
®
35
U-Boot Otras Alternativas
Bajada de Imagines via Rs232
Bajada de Imagines via JTAG
Bajada de Imágenes via TFTP + DHCP
Bajada de Imágenes via TFTP SIN DHCP
Descompresion de Imágenes desde un servidor externo TFTP
SDCard
Entre otras
Copyright 2009 ATMEL CONFIDENTIAL
®
36
Creacion de Imagenes - BuildRoot
Una vez descargado Buildroot , la carpeta se veria asi
El numero cambia constantmente , dependiendo de la version
Luego para configurarlo debemos correr el siguiente comando
„make menuconfig‟
Copyright 2009 ATMEL CONFIDENTIAL
®
37
BuildRoot
Para obtener mas informacion de como modificar los scripts
http://www.at91.com/linux4sam/bin/view/Linux4SAM/BuildRootBuild#Add_your
_own_software_to_BuildRoot
Copyright 2009 ATMEL CONFIDENTIAL
®
38
Creacion de Imagenes OpenEmbedded
Una vez instalado , asegurarse de que las variables de entorno ,
hayan sido establecidos ,en este caso las variables se encuentran
en el archivo oe_.env.sh
source ./oe_env.sh
Para corroborarlo correr „env‟
Copyright 2009 ATMEL CONFIDENTIAL
®
39
local.conf
Uno de los archivos mas importantes se encuentra en :
/oe.openembedded/conf/local.conf
Dentro los distintos parametros ,podemos encontrar
DL_DIR = "/mnt/hgfs/oe_sources/“
BBFILES :="${TOPDIR}/openembedded/recipes/*/*.bb"
MACHINE = "at91sam9g45ekes"
Copyright 2009 ATMEL CONFIDENTIAL
®
40
Actualizacion de Paquetes con OE
En el Target corremos los siguiente
opkg list_installed | less
opkg list_installed | grep busybox
opkg list_installed | grep gdbserver
Sabemos que no tenemos corriendo el gdbserver
Entonces volvemos al host
bitbake gdbserver
bitbake package-index
Vuelvo al Target para actualizar
opkg update
Copyright 2009 ATMEL CONFIDENTIAL
®
41
OpenEmbedded
Como dijimos OpenEmbedded , en realidad se conecta con un
servidor externo , que es una distribucion confiable
Para saber adonde se conecta se necesita correr
git branch
Y se deberia ver algo asi
git config --list
Copyright 2009 ATMEL CONFIDENTIAL
®
42
Trabajando con OpenEmbedded(2)
El servidor remoto es branch.stable_2009_training_test.remote:
Su nombre es el otorgado por default : “origin”.
remote.origin.url es un servidor interno de ATMEL el cual tiene un
espejo del servidor GIT OpenEmbedded
git://git.openembedded.net/openembedded or
http://repo.or.cz/r/openembedded.git/
branch.stable_2009_training_test.merge Nos dice que viene de un
branch llamado “stable_2009_kerneloe_training “
Copyright 2009 ATMEL CONFIDENTIAL
®
43
Para ejemplificar tenemos una aplicacion de entradas – salidas llamada
“mysimplekey”
En el Host
cd openembedded/recipes/
Copiamos el contenido en recipes
mv /mnt/hgfs/src/application_dev/mysimplekey/full mysimplekey
cd mysimplekey
El ejemplo consta de un archivo de configuracion bitbake , archivo fuente
.c y un MakeFile
Compilando una aplicacion:MySimpleKey
Copyright 2009 ATMEL CONFIDENTIAL
®
44
Compilando una aplicacion:MySimpleKey
En el archivo de configuracion BitBake vemos que se llama al
makefile
La directiva oe_runmake permite correr Makefile en un archivo .bb
Los flags de Cross compile ya se encuentran en el Makefile
Copyright 2009 ATMEL CONFIDENTIAL
®
45
Compilando la aplicacion desde OE con Makefile
bitbake -b openembedded/recipes/mysimplekey/mysimplekey_1.0.bb -c
clean -D
bitbake –f -D -b
openembedded/recipes/mysimplekey/mysimplekey_1.0.bb –c compile
En el Target (placa)
busybox mount -t nfs 10.0.0.10:/opt/AT91SAM/oe/tmp/work/armv5te-
angstrom-linux-gnueabi/ /mnt
cd /mnt/mysimplekey-1.0-r0/
./mysimplekey
La aplicacion ya esta corriendo
Copyright 2009 ATMEL CONFIDENTIAL
®
46
Creando una imagen con la aplicacion
Hasta aqui hemos visto como compilar y correr la aplicacion con OE
En nuestro caso vamos a encontrar recipes para crear imagenes dentro de
/openembedded/recipes/images
Uno de los recipes que nos permite trabajar en consola es
console-at91sam-images
Entonces desde el directorio /opt/AT91SAM/oe corremos
bitbake console-at91sam-iamges
Como nuestra aplicacion ya esta incluida dentro del directorio de recipes , la
imagen producida incluira nuestra aplicacion
Top Related