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