Google+ Room Technology: ANDROID
Mostrando entradas con la etiqueta ANDROID. Mostrar todas las entradas
Mostrando entradas con la etiqueta ANDROID. Mostrar todas las entradas

martes, 16 de abril de 2013

¡Gracias por esperar!

Problemas Técnicos. 


¡Hola a todos los lectores del blog! Bueno últimamente no he subido mas contenido por que el trabajo y la universidad prácticamente están acabando con mi vida (literalmente), pero quejándome no voy a solucionar nada. Ahora el problema de que las entradas anteriores no estén disponibles de debe a un tremendo error mio, les cuento: Mi nuevo juguete, un celular Android SIII Mini, lo sincronice con mi cuenta de Google y por lo tanto había álbumes de Picassa que estaban en el celular pero que no estaba a gusto con ellos (no quería que estén en mi celular esas fotos) por lo que tome la "brillante idea" de borrar esos álbumes de mi celular y como estaban sincronizado con Google las fotos de borraron también de la cuenta en la nube y para hacer todo mucho mas caótico las fotos del blog estaban en esos álbumes, por lo que ya se imaginan las consecuencias de la  "inteligente decisión ".

Ahora estoy haciendo todo lo posible para subir nuevas imágenes y poner al día el blog nuevamente, por lo que pido su colaboración y paciencia. 


Edison Fabricio
Bloguero





sábado, 8 de diciembre de 2012

Mini2440:SO Android, Jugando con el Kernel.


Uno de las sistemas operativos que soporta el Mini2440 en los cuales  se puede gestionar los recursos de hardware y proveernos servicios de programas de aplicación es Android que esta basando en el kernel de Linux y diseñado especialmente para dispositivos que posean una pantalla táctil.

Uno de los primeros problemas que me encontré al querer instalar Android en el Mini2440 fue que los distribuidores del dispositivo no habían compilado el kernel para soportar mi LCD (dispongo de una LCD W35 240x320),  por lo que no tuve otra opción que googlear un par de noches que estaba libre para poder solucionar mi inconveniente. Por suerte la ayuda no me fue esquiva y encontré la solución, aunque no de un modo muy especifico (me toco unir varias experiencias de otros usuarios). Toda esta ayuda la encontré en los foros de soporte técnico de FriendlyArm (Clic Aqui). Si quieres saber algo mas o tienes una duda, no lo dudes pide apoyo a la comunidad de desarrolladores.

Ahora si tu también tienes un problema similar o quieres simplemente probar suerte con el kernel de Android a lo Chuck Norris te voy a tratar de resumir lo que yo hice en especifico (no me considero un experto en Linux así que cualquier error por favor pido disculpas). Como ya se pueden imaginar sera necesario una PC con Linux y que tenga instalada alguna distribución  en mi caso particular yo tengo Ubuntu 12.04 LTS.
Los pasos a realizar son lo siguientes:
 
                   1.- Descargar el kernel, archivos de sistemas y el compilador cruzado.
                   2.- Instalar las Herramientas necesarias.
                   3.- Instalar el compilador cruzado.
                   4.- Modificando y compilando el kernel.
                   5.- Preparando el sistema de Archivos de Android.
                   6.- Instalación del SO en el Mini2440.

Abrimos una terminal por que todo lo haremos en modo comandos, te recomiendo que si eres novato en Linux leas un poco sobre comandos básicos para que lo que voy a hacer sea un poco mas entendible.
En cuanto a los permisos para ejecutar los comandos les recomiendo hacerlo como root, pero si no tienen permisos para root el comando sudo seria mas que suficiente.

1.- Descargar el kernel, archivos de sistemas y el compilador cruzado. 

-Para descargar el kernel Clic Aqui
-Para descargar el Sistema de Archivos Clic Aqui
-Para el compilador cruzado Clic Aqui

2.- Instalar las herramientas necesarias.

Vamos a necesitar un editor de texto llamado 'Geany', mi elección en este editor se basa en que nos proporciona un interfaz perfecta para crear código en diferentes lenguajes. Para la instalación lo realizamos desde terminal:

                    $sudo apt-get install geany

Debemos tener disponible también la librería Ncurses que es una biblioteca de programación que provee una API que nos permite escribir interfaces basadas en texto (comandos) para la compilación del kernel.  


                   $sudo apt-get install libncurses5-dev

Necesitaremos la herramienta YAFFS que es un sistema de archivos creado para memorias tipo NAND. Para descargarlo Clic Aquí.

3.- Instalar el compilador cruzado.

Antes que nada ¿Para que me va a servir un compilador cruzado? Para poder responder ampliamente a esta pregunta que muchas personas quizás se hayan hecho debemos entender lo que es un cross-compiler.

Un cross-compiler es un compilador capaz de crear código ejecutable para otra plataforma distinta a aquella en la que se ejecuta. Por lo tanto nos servirá de maravilla para crear código para el Mini2440 (la arquitectura del Mini2440 es ARM920T y la de una PC en general es muy diferente), como seria muy difícil crear código dentro del Mini2440 es mejor usar un cross-compiler para hacerlo en una PC común y corriente y después solo ejecutar ese código en la plataforma del ARM.

Nos ubicamos en la carpeta donde se descargo el paquete. En mi caso en la Carpeta Downloads

                     $cd /home/eddie/Downloads/
                     $ls -la 

Debería salirnos una ventana similar:


Ahora descomprimimos los archivos

                     $tar -zxvf arm-linux-gcc-4.3.2.tgz

Tardara un tiempo de descomprimir los archivos. Después de esto ingresamos los siguientes comandos: 

                     $cd usr/local/
                     $mv arm/ /usr/local/
                     $cd ../..
                     $rm -rf  usr/
                     $cd /usr/local/
                     $geany ~/.bashrc

En el ultimo comando lo que hicimos fue abrir con el editor 'Geany' el archivo 'bashrc'. Este archivo contiene toda la configuración de la terminal o bash como quieras llamarlo, que es donde podemos interactuar por medio de texto con la computadora.
El cross-compiler tiene unos comandos adicionales por lo que hay que hacerle saber al terminal donde se encuentran estos comandos para cuando los llamemos sepa ejecutarlos sin problemas, de ahí la necesidad de editar este archivo.
Al final del documento pegamos lo siguiente: "export PATH=$PATH:/usr/local/arm/4.3.2/bin" y después guardamos el archivo.


Para que los cambios se apliquen cerramos el terminal y nuevamente lo abrimos y ponemos lo siguiente:
                     
                     $arm-linux-gcc -v


Si todo esta bien debera salir algo similar a esto: 


4.- Modificando y compilando el Kernel.
                     
Como ya les mencione antes la distribución de Android que proporcionaba la empresa para instalarla en  el Mini2440 no estaba configurada con mi tipo de Pantalla (W35) es decir no estaba el kernel compilado para esta pantalla. Ahora para compilar el kernel para que trabaje con este tipo de pantalla solo hay que realizar los siguientes pasos (El kernel de Android debe estar descargado) :

                    $cd /home/eddie/Downloads/
                    $tar -zxvf android-kernel_20090825.tgz
                    $cd kernel/
                    $geany arch/arm/mach-s3c2440/mach-mini2440.c

Este archivo contiene los tipos de pantalla y sus configuraciones por lo que sera necesario modificar para adaptarlo a la resolución de nuestra pantalla.  En la linea 169 del documento veremos que hay unas resoluciones correspondientes a la pantalla T35 la cual es de 320x240.


Todo esto lo cambiaremos por la siguiente configuración y guardamos los cambios.


Es de esperar que como cambiamos la orientación de la pantalla LCD en el kernel la manera en como responderá la pantalla táctil a las pulsaciones no sera la misma por ello faltaría modificar un archivo mas, ingresamos el siguiente comando:

                   $geany drivers/input/touchscreen/s3c2410_ts.c

En las lineas 99 y 100 del documento haremos los siguientes cambios:

Cambiar esto

Por esto.

Ya hemos hechos los cambios necesarios en el kernel lo que nos toca hacer por ahora es compilar dicho kernel modificado.

                   $cp config_mini2440 .config
                   $make menuconfig

Se nos mostrara el API de Ncurses.


Como ya modificamos el kernel solo salimos de esta interfaz eligiendo <Exit>. Después ingresamos en la terminal:

                    $make zImage

Nota: Es posible que en el ultimo paso les salga un error como "arm-linux-gcc command not found", esto lo arreglamos solo agregando el PATH del cross-compiler al archivo bashrc. Hacer esto solo si no compila el kernel.

Tardara aproximadamente 10 minutos compilar por completo el kernel, una vez listo saldrá esto en la terminal. 


La zImage estara en arch/arm/boot/zImage.

4.- Preparando el Sistema de Archivos de Android. 

En la terminal nos movemos a la carpeta donde descargamos el sistema de archivos y descomprimimos el paquete.

                    $cd /home/eddie/Downloads/
                    $tar -zxvf android-fs_20090825.tgz


La carpeta descomprimida contiene los archivos root del sistema de Android, con un editor de texto abrimos el archivo default:

                    $geany fs/default.prop

Vamos a cambiar estos parámetros:


Por estos:


Ahora descomprimimos el paquete que contiene la YAFFS2

                     $tar -zxvf linux-mkyaffs2image.tgz 
                     $ cp usr/sbin/mkyaffs2image-128M /home/eddie/Downloads/

El comando ultimo copia la YAFFS2 para memorias NAND de 128MB (el Mini2440 que tengo tiene una memoria de ese tamaño, recomiendo verificar la tuya para que puedas copiar el archivo correcto) a la carpeta donde se descomprimió el sistema de archivos fs.

                     $./mkyaffs2image-128M fs/ mini2440W35i_android.img


Deberá salir lo siguiente:


El archivo estara de la carpeta donde descargaste los demás archivos con el nombre: mini2440W35i_android.img

6.- Instalar el SO Android en el Mini2440.

La instalación es similar a la de Linux, recomiendo ver este post para refrescar la memoria.
  1. Poner el switch boot en NOR del Mini2440 mienstras este esta en OFF.
  2. Conectar el cable USB y USB-SERIAL del Mini2440 a una PC que tenga XP.
  3. Abrir el DNW y elegimos CONFIGURATION>>OPTIONS y elegimos el puerto serial correspondiente, un Baud Rate =115200 y Address USB=0X30000000.
  4. Despues Serial Port>>Connect.
  5. Ponemos en ON el switch del Mini2440.
  6. Presionamos x para formatear la memoria.
  7. Presionamos v para transmitir el Supervivi.
  8. Presionamos k para la zImage (kernel).
  9. Presionamos y para el sistema de archivos: mini2440W35i_android.img.
  10. Apagamos el Mini2440 y el swithc de boot lo ponemos en NAND.



viernes, 30 de noviembre de 2012

Primeros pasos con el ARM Mini2440

En estos días he conseguido un nuevo juguete tecnológico: el Mini2440 (ver la figura con la descripción). La primera impresión que tuve fue que parece una PC en tamaño reducido pues para ser un poco mas precisos con la verdad se trata de un sistema embebido. Tiene todas las funcionalidades de una computadora simple esto es: USB, puerto Serial, tarjeta SD, FAST-ETHERNET, pantalla LCD, entrada y salida para audio y lo mas interesante interfaces de para Conversión A/D, PWM e I2C.



ARM Mini2440

Siendo mas específicos esta basando en un microprocesador SAMSUNG S3C2440, por lo tanto opera gobernado por un Sistema Operativo (SO). A continuación se explica con detalle las especificaciones de este dispositivo:

  • CPU Samsung S3C22440A a 400MHz
  • RAM de 64MB tipo SDRAM de 32 bits de Bus de datos a 100MHz
  • FLASH MEMORY : 256 MB tipo NAND y 2MB tipo NOR para la BIOS.
  • LCD de 320x240 (3.5 pulgadas) tipo Resistiva.
  • Tarjeta de red FAST-ETHERNET
  • 3 Puertos seriales
  • 1 Puerto USB y otro Esclavo tipo B
  • 1 Interfaz para tarjeta SD
  • Salida de audio stereo de 3.5mm y una interfaz para micrófono.
  • Conversor A/D
  • Bus I2C
  • 34 Puertos tipo GPIO
  • Reloj en tiempo Real (RTC)
  • SO soportados: LINUX, WINDOWS y ANDROID.

Dándonos cuenta en las especificaciones disponemos de una arquitectura robusta en cuanto a Hardware, quizás el único inconveniente es la pantalla de tipo resistiva la cual no nos dará una sensación de interactividad muy fluida. Todo esto gobernado bajos dos SO poderosos: LINUX y ANDROID.

¿Pero que podemos lograr con todo esto?
La respuesta es simple: Lo que tu imaginación y trabajo diario estén dispuesto a dar. Suena un poco infantil pero es la verdad, tenemos a disposición una gran herramienta para desarrollar una infinidad de aplicaciones. Para llegar a ello debemos solo poner empeño pues entraremos al gran mundo de la programación aplicada a sistemas embebidos que nos ayudara a llevar a cabo con mas simpleza nuestros objetivos y no nos asustemos si nunca hemos programado pues las herramientas y las fuentes de consulta son infinitas.

Para el siguiente blog tengo pensado cargar la imagen del SO LINUX en el MINI2440 explicado paso a paso, para los demás SO como WINDOWS y ANDROID también haré algo similar para al final llegar a desarrollar aplicaciones en cada una de las plataformas.

Aquí les dejo un pack de imágenes del dispositivo que dispongo, perdón por las imágenes pero no me considero un gran fotógrafo.