Desarollo de aplicaciones embedded usando
GTK+ y GPE
Ariel Rios
GPE Project
[email protected]
Resumen El objetivo de este trabajo es dar una introduccion al desa-
rrollo de aplicaciones para plataformas embedded usando las tecnologas
proporcionadas por GPE y GTK como gua de referencia para el tutorial
impartido del mismo nombre.
1.
Introduccion
Primero se da un repaso a las diversas opciones de distribuciones de Linux y
plataformas de hardware para despues pasar a una instalacion de la distribucion
Familiar Linux para las Ipaq as como del ambiente de desarrollo necesario para
realizar aplicaciones. Despues se pasa a explicar la forma correcta de compilar
programas para la arquitectura arm as como problemas comunes que se encuen-
tran al hacer la cross compilacion y como solucionarlos. Finalmente, se da una
introduccion al desarrollo usando las libreras de GPE , GTK+ para realizar
aplicaciones multimedia as como recomendaciones que se deben seguir al crear
aplicaciones.
2. Linux en plataformas embedded
Linux se ha convertido en la opcion mas viable en sistemas operativos para
servidores y lentamente tambien se ha convertido para entornos de escritorio
gracias a proyectos como GNOME. Ahora, Linux esta siendo usado tambien
como opcion para sistemas operativos en plataformas embedded para productos
comerciales de diversas compañas que incluyen la lnea completa Zaurus de
Sharp, algunos telefonos moviles de Motorola, Datang , Panasonic et al.
Al igual que en el escritorio donde existen diversos proyectos de interfaz de
usuario que incluyen a GNOME y KDE, simil modo existen proyectos basados
en GTK+ y QT para estas arquitecturas.
Troll Tech, la compaña creadora de QT, comercializa QTopia , un ambiente
de escritorio para handhelds y moviles que se encuentra con la mejora posicion en
el mercado mientras que GPE la alternativa basada en GTK+ apenas comienza
a ser usada comercialmente por lo que es necesario la aparicion de programadores
deseos de contribuir en GPE.
3.
Instalacion de Linux en la ipaq
La instalacion de Linux en una ipaq es un proceso sumamente sencillo pero
que debe ser seguido al pie de la letra y con cuidado para evitar convertir nuestra
ipaq en un bonito ladrillo sin mayor utilidad. De inicio debemos contar al menos
con alguna de estas ipaqs:
Una Ipaq de la serie H3600, H3700, H3800, H3900, H5100, H5400 y H5500,
Una Ipaq de las series H51xx, H54xx, H55xx. (estas solamente soportan la
instalacion va serial)
Ademas, sera necesario contar tambien con:
Tarjeta de Memoria Flash y/o
Una computadora corriendo una terminal conectada a la ipaq via puerto
serial.
Se selecciona los archivos deseados para el hardware (elegir GPE) en la si-
guiente direccion:
http://familiar.handhelds.org/releases/v0.8.1/install/download.html
Una vez que se tienen estos archivos el siguiente paso es instalar el bootloader
para lo cual existen dos opciones, usando una conexion serial o instalar usando
una tarjeta Compact Flash. Los pasos a seguir para la ultima son:
Copiar reash.ctl , md5sums y los arhivos de tipo js2 al directorio raz de
la tarjeta cuidando que esta este formateada con vfat.
Insertar la tarjeta en la ipaq.
Apretar para abajo en el joypad y aprietar el boton de reset ubicado en la
parte trasera de la unidad.
Al reiniciar la unidad vericar que la version del bootloader es al menos la
2.21.12 .
Presionar el boton de grabacion (ubicado a un costado de la unidad) para
que se muestre el menu de opciones de imagenes a ser seleccionadas.
Una vez elegida apretar la parte central del joypad seguida de boton de
grabacion .
Esperar pacientemente pues este proceso puede tardar varios minutos.
Reiniciar la unidad apretando la parte central del joypad.
La ipaq cuenta con una cuenta de root con password vaco.
4.
Instalacion de Open Embedded
Open Embedded (OE) es un ambiente de desarrollo que permite apuntar
hacia una gran variedad de devices soportando multiples compilaciones, versiones
y conguraciones. Soporta varias arquitecturas y multiples versiones para estas
e incluye todas las herramientas para poder realizar la cross compilation.
Para poder hacer uso de estas facilidades se deben seguir los siguientes pasos:
-Obtencion de bitbake , la herramienta de compilacion:
svn co svn://svn.berlios.de/bitbake/trunk/bitbake
Congurar su PATH para que las herramientas sean accesibles para correrlo
sin instalarlo o bien instalarlo de esta manera:
./setup.py install {prex=/usr/local {install-data=/usr/local/share
-Obtener open embedded:
bk clone bk://openembedded.bkbits.net/openembedded
-Descomprimir el archivo.
tar xfj ../openembedded-exported-2005-03-01-0700.tar.bz2
-Crear la conguracion local tomando como ejemplo el archive includo en
openembedded/conf/local.conf.sample
-Agregar una variable BBPATH al ambiente indicando el lugar donde se
encuentra bitbaker.
-Compilar paquetes de la siguiente forma:
-bitbake nano (crea un solo paquete)
-bitbake gpe-image (crea una imagen basada en gpe)
-bitbake world (crea paquetes para todo lo q se encuentre en el repositorio)
5. Compilando progamas
En ocasiones debemos compilar paquetes que no se encuentran dentro de
nuestro ambiente OE por multilples razones que incluyen el no poder usarlo.
Normalmente, parecera muy sencillo compilar un programa. Cuando com-
pilamos para nuestros cajas de Linux basta con el conocido congure y make y
quizas sin mas opciones que darle el prejo para la conguracion. Se corren los
scripts y regularmente todo funciona. Desgraciadamente, al compilar para otra
arquitectura esto no siempre sucede con frecuencia y muchas veces el congure
falla miserablemente. Cuando el panico nos inunda los siguientes consejos son
utiles:
Asegurarse que pkg-cong apunte a los archivos pc del device y no a los del
sistema x86.
Correr congure con las banderas de host, prex apuntando hacia donde se
encuentren las libreras de cross compiling:
Asegurarse que las libreras de X que tome sean igualmente las del dispositivo
y no las del x86:
PKG_CONFIG_PATH=/opt/arm/lib/pkgconfig \
./configure --prefix=/opt/arm/ --host=arm-linux \
--x-includes=/opt/arm/include/X \
--x-libs=/opt/arm/lib
Un error comun de los scripts de conguracion es que intentan hacer pruebas
de ciertas opciones en las librerias compilando y ejecutando programas, cosas
que no podemos realizar con la compilacion cruzada. En esos casos eliminar
dichas pruebas del congure y correrlo. En la mayora de los casos no hay
problema.
Instalar usando make install-strip para reducir el tamaño de la aplicacion.
6. Agregando paquetes a Open Embedded
Si ya pudimos compilar algun programa y deseamos agregarlo a nuestro arbol
de OE se deben seguir los siguientes pasos:
-Creacion del archivo que provee la informacion necesaria de un paquete como
manera de compilarse, donde se debe instalar, etc.
-Usar la convencion:
nombre_del_paquete-version
.
-Se pueden usar rutinas para realizar los paquetes. Note que debe indicar su
uso previamente usando inherit.
-Una forma rutinaria de hacer un paquete sera en este orden:
do_fetch
do_unpack
do_patch
do_configure
do_compile
do_stage
do_install
do_package
Existen ademas varias secciones donde se pueden incluir los paquetes. Normal-
mente, el desarrollo para gpe se llevara a cabo bajo gpe.
7. Usando las librerias de GPE para desarollar
Gpe nos da varios widgets que sirven para realizar aplicaciones. En algunos
casos, estos widgets son usados en substitucion de los de GTK+ y en otros,
proveen widgets con funcionalidad de los encontrados en gnome-libs. Se presenta
a continuacion una lista con algunos de los widgets mas usuales.
7.1. Widgets especicos de GPE
GtkDateCombo Seleccion de fecha mediante un combo. La fecha tiene un
formato dependiente del locale usado en la computadora. Provee ademas un
calendario que se utilliza para poder cambiar los valores una una manera sencilla
ademas de que puede ser editado directamente en el widget.
GtkWidget* gtk_date_combo_new
void
gtk_date_combo_set_date
(void);
(GtkDateCombo*,
guint year,
guint month,
guint day);
void
void
gtk_date_combo_clear
gtk_date_combo_week_starts_monday
(GtkDateCombo *dp);
void
gtk_date_combo_ignore_year
(GtkDateCombo*,
gboolean);
(GtkDateCombo*,
gboolean);
GtkSimpleMenu Provee una implementacion sencilla de seleccion de menus
con una interface igual de sencilla de usar.
GtkWidget* gtk_simple_menu_new
void
gtk_simple_menu_append_item
void
gtk_simple_menu_flush
(void);
(GtkSimpleMenu *sel,
const gchar *item);
(GtkSimpleMenu *sel);
GtkTimeSel Widget usado para escribir valores de tiempo. Incluye un campo
de edicion as como un boton que abre una ventana para seleccion del tiempo.
GtkWidget* gpe_time_sel_new
void
gpe_time_sel_get_time
void
gpe_time_sel_set_time
();
(GpeTimeSel *sel,
guint *hour,
guint *minute);
(GpeTimeSel *sel,
guint hour,
guint minute);
gpe icon Provee un conjunto de metodos para mantener conos compartidos y
que se evite la carga de con
Comentarios de: Desarrollo de aplicaciones embedded usando GTK+ y GPE (0)
No hay comentarios