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
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
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
volver a Tutorial de Yocto Project
— Francisco Espain 2012/10/03 20:07