volver a Tutorial de Yocto Project

Crear Imagen para Beagleboard-XM

Esta imagen fue testeada en las siguientes plataformas

  • Beagleboard C4
  • Beagleboard xM Rev A & B

En Yocto project recomiendan utilizar alguna de estas distribuciones Ubuntu, Fedora, openSUSE y CentOS, ademas también es necesario tener al menos 70gb libres y conexión a Internet para la creación de la imagen.

Configuración Previa

Usar al bash como interprete de comandos:

sudo dpkg-reconfigure dash

y luego seleccionar la opción NO

Instalo paquetes necesarios para la compilación:

  • Ubuntu
sudo apt-get install sed wget cvs subversion git-core coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff libtool xterm
sudo apt-get install uboot-mkimage
  • Fedora
sudo yum groupinstall "development tools"
sudo yum install python m4 make wget curl ftp hg tar bzip2 gzip unzip python-psyco perl texinfo texi2html diffstat openjade docbook-style-dsssl sed docbook-style-xsl docbook-dtds docbook-utils sed bc eglibc-devel ccache pcre pcre-devel quilt groff linuxdoc-tools patch linuxdoc-tools cmake help2man perl-ExtUtils-MakeMaker tcl-devel gettext chrpath ncurses apr SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils autoconf automake libtool xterm
sudo yum install  uboot-tools

para bajar tenemos que bajar una version de poky del yocto project

Bajar poky[VERSION].tar.bz2

wget http://downloads.yoctoproject.org/releases/yocto/yocto-1.1/poky-edison-6.0.tar.bz2
 

Descargas yocto

Descomprimir el paquete

 tar xvfj poky-edison-6.0.tar.bz2

Bajar BSP

wget http://downloads.yoctoproject.org/releases/yocto/yocto-1.1/machines/beagleboard/beagleboard-edison-6.0.0.tar.bz2

Este Board Suport Package, es una Capa (Layer) que le podemos agregar a nuestro proyecto, esta capa tiene el soprte del porcesador OPMAP3530 y todos los periféricos de las beagleboard XM y C4

Descomprimir el BSP

Lo vamos a descomprimir dentro de nuestra carpeta de trabajo por comodidad(no es necesario que este en ese lugar)

 tar xvfj beagleboard-edison-6.0.0.tar.bz2 -C poky-edison-6.0

Generar el entorno

cd poky-edison-6.0
source oe-init-build-env 

Esto Nos reubico en ~/poky-edison-6.0/build/ Ahora debemos editar un archivo de configuración, está ubicado en la carpeta ~/poky-edison-6.0/build/conf/ creada recientemente.

Verificar que este la siguiente configuracion

local.conf

ubicado en ~/poky-edison-6.0/build/conf/local.conf

BB_NUMBER_THREADS = "N"
PARALLEL_MAKE = "-j N"

N=cantidad de nucleos de la pc que va a compilar

 MACHINE ?= "beagleboard"

Para que cree una imagen para el nuestro equipo y utilizando el BSP

Compilar/crear la imagen

Dentro de la carpeta build

bitbake core-image-sato

bitbake descarga y compila el recipe que le indiquemos, al poner como recipe core-image-[minimal sato micro …], el buildsystem va a resolver las dependencias del recipe bajar compilar, empaquetar y crear la imagen que seleccionamos.

Este Proceso va a tardar mas de 2hs, y va a ocupar 50gb por lo menos, hay que tener en cuenta que tiene que bajar todas las fuentes de los programas que componen el sistema operativo y luego compilarlas..

Algunas Imagenes interesantes
  • core-image-minimal: Por ahora la imagen mas chica, sin entorno gráfico sin soporte completo del hardware especifico
  • core-image-base: Imagen Sin entorno gráfico que soprta completamente el hardware del target.
  • core-image-core: Imagen con un entorno gráfico elemental
  • core-image-sato: Imagen con entono gráfico basado en Busybox con theme Sato, con reproductor, administrador de archivos, etc recomendable para sistemas touch

Más información

Cargamos La Imagen Creada

Nuestras Imágenes se van a generar en: ~/poky-edison-6.0/build/tmp/deploy/images

Preparar la memoria SD/Pendrive

En este ejemplo vamos a utilizar la memoria sdc montar el sistema operativo en un pendrive o memoria SD, hemos creado la imagen core-image-sato. Primero debemos crear las particiones de booteo fat16 y la partición donde va a estar alojado nuestro SO ext3. para esto podemos crear las particiones con cfdisk, o con alguna opción gráfica como el gparted, vamos a crear una partición de 50mb booteable en la primera partición primaria en fat16 y una del resto del espacio con extencion ext3 debe quedar algo asi:

Dispositivo Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdc1   *          62      137267       68603    e  W95 FAT16 (LBA)
/dev/sdc2          137268     7774207     3818470   83  Linux

si seguimos la opcion del cfdisk podemos formatear los las partciones con Nota:toda esta sección se debe ejecutar como root u añadir sudo adelante de cada instruccion

# mkfs.vfat -F 16 -n "boot" /dev/sdc1
# mke2fs -j -L "root" /dev/sdc2

Ahora creamos dos carpetas temporales donde vamos a montar las particiones y copiar la información necesaria

# mkdir /mnt/root
# mkdir /mnt/boot

Montamos las Particiones creadas

# mount /dev/sdc1 /mnt/boot/
# mount /dev/sdc2 /mnt/root/

Copiamos SO/Creamos el Bootloader

# cd poky-edison-6.0/build/tmp/deploy/images/
# cp MLO-beagleboard /mnt/boot/MLO
# cp u-boot-beagleboard.bin /mnt/boot/u-boot.bin
# cp uImage-beagleboard.bin /mnt/boot/uImage
# tar x -C /mnt/root -f core-image-sato-beagleboard.tar.bz2
# tar x -C /mnt/root -f modules-2.6.37.6-yocto-standard+-r21-beagleboard.tgz

Así como esta todo podemos bootear y cargar el kernel y SO creado con la interfaz serie del beagleboard, pero vamos a crear un script para que esto se haga automático. Creamos un archivo de texto plano dentro de la carpeta de trabajo llamado serial-boot.cmd.

setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'
setenv bootargs 'console=tty0 console=ttyO2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro'
boot

creamos y copiamos el archivo boot.scr Nota: debe estar instalado uboot-mkimage si no lo instalo al inicio del tutorial ejecute apt-get install uboot-mkimage

 
# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n Core_SATO -d ./serial-boot.cmd ./boot.scr

Creamos otro arhivo de texto plano con nombre uEnv.txt, este archivo es el que va a ejecutar el bootloader creado anteriormente

bootenv=boot.scr
loaduimage=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}
mmcboot=echo Running boot.scr script from mmc ...; source ${loadaddr}

Copiamos los archivos creados

# cp boot.scr /mnt/boot/
# cp uEnv.txt /mnt/boot/

Desmontamos ambas particiones y listo

# umount /dev/sdc2
# umount /dev/sdc1

Si se encuentran con problemas es recomendable conectarse al la interfaz serie del beagleboard 115200-N-8

Datos Útiles