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