Configuración de la plataforma Beagleboard para usar Opencv

Herramientas:

Beagleboard www.beagleboard.org con hub usb, tarjeta de red preferiblemente Ethernet, teclado y ratón.
Cpu con linux "la la guia está probada con 9.10 karmic y 10.40 jauny"
SD preferiblemented de mas de 2GB de capacidad, se usó una marca Ridata y una Kingston. la beagle es bastante compatible, sin embargo seria bueno revisar el manual antes de comprarla


Los pasos de configuración del SO:

Para instalar la distribución de linux, angstrom. Tomado de : "http://pixhawk.ethz.ch/tutorials/omap/boot_from_sd_sdhc"

Dar formato a la SD

lo primero que hay que hacer es formatear la memoria SD de tal manera que pueda arrancar el SO de ella asi:
Insertar la SD en la máquina, con lo que la SD es detectada y automáticamente montada por linux. Supongamos que fue montada en "/media/misd", para ver en que dispositivo se lista la SD en "/dev/sdX" abrir una terminal y poner:
mount
"o en su defecto"
dmesh | tail
 
y debe salir una linea así:
/dev/mmcblk0p1 on /media/misd
notese que el sistema ve a las sd o discos como sda, sdb o como mmcblk0. ahora vamos a desmontar la sd
sudo umount /media/misd
Para el particionado se va a usar fsdisk, es mas sencillo y con interfaz de usuario muy intuitiva a continuación se listan las opciones a seguir en fdisk
para abrir: "nótese que no se usó la partición mmcblk0p1 sino el disco mmcblk0, de la misma manera si su dispositivo por ejemplo es sdc1 use solamente sdc"
sudo fdisk /dev/mmcblk0
oprimir "p" y enter. sale:
Disco /dev/mmcblk0: <span class="nu0">7948</span> MB, <span class="nu0">7948206080</span> bytes
81 cabezas, 10 sectores/pista, <span class="nu0">19165</span> cilindros
Unidades = cilindros de <span class="nu0">810</span> * <span class="nu0">512</span> = <span class="nu0">414720</span> bytes
Identificador de disco: 0x000882ca
 
     Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/mmcblk0p1                 11    <span class="nu0">19166      7757824</span>   b W95 FAT32
anotar el primer número en este caso 7948206080 que depende del tamaño de la SD
Borrar esta partición presente en mmcblk0p1

oprimir "d" y enter. Sale:
Se ha seleccionado la partición 1
Orden (m para obtener ayuda):


ir a modo experto

oprimir "x" y enter y después "h" y enter. Sale:

Orden avanzada (m para obtener ayuda): h
Número de cabezas (1-256, valor predeterminado 255):


oprimir "255" y enter después oprimir "s" y enter y luego "63" y enter. Sale

Número de cabezas (1-256, valor predeterminado 255): 255
Orden avanzada (m para obtener ayuda): s
Número de sectores (1-63, valor predeterminado 63): 63
Atención: estableciendo desplazamiento de sector para compatibilidad con DOS


el número de cilindros debe cumplir:
cilindros = bytes de la SD / cabezas / sectores / tamaño del sector (512))
en nuestro caso
bytes de la SD =<span class="nu0">7948206080
cabezas=255
sectores=63
tamaño del sector=255</span>
 
calcullando serian
7948206080 / 255 / 63 / 512 = 966.314348
 
osea se toma la parte entera que corresponde a 966

oprimir "c" y enter

En espe paso ponemos el número calculado anteriormente

oprimir "966" y enter NOTA: solo en el caso de ejemplo

oprimir "r" y enter
para verificar oprimir "p" y enter
Disco /dev/mmcblk0: <span class="nu0">7948</span> MB, <span class="nu0">7948206080</span> bytes
255 cabezas, 63 sectores/pista, <span class="nu0">966</span> cilindros
Unidades = cilindros de <span class="nu0">16065</span> * <span class="nu0">512</span> = <span class="nu0">8225280</span> bytes
Identificador de disco: 0x000882ca
ya solo basta crear las dos particiones:
para la primer apartición
oprimir "n" y enter
oprimir "p" y enter
oprimir "1" y enter y enter "usar opción por default"
seleccionar el cilindro # 50
oprimir "+50c" y enter
para la segunda partición
oprimir "n" y enter
oprimir "p" y enter
oprimir "2" y enter y enter "usar opción por default cilindro 52 en este caso"
y de nuevo oprimir enter y usar el último cilindro por defecto "699 en nuestro caso"

para ver todos los cambios oprimir p y enter sale:
Disco /dev/mmcblk0: <span class="nu0">7948</span> MB, <span class="nu0">7948206080</span> bytes
255 cabezas, 63 sectores/pista, <span class="nu0">966</span> cilindros
Unidades = cilindros de <span class="nu0">16065</span> * <span class="nu0">512</span> = <span class="nu0">8225280</span> bytes
Identificador de disco: 0x000882ca
 
Disposit. Inicio  Comienzo      Fin      Bloques  Id  Sistema
<span class="sy0">/</span>dev<span class="sy0">/</span>mmcblk0p1          <span class="nu0"> 1       51      409626   83</span>  Linux
<span class="sy0">/</span>dev<span class="sy0">/</span>mmcblk0p2          <span class="nu0">52      966     7349737</span>+  <span class="nu0">83</span>  Linux
para realizar los cambios
oprima "w" y enter
para formatear la partición de inicio de la SD:
<span class="kw2">sudo</span> mkfs.msdos <span class="re5">-F</span> 32 <span class="sy0">/</span>dev<span class="sy0">/</span>mmcblk0p1 <span class="re5">-n</span> BOOT
para formatear la partición de datos de la SD:
<span class="kw2">sudo</span> mkfs.ext3 <span class="re5">-L</span> LINUX <span class="sy0">/</span>dev<span class="sy0">/</span>mmcblk0p2
 
ya está lista la SD para trabajar, solo basta copiar los archivos a la memoria, para esto, retire la SD del PC y vuelvala a poner si todo está bien linux debe montarla como BOOT y como LINUX,

copiar los archivos del SO a la SD

para este paso bastaen un principio con descargar los archivos de la pagina "http://www.angstrom-distribution.org/demo/beagleboard/"
primero descargar los archivos:

MLO
u-boot.bin
uImage "notese la i mayuscula"

estos deben descargarse al disco duro del PC y ser copiados y pegados en este orden uno por uno a la partición. puede usar el gestor de ventanas. RESPETE EL ORDEN Y LOS NOMBRES CITADOS,DE OTRA MANERA NO FUNCIONA.
listos estos 3 archivos, solo falta poner la imagen de linux,
puede usar las facilmente la consola para esto así:
wget http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2
sudo tar xjfv *2010.3-beagleboard.rootfs.tar.bz2 -C /media/LINUX
con esto último ya se cuenta con una imagen lista para usar de linux Angstrom en la beagleboard, también pueden archivos generados por narcissus "http://www.angstrom-distribution.org/narcissus/" o compilar su propia distribución basada en angtrom siguiendo los pasos en "http://pixhawk.ethz.ch/tutorials/omap/openembedded_bitbake_installation"

Instalar opencv en Angstrom

Primero, iniciar el SO recién instalado configurando las cuentas de usuario y demás, en este paso se contaba con internet en la plataforma por medio de DSL por Ethernet.
los pasos son los siguientes:

manual inspirado de "http://nb-no.facebook.com/note.php?note_id=135375324361" , de "http://markmail.org/message/yck3o5a3hlvhbbtc" y de
"http://permalink.gmane.org/gmane.comp.hardware.beagleboard.user/1744"

ffmpeg ya se encuentra instalado por defecto en la imagen de ejemplo

actualizar paquetes:
su
opkg update
opkg install task-native-sdk cpp gccmakedep
opkg install python-distutils python-compile python-compiler python-devel
opkg install ffmpeg-dev
opkg install opencv
ya está listo para usar si desea puede instalar también los paquetes gcc, g++ y make
el siguiente es un ejemplo de script para compilar multiples fuentes estos deben guardarse en un archivo de texto llamado "nombre_del_archivo.sh" y ejecutados como se explica mas adelaqnte:
#!/bin/sh
echo "compilando..."
export LD_LIBRARY_PATH=/usr/local/lib
echo `pkg-config --cflags opencv`
echo `pkg-config --libs opencv`
g++ `pkg-config --cflags opencv` -ggdb archivo1.c archivo2.c archivoenc++.cpp -o nombredelejecutable `pkg-config --libs opencv`
echo "termina de compilar"
 
en el script anterior puede usarse gcc en vez de g++ si solo cuenta con archivos en C. El modo de uso es el siguiente:
Después de configurar el script a su necesidad y suponiendo que se llame compile.sh:
sh ./compile.sh

Un script para compilar un solo fuente:
#!/bin/sh
echo "compilando..."
export LD_LIBRARY_PATH=/usr/local/lib
echo `pkg-config --cflags opencv`
echo `pkg-config --libs opencv`
gcc `pkg-config --cflags opencv` -g -o $2 $1 `pkg-config --libs opencv`
echo "termina de compilar"
 
el modo de uso es el siguiente:
suponiendo que el script se llama compilame.sh:
sh ./compilame.sh nombre_del_fuente.c nombre_del_ejecutable
Con esto terminan el manual de uso de Opencv en la beagle board, dudas comentario sugerencias y felicitaciones puede enviarlas a

calderonf@gmail.com
Ing. Francisco Carlos Calderón