Download Descargar el tutorial completo

Document related concepts
no text concepts found
Transcript
®
Creacion de Imagenes
Santiago Morrison
FAE
Copyright 2009 ATMEL CONFIDENTIAL
1
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
2
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
Copyright 2009 ATMEL CONFIDENTIAL
www.yagarto.de
www.buildroot.org
www.buildroot.net
www.kernel.org
www.openembedded.org
3
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
4
SAM-BA
®
SAM-BA GUI (AT91 ISP)
 Modificacion de SAM-BA es posible mediante archivos scripts
TCL
Copyright 2009 ATMEL CONFIDENTIAL
5
4. NVM Programming Solutions
SAM-BA
®
 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
Copyright 2009 ATMEL CONFIDENTIAL
6
SAM9G20 Boot Sequence
®
Power Up
Yes
SerialFlash-Boot then
DataFlash-Boot
on SPI0 Chip Select 0
SerialFlash-Boot then
DataFlash-Boot
on SPI0 Chip Select 1
BMS = 1
No
Boot From
External Memory
on EBI Chip Select 0
User Application
NandFlash-Boot on
EBI Chip Select 3
SDCard-Boot on MCI
EEPROM-Boot on TWI
SAM-BA Boot
Copyright 2009 ATMEL CONFIDENTIAL
Optional
7
SAM9G45/46/M10/M11 Boot Sequence
®
Power Up
Yes
NandFlash-Boot
SDCard-Boot on MCI
BMS = 1
No
Boot From
External Memory
on EBI Chip Select 0
Boot on on-chip RC
SerialFlash-Boot then
DataFlash-Boot
on SPI0 Chip Select 0
User Application
EEPROM-Boot on TWI
SAM-BA Boot
Boot on on-chip RC
Copyright 2009 ATMEL CONFIDENTIAL
Optional
8
BuildRoot
®
Que es 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/
9
Copyright 2009 ATMEL CONFIDENTIAL
Buildroot
®
 Una vez descargado
 Ejecutaremos “make menuconfig”
 Una vez configurado
Ejecutaremos solo “make “
y complirara nuestra configuracion
Copyright 2009 ATMEL CONFIDENTIAL
10
OpenEmbedded
®
Que es 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

Copyright 2009 ATMEL CONFIDENTIAL
11
Conceptos relacionados con el Core
®
 Secuencia de Boot
 BootStrap
 U-Boot
 Imagen que contiene el kernel
 Root File System
Copyright 2009 ATMEL CONFIDENTIAL
12
Secuencia de Boot
®
Standard Application Deployment
1st Level Bootloader
(NVM Memory Bootloader)
2nd Level
Bootloader
AT91
Bootstrap
U-boot
E-boot
FLASH
Media(s)
(Optional)
3rd Level
Bootloader
Main Application
Copyright 2009 ATMEL CONFIDENTIAL
Linux
WinCE
Standalone App
13
Secuencia de Boot
®
Copyright 2009 ATMEL CONFIDENTIAL
14
Bootstrap
3. Application Deployment
®
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
Copyright 2009 ATMEL CONFIDENTIAL
15
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
16
U-Boot
®
Por que U-Boot es necesario?
 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
Copyright 2009 ATMEL CONFIDENTIAL
17
U-Boot
®
U-Boot es necesario? – Secuencia Local de Boot
NAND flash offset:
0x00400000
SAMBA Boot
NVM Boot
NandFlash-Boot
0x00200000
0x00020000
0x00000000
ROM
Physical Addr:
Linux Kernel
U-Boot
AT91Bootstrap
NAND FLASH
Physical Addr:
0x72200000
0x00300000
Root FS
AT91Bootstrap
0x73F00000
Linux Kernel
U-Boot
DDRAM
SRAM
Copyright 2009 ATMEL CONFIDENTIAL Current running Application in Red
18
U-Boot
®
Why U-Boot is needed? - Network
Virtual Machine
Target board
10.0.0.10
Zipped Linux
Linux
kernel
kernel
TFTP server
Linux image
(/srv/tftp/uImage)
DDRAM
u-boot
NFS server
MyIP: 10.0.0.20
Server IP: 10.0.0.10
Kernel Name: uImage
OpenEmbedded
rootfs (/opt/rootfs/)
NFS position: /opt/rootfs
Copyright 2009 ATMEL CONFIDENTIAL
19
Imagen que contiene el kernel
®
Copyright 2009 ATMEL CONFIDENTIAL
20
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
21
Modos de Boot (SAM-BA)
®
AT91SAM9G45
Copyright 2009 ATMEL CONFIDENTIAL
22
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
23
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
24
SAM-BA (GUI)
®
 En lugar de correr el .bat , abriremos la aplicacion ,y presionamos “Connect”
Copyright 2009 ATMEL CONFIDENTIAL
25
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
26
Modificando SAM-Ba (cont,)
®
 Tambien podria ser modificadomediante Eclipse
 Ventaja :tiene editor incorporado
 Desventaja: configuracion debe ser adecuada
Copyright 2009 ATMEL CONFIDENTIAL
27
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
28
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
29
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
30
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
31
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
32
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
33
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
34
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
35
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
36
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
37
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
38
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
39
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
40
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
41
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
42
Compilando una aplicacion:MySimpleKey
®
 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
Copyright 2009 ATMEL CONFIDENTIAL
43
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
44
®
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/armv5teangstrom-linux-gnueabi/ /mnt
cd /mnt/mysimplekey-1.0-r0/
./mysimplekey
La aplicacion ya esta corriendo
Copyright 2009 ATMEL CONFIDENTIAL
45
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
Copyright 2009 ATMEL CONFIDENTIAL
46