Windows CE and Embedded Linux Evaluation over iPaq Pocket PC Platforms Models 3600

10

Transcript of Windows CE and Embedded Linux Evaluation over iPaq Pocket PC Platforms Models 3600

Evaluación de Windows CE y Linux Embedded sobre Plataformas iPaq Pocket PC Modelos 3600 J. Gabriel González Serna*,О, Azucena Montes Rendón*, Victor J. Sosa Sosa.*, y Juan C. Olivares R.* *Centro Nacional de Investigación y Desarrollo Tecnológico ОCentro de Investigación en Computación E-mail: {jcolivares04c, gabriel, amr, vjsosa}@cenidet.edu.mx Resumen El presente artículo tiene la finalidad de mostrar la viabilidad del sistema operativo Linux en dispositivos PDA, en especial del tipo Pocket PC (PPC). Se muestra la forma de instalar Linux en una PPC. Luego se muestra el estado de arte actual de esta tecnología. Después se realiza una evaluación y comparativa de Linux vs. Windows CE (el sistema de facto en las PPC). Para finalizar se muestran las conclusiones de esta investigación y se dan las pautas para futuras investigaciones. Palabras claves: Linux, Pocket PC, Windows CE, PDA, Palm. 1. Introducción Linux es un sistema operativo ampliamente utilizado en una gran diversidad de dispositivos de cómputo. Uno de los sectores informáticos con más amplio crecimiento en nuestros días corresponde a los dispositivos móviles, en especial a equipos del tipo PDA. Existen dos tipos principales de equipos PDA en el mercado: los basados en plataforma Palm OS (Palm, Handspring Treo, Sony Clié, entre otros) y los basados en Pocket PC (HP iPAQ, Dell Axim, Casio Cassiopedia, etc.). Según un estudio realizado por gartner[1], los dispositivos PPC se perfilan como los dispositivos que dominarán el mercado de PDA en el futuro inmediato. Los dispositivos Pocket PC utilizan una versión especial del sistema operativo Windows CE, el cual es una implementación de las APIs de Windows 32 para dispositivos con capacidades de cómputo limitadas. A la combinación de Windows CE con características de hardware especificadas por Microsoft, se le denomina plataforma PPC. Las plataformas PPC existentes en el mercado corresponden a las versiones 2000, 2002, Windows Mobile 2003 y está próxima en aparecer Windows Mobile 5. Se puede decir que un equipo de cómputo que no cuente con el sistema operativo Windows CE no se le puede denominar por sí solo PPC. Para realizar este trabajo de investigación, se utilizó una Pocket PC muy difundida en el mercado: la Compaq (ahora HP) iPAQ modelo H3630. Este modelo cuenta con la versión 2000 de PPC (Windows CE 3.0). Además cuenta con un microprocesador StrongARM 1110 con 32 Mb de ROM y 16 de RAM. Se realizaron pruebas de manejo y desempeño de las aplicaciones

más populares (Pocket Office), así como también se realizaron pequeños programas en distintas herramientas de programación tales como eMbedded Visual Tools (eMbedded Visual C++ y eMbedded Visual Basic), Visual Studio .NET (C# y Visual Basic .NET) utilizando .NET Compact Framework. También se programó en Java utilizando la especificación Personal Java. La máquina virtual de Java utilizada fue CrEme 3.1. El objetivo fundamental de estos desarrollos es simplemente mostrar y tener un panorama general de las herramientas (compiladores y emuladores) que se pueden utilizar para la creación de programas en esta plataforma (ver figuras 1 y 2). Figura 1. Programación en eMbedded Visual Tools 3.0 (Basic y C++) Usando el Emulador de la Plataforma PPC 2000. Figura 2. Programación en C# (Visual Studio .NET) en Emuladores de PPC 2002 y PPC2003 (Windows Mobile).

2. Instalación de Linux Linux se ha migrado a una gran diversidad de microprocesadores entre los que destacan los microprocesadores ARM (StrongARM, Xscale, etc.), MIPS y SH (SH3, SH4). Dichos microprocesadores son los más utilizados en dispositivos móviles del tipo PPC. Gracias al apoyo de desarrolladores de software libre así como de la participación de empresas importantes de hardware y universidades a través del mundo, ha sido posible obtener una implementación de Linux para plataformas PPC. Estas implementaciones de Linux, reciben el nombre de distribuciones empotradas (Linux embedded). Existen una gran de diversidad de estas distribuciones, la más importantes corresponden a los proyectos Familiar, Intimate, Qtopia, OpenEmbedded, Pocket Linux, entre otros. La distribución más utilizada y la cual se instaló, corresponde a la distribución Familiar en su versión 0.8.2. Para instalar Linux se deben obtener las imágenes del sistema operativo ya compilado o en su defecto el código fuente para crear la imagen, para ello se necesita configurar un compilador cruzado. Se eligió obtener las imágenes ya compiladas debido a que son más fáciles de instalar. Las imágenes pueden obtenerse de [2]. Sólo es necesario conocer el modelo de la PPC (para saber si existe soporte para ese equipo) y el tipo de instalación a realizar. Existen tres tipos de instalación: bootstrap, OPIE y GPE. Bootstrap permite tener instalado una versión mínima de Linux, no cuenta con interfaz gráfica por lo que debe ser accedida desde una terminal remota. Es útil para desarrolladores ya que consume poco recursos del sistema. GPE es una interfaz gráfica basada en cierta medida en GNOME, por lo que se pueden realizar programas sin tener que pagar por una licencia; además cuenta con múltiples herramientas y un entorno fácil de usar. OPIE es una interfaz gráfica basada en Qtopia (librerías Qt), cuenta con licencia GPL y un buen número de desarrollos. La ventaja principal de OPIE radica en el hecho de que es una interfaz de usuario muy completa ya que cuenta con una gran cantidad de herramientas para la gestión de la información personal (PIM por sus siglas en inglés) y una interfaz que no le pide nada a cualquier otra interfaz para PDA. Para esta investigación se utilizó OPIE por ser en términos generales, la que brinda mayores prestaciones. Una vez seleccionado nuestro modelo de PPC y el tipo de interfaz gráfica, obtendremos un archivo .tar que es necesario descomprimir. Una vez descomprimido, el primer paso consiste en crear el nuevo cargador de arranque. El cargador de arranque es el software que permite cargar en memoria una imagen del kernel de un sistema operativo para posteriormente ejecutarlo. El cargador que viene de manera predetermina en las PPC (llamado formalmente parrot) está muy limitado, ya que solo permite cargar imágenes de kernel de sistemas operativos basados en Windows CE. Para instalar el nuevo cargador de arranque se deben copiar los archivos BootBlaster.exe, bootldr.bin y md5sums a la PPC, los cuales corresponden al programa que permite instalar el nuevo cargador de arranque, la imagen del cargador de arranque y la suma de verificación respectivamente. El nombre de los archivos varían en su parte final poniendo como postfijo el modelo del equipo y la versión del archivo. En este trabajo por convención se excluirán dichos postfijos para hacer más general el proceso de instalación. También se debe recordar que existen muchas formas de transferir archivos de un equipo remoto a las PPC. Estas formas corresponden a la ejecución de programas de sincronización (ActiveSync en Windows, Synce en Linux), respaldos en medios de almacenamientos externos como memorias

CompactFlash y SD, así como a través de interfaces de red (v.g. Ethernet, WiFi, Bluetooth, etcétera). Una vez transferidos los archivos a la PPC. Se debe ejecutar el programa BootBlaster y el primer paso (opcional) a realizar consiste en obtener una imagen del cargador de arranque original, para ello se debe acceder al menú Flash > Save bootldr .gz Format. El segundo paso (también opcional) consiste en obtener la imagen del sistema operativo original, en este caso se accede a Flash > Save Wince .gz Format. Tanto el paso uno como el dos son necesarios para restaurar posteriormente la PPC a su forma original. Para ello, los archivos obtenidos deben ser respaldos en un dispositivo diferente a la PPC. Los tiempos de duración de los pasos uno y dos varían dependiendo del tamaño de las imágenes del sistema operativo y cargador de arranque. Una vez realizada las copias de seguridad del cargador de arranque y de la imagen del sistema operativo, se procede a la instalación del cargador de arranque. Para este paso se deben tomar en cuenta varias consideraciones importantes. El cargador de arranque se encuentra almacenado en las primeras direcciones de la memoria ROM por lo que, sino se realiza de manera adecuada podría dejar sin funcionar al dispositivo. Al tratarse de una memoria ROM del tipo Flash, su contenido se puede borrar mediante energía eléctrica a través de determinado voltaje. Para ello se recomienda que la PPC esté conectada a la energía eléctrica. La PPC deberá estar conectada a un sistema sin interrupción de corriente (UPS, No break) y la batería deberá estar cargada al 100%. Todas estas recomendaciones se realizan con la finalidad de evitar que se produzcan cambios drásticos en el voltaje de entrada, que puedan ocasionar daños en el sistema. Al cumplir con estas consideraciones realizamos la instalación del cargador de arranque. Para ello se accede al menú Flash > Program, seleccionamos la imagen del nuevo cargador de arranque (la cual ya debe de estar en el sistema puesto que se copió en el paso anterior). En este punto, se realiza el proceso de borrado y grabado de las direcciones de memoria donde se localizará el cargador de arranque. Al finalizar el proceso el nuevo cargador de arranque se mostrará en pantalla. Hasta este punto es posible arrancar el sistema operativo predeterminado. El único problema que se presenta consiste en que la información guardada en RAM durante un reinicio se pierde, por lo que se hace necesario un respaldo de dicha información. Figura 3. Instalación del Nuevo Cargador de Arranque en la PPC.

Al contar ya con el cargador de arranque, el siguiente paso consiste en instalar la imagen del sistema operativo, en este caso opie.jffs2. Existen diversas formas de instalar la imagen, las cuales son a través de una conexión serial y de una memoria CompactFlash. La forma más extendida es a través del puerto serial, y fue la forma en como se instaló Linux. Para realizar la conexión a través del puerto serie es necesario configurar una terminal, en el caso de Windows se puede utilizar el programa HyperTerminal y en el caso de Linux existen opciones como minicom y kermit. La configuración de la Terminal serial consiste en elegir el puerto donde esta conectado el cable o cradle de la PPC (COM1, COM2, etc. en Windows y /dev/ttyS0, etc. en Linux) con los parámetros 8N1 (8 bits de transmisión, sin paridad y un bit de parada) además de sin control de flujo y una velocidad de transmisión de 115200 baudios. Para acceder a la terminal se debe reiniciar la PPC manteniendo presionado el botón de dirección hacia abajo. Luego se elige la opción de Serial Boatloader Console. Una vez realizado esto, se debe estar conectado a través de nuestra terminal serial en el equipo remoto. Si la configuración y la conexión han tenido éxito, se mostrará en la terminal el siguiente prompt: boot>. Desde aquí se ejecutará la instrucción load root, la cual pedirá que el usuario introduzca la imagen del kernel a instalar, por lo que a través de nuestro programa terminal enviaremos el archivo opie.jffs2. De manera predeterminada la transmisión de archivos se realiza a través del protocolo Y MODEM, pero puede ser modificada a X o Z MODEM. La transferencia del archivo tardará varios minutos por lo que se debe ser paciente. Una vez terminada la transferencia de la imagen, se copiará en memoria ROM la nueva imagen. Al finalizar este proceso aparecerá el prompt boot>, en donde se ejecutará la instrucción boot lo cual iniciará el sistema Linux. Al iniciar el arranque la primera vez, el sistema tardará unos momentos mientras configura el sistema. Pedirá al usuario que configure la contraseña de root, la hora y fecha del sistema así como otras opciones de arranque. También es posible en algunos modelos instalar la imagen del kernel de Linux utilizando una memoria CompactFlash. Para ello debemos transferir a la memoria los archivos siguientes: la imagen del kernel (en nuestro caso opie.jffs2), el archivo de suma de verificación (md5sums) y finalmente el archivo de opciones reflash.ctl. Para realizar el grabado de la nueva imagen, desde el cargador de arranque se selecciona el botón correspondiente a la opción CF Reflash Tool y se reinicia el sistema. Se deja de presionar el botón hasta que aparezca un menú emergente con la imagen a instalar, se selecciona dicha imagen y automáticamente se inicia el proceso de quemado de la memoria ROM. Este procedimiento de instalación es mucho más rápido debido a que la velocidad de transmisión de la imagen a la memoria es de unos cuantos segundos en comparación con el puerto serie. La desventaja es que se necesita tener una tarjeta de memoria CompactFlash. Para restaurar la PPC a su forma original se seguirá el siguiente procedimiento. Desde el cargador de arranque se debe seleccionar la opción Serial Boot Loader Console. Una vez establecida la conexión desde una terminal en modo serial (explicada en este apartado) y una vez mostrado el prompt boot >, se debe introducir el comando load root. Este comando pedirá una imagen de sistema operativo, en este caso debemos introducir la copia de respaldo de Windows llamada Wince.gz. Se realizará un nuevo proceso de borrado y grabado de la imagen de este kernel. Al terminar el proceso habremos obtenido la imagen original de la PPC. Hasta este punto, se cuenta con el cargador de arranque del proyecto Linux. Para restaurar el cargador de arranque original de la PPC debemos instalar y ejecutar el programa BootBlaster, seleccionamos la opción Flash > Program. El programa nos pedirá que introduzcamos la nueva imagen del cargador de arranque por lo que seleccionaremos Bootldr.gz. Al finalizar el proceso debemos realizar un hard-reset (botón en la parte inferior izquierda de la PPC), esperamos unos segundos sin dejar de

presionar el botón pad de la izquierda. Luego iniciamos la PPC. Se debe mostrar un perico al cargar la primera vez que se realiza este proceso. Se debe tomar en cuenta que este proceso y en general un hard-reset, borran el contenido de la memoria RAM. Existe la posibilidad de instalar Linux y Windows CE en el mismo equipo. Para ello se deberá instalar el cargador de arranque de la forma mencionada en este apartado. Posteriormente se deberá copiar la imagen del kernel denominada zImage en una memoria CompactFlash de por lo menos 64 MB (se sugiere una tarjeta de 128 MB o más). Dicha imagen se deberá ubicar en un directorio llamado boot, al igual que los archivo initrd y params. La tarjeta CompactFlash deberá tener formato VFAT. Se deberá obtener una imagen binaria completa de todo el sistema Linux, llamado linux.img en el directorio raíz de la tarjeta. Al iniciar el cargador de arranque se deberá seleccionar la opción Boot VFAT HDD/CF, el sistema empezará a cargar la imagen y se podrá iniciar Linux. Este procedimiento presenta algunos problemas ya que no existen los archivos necesarios para todas las plataformas, sólo existen algunos archivos por lo que para obtenerlos es necesario compilar el kernel. El procedimiento de compilación del kernel requiere configurar las herramientas de desarrollo de forma cruzada. Hasta el momento esto se realiza de forma manual configurando demasiados scripts. En algunas ocasiones es necesario particionar la memoria para que tenga particiones del tipo VFAT para el arranque y ext2 para montar el sistema de archivos principal. Después de realizada la instalación de Linux, se realizó una evaluación del software de gestión de información principal, así como herramientas y entornos de desarrollo. Se utilizaron como herramientas de programación el compilador cruzado gcc para plataforma ARM Linux, así como también se realizó la verificación e instalación de máquinas virtuales de Java como kaffe, blackdown y jikes. Figura 4. Acceso a Linux en la PPC desde una Terminal en Modo Serial.

Figura 5. Ejemplo de la Interfaz Gráfica Opie Corriendo un Programa de Prueba Realizado en C Cruzado (arm-linux-gcc). 3. Ventajas Se pueden observar que dentro de las características principales que presenta Linux con respecto a Windows CE destacan los siguientes: • Cuenta con una versión del kernel muy funcional, gracias a herramientas como BusyBox se tienen los comandos básicos de una consola de Linux. Esto conlleva a que el usuario tenga un mayor control sobre el hardware del equipo y pueda realizar actividades que de forma natural no hubiera podido realizar. • La gran mayoría del software cuenta con licencia GPL, lo cual permite que el software sea gratuito. Además al ser software libre se cuenta en la mayoría de los casos con el código fuente para su posterior modificación. • Al contar con la mayoría de las utilerías básicas del sistema se pueden programar aplicaciones usando herramientas conocidas en entornos Linux. Los entornos de desarrollo son gratuitos en la mayoría de los casos. 4. Desventajas Las principales desventajas que presenta tener Linux en dispositivos Pocket PC corresponden a los siguientes: • Al tener un kernel muy completo el proceso de arranque es más lento.

• La instalación de Linux aunque si bien no es difícil, requiere de ciertos conocimientos de computación por lo que, para un usuario promedio, el proceso de instalación está fuera de su comprensión. • No se cuenta con un buen soporte de hardware para gran diversidad de equipos; es decir, no se ha portado Linux a muchos equipos PPC. Este problema varía de modelo de PPC; por ejemplo, en algunos modelos el sonido no esta disponible o funciona deficientemente. En otros casos el brillo de la pantalla no está bien controlado. El problema es mucho mayor en lo referente a periféricos o dispositivos externos, ya que no cuentan con el soporte adecuado de la mayoría de los fabricantes. • El consumo de energía es mucho mayor ya que existen una gran variedad de servicios y aplicaciones que corren en segundo plano. Estos servicios o demonios consumen energía aún en modo de espera o ahorro de energía. • El espacio del kernel de Linux es mayor por lo que, para modelos antiguos (versión 2000 y 2002), se convierte en un factor crítico, ya que cuentan con poco espacio de almacenamiento y por ende de crecimiento. Para nuestro caso, al tener el sistema con Windows CE, se contaban con más de 15 MB libres para el almacenamiento de programas; mientras que al instalar Linux se contaba con menos de 1 MB. • No existen programas que permitan sincronizar de manera fácil y sencilla la información entre los equipos PPC y los equipos anfitriones. • Las aplicaciones de oficina (PIM) están en forma primitiva, aunque las versiones con las que se cuentan son funcionales. • No existen estándares en lo referente a las aplicaciones con las que se cuentan; por ejemplo, en algunas distribuciones se cuentan con ciertos tipos de paquetes, mientras que en otras no se cuentan. • No existe mucho software en comparación con las distribuciones de Linux para PC. • No existe una interfaz gráfica única, lo que conlleva a que los usuarios inviertan más tiempo cuando conmutan entre distintas aplicaciones. • Las herramientas de programación no cuentan con un IDE integrado, lo que con lleva a más tiempo invertido en el desarrollo. Tampoco se cuentan con emuladores que permitan ejecutar los programas generados. Para verificar que los programas realizan lo que deben de realizar, se deben probar en el dispositivo final directamente. 5. Conclusiones Del estudio realizado se obtuvieron las siguientes conclusiones: • Linux se puede portar a la plataforma PPC y es funcional. Se convierte así en la “tercera alternativa” para dispositivos PDA. • Las distribuciones de Linux para PPC se encuentran en vías de popularizarse, debido a que cada vez se está portando a más dispositivos y solucionando los problemas encontrados. El soporte de hardware crece vertiginosamente. • Linux para PPC no está orientado al usuario final, su enfoque está dado hacia desarrolladores y gente del medio informático, por lo que su uso estará más enfocado hacia clientes corporativos que deseen disminuir costos de propiedad al tener un sistema operativo abierto o deseen crear u obtener software especializado de manera más económica.

• Por defecto, la plataforma PPC cuenta con sistema operativo Windows CE. Esto conlleva a que al comprar un dispositivo de este tipo se adquiera la licencia de su uso. Al instalar Linux en una PPC no se obtendrá un ahorro de monetario. Esto lejos de ser una desventaja permite visualizar que la tendencia es que Linux sea instalado en dispositivos móviles tales como handhelds, PDAs, teléfonos inteligentes, terminales de puntos de venta, cajeros automáticos, etcétera; donde el fabricante de hardware puede ahorrarse dinero al no tener que pagar por una licencia de un sistema operativo propietario. • A pesar de las desventajas mencionadas en este artículo, creemos que la instalación de Linux en esta clase de equipos trae consigo nuevos retos y paradigmas a resolver en el área del cómputo móvil y los sistemas distribuidos. Por ejemplo, con Linux en una PPC se podrían tener aplicaciones interesantes como verdaderos servidores móviles que se estén desplazando constantemente debido a su diminuto tamaño. Otra aplicación interesante consiste en realizar un cluster (agrupación) de dispositivos, esto con la posibilidad de incrementar el poder de procesamiento y teniendo un tamaño menor que algunos tipos de dispositivos [3]. 6. Trabajos Futuros Como trabajos futuros se tiene en mente realizar investigaciones en lo referente a profundizar las herramientas de desarrollo en estas plataformas. Se tiene contemplado realizar una pequeña herramienta en distintos lenguajes de programación tanto para Windows CE y Linux para PPC, para al finalizar determinar que lenguaje o herramienta de programación es más apropiado para la creación de un sistema de cómputo móvil. Otro trabajo futuro consistirá en una investigación del tipo de recursos más utilizados por los usuarios en una PPC mientras se encuentran en una sesión de navegación Web. El objetivo de esta investigación será determinar la frecuencia con que los recursos son accedidos, así como determinar la capacidad de almacenamiento y procesamiento requerida por dichos recursos. Toda esta información será requerida para un proyecto posterior que permitirá diseñar e implementar un sistema que permita la navegación de sitios Web a pesar de que los usuarios no se encuentren conectados o sufran desconexiones frecuentemente. Para ello se deben acaparar recursos en el cliente móvil tratando de predecir los posibles recursos que el usuario podría utilizar. Referencias [1] Gold Jack, “Pocket PC: An Evolutionary Advance Infrastructure Strategies, Web & Collaboration Strategies”. http://www.gartner.com/. Febrero de 2005. [2] Proyecto Familiar. http://familiar.handhelds.org/. Última consulta mayo de 2005. [3] First Pocket PC "supercomputer". http://www.windowsfordevices.com/articles/AT7109264078.html. Última consulta mayo de 2005. [4] Herramientas BusyBox. http://www.busybox.net/. Última consulta mayo de 2005. [5] Proyecto intimate. http://intimate.handhelds.org/. Última consulta mayo de 2005. [6] Linux on the iPAQ. http://www.ipaqlinux.com/. Última consulta mayo de 2005.

[7] OPIE (Open Palmtop Integrated Enviroment). http://opie.handhelds.org/. Última consulta mayo de 2005. [8] GPE (GNU Palmtop Enviroment). http://gpe.familiar.org/. Última consulta mayo de 2005. [9] Qtopia. http://www.trolltech.com/products/qtopia/. Última consulta mayo de 2005. [10] Proyecto OpenEmbedded. http://www.openembedded.org/ . Mayo de 2005. [11] Tomás Navarrete Gutiérrez. “Linux en dispositivos de cómputo móvil”. Monografía para obtener el grado de Ingeniero en Sistemas Computacionales. Instituto Tecnológico de Morelia. 2004. [12] Guillermo Prieto Daza. “Metodología para el desarrollo de aplicaciones en la plataforma: Linux PDA”. Tesis presentada para la obtención del grado de Maestro en Ingeniería (Tecnologías de la Información). Centro de Alta Dirección en Ingeniería y Tecnología. Universidad Anáhuac. México. Enero de 2005. [13] Manrique López de la Fuente José “¡¡ Hay un pingüino en mi bolsillo!!“. AsturLinux. http://www.asturlinux.org/~jsmanrique/odblinux.html. Julio de 2002.