July 16, 2009

Programación en Palm OS

(Soon in english...)

Preambulo:

Tutorial diseñado para Windows XP y el kit "Garnet OS Development Suite".

Usualmente uso UBUNTU, pero me resultó, por distintas razones, un poco díficil la puesta en marcha en ese sistema operativo. Eventualmente, en un futuro dispondré de tiempo para cambiarme. Además, lo que quiero por ahora es comenzar a programar lo antes posible.

Objetivo:

Compilar y ejecutar una aplicación para palm OS, desde cero.


Introducción

Desde hace tiempo comencé a usar una Palm Zire 31 que mi viejo no ocupaba y decubrí el fantastico mundo de las PDAs. Sim embargo, no siempre encontraba aplicaciones para cubrir mis necesidades por lo que me propuse investigar y así poder generar algún programita.

En esta búsqueda descubrí que Palm OS fue adquirida hace tiempo por ACCESS, por lo que las API, documentacion y herramientas deben adquirirse desde su página desde AQUI (hay que registrase).

Otro punto importante, es que el sistema operativo Palm OS, ahora se denomina Garnet OS, por lo que para que no existan confusiones deben asumir esos dos nombres como sinónimos.


PASO 1: Conseguir las herramientas

Lo primero, es instalar el kit "Garnet OS Development Suite" lo pueden bajar de AQUI.

Nota 1: Perdí mucho tiempo bajando todo lo de la página http://www.accessdevnet.com para descubrir que esto era todo lo que necesitaba, por lo que les recomiendo que no se mareen tanto y solo bajen Garnet OS Development Suite que es todo lo que necesitan.

Nota 2: No olviden registrarse antes.



PASO 2: Instalación

Luego, instalen ese archivo que viene con un emulador, Eclipse IDE, simulador, Cygwin.

Nota 3: Deben desinstalar cualquier cygwin previo que tengan. Como no se desintala automaticamente deben borrar todo manualmente y eliminarlo del registro.
Aquí explican como hacerlo en How do I uninstall all of Cygwin? (para acceder al registro desde windows vayan a INICIO->Ejecutar->ingresar "regedit").


Una vez instalado tendrán las siguientes herramientas mostradas en la figura más el cygwin.




Paso Opcional:

Aún no me queda muy claro como el "Garnet OS Development Suite" se comunica con los complidores necesarios incluidos en el Cygwin por lo que, me dí la tarea de incluir el directorio /bin del Cygwin al path de windows para que el compilador gcc, etc. fuesen visibles desde cualquier parte de windows. Además, útil si quiero compilar cualquier programa C pequeño sin el IDE desde cualquier parte de windows.

En "Mi PC" click botón derecho mouse, luego presionan en "Propiedades". Pestaña "Opciones avanzadas" -> "variables de entorno" -> "Variables del Sistema" -> doble click a la variable "path" -> agregan ";C:\PalmOSCygwin\bin;" como se ve en la figura de acontinuación.





Un poco de teoría...

Yo esperaba que el "Garnet OS Development Suite" fuese más simple de utilizar, es decir, insertar codigo, crear un makefile, compilar y ejecutar (lo siento, soy muy purista). Sin embargo, es un poco más complejo que eso, pues tiene una serie de opciones que supongo (eso sólo el tiempo lo dirá) que harán más fácil la tarea a la hora de diseñar.

Resulta, el "Garnet OS Development Suite" (GODS) está pensado para tres tipos de formas de diseño:

-Palm OS 68K Applications
Es la forma más básica y da mayor compatibilidad en dispositivos Palm OS, pues utiliza las 68k API, que son las API para Palm OS 4 versiones anteriores de Palm OS.

-PACE Native Objects (PNO)
Es para usuarios más avanzados que quieren aprovechar al máximo las CPU tipo ARM, creando subrutinas especificas para el procesador.

-Palm OS Protein Applications
Utiliza nuevas Protein APIs que son utilizadas por palm nuevas del tipo Palm OS Cobalt y posteriores.

Además, se debe considerar que GODS entrega dos opciones para hacer el MAKEFILE:

-Managed makefile
Genera y modifica el archivo makefile de manera dinámica.

-Standard makefile
Genera un archivo makefile generico y es el usurio quien debe modificarlo para sus necesidades.

Les recomiendo que lean la docuemtación al respecto que pueden encontar aquí, donde se explica las diferencias entre estas dos con más detalles.

Por lo anterior, utilizaremos la opción "Managed Make 68K C/C++ Proyect" para nuestro primer intento.


PASO 3: Utilizar el Wizard

Vamos a File -> New.. -> Proyect -> Garnet OS Development -> Managed Make 68K C/C++ Proyect



1.- Insertamos el nombre del proyecto y luego Next>.



2.- Definimos las opciones especificas para la aplicación y luego Next> (Cambiar el Creator ID, ponerle 1000, por ejemplo).




3.-Seleccionar una plantilla de codigo. En esta parte utilizaremos la opción simple application para generar un Hello World




4.-Luego, Finish. (Si tienen otro proyecto abierto aparecerán en el cuadro Referenced C/C++ Proyects, en ese caso no lo tomen en cuenta)


5.-Finalmente, obtendrán el codigo necesario para construir un programa Hello World!.



PASO 4: Compilar y probrarlo en el Garnet OS Simulator.

1.-Compilamos nuestro codigo en el menu Proyect -> Build All. Si todo sale bien, con esto se crearán de manera automatica una carpeta debug que contendra el archivo .prc.

2.- Lo eje
cutamos en el menu Run -> Run... con lo que aparecerá una ventana con algunas opciones que nos ayudará a decidir donde correrá el programa.


3.- Hacemos doble click en Garnet Os Application.

4.- En la etiqueta Proyect marcamos el recuado del proyecto que queremos ejecutar. En este caso hello.



5.-
En la etiqueta Target seleccionamos el dispositivo en el cual se instalará nuestro archivo .prc. En este caso escogeremos, el Garnet OS Simulator, pero uds. pueden escoger el que deseen.


6.- Si no han abierto previamente el simulador aparecerá una alerta indicando que se está iniciando el simulador.

Nota 4: Si no han nunca antes el simulador les aparecerán opciones para configurarlos como, por ejemplo, insetar un archivo con una ROM simulada.



7
.- Finalmente, presionan OK en el cuadro de alerta y si todo sale bien se correra el programa en su simulador.




3 comments:

  1. No sabes lo que me ha costado encontrar un post sencillo y claro como el tuyo para poder compilar algo para mi zire 21. Gracias por tan magnífico tutorial.

    ReplyDelete
  2. No era tan complejo, pero había que buscar bastante para entender, pues con el cambio de empresa, cambio tambien SDK bastante, para mejor o para peor, no lo sé, pero por lo menos espero haberte ahorrado un buen par de horas.

    ReplyDelete
  3. Gracias tio molavec!

    ReplyDelete