PROGRAMACION DEL OPENMOKO
ES LO MAS COMPLETO QUE HE ENCONTRADO SOBRE LA PROGRAMACION DE OPENMOKO Y LO SAKE DE ESTE LINK http://www.kernel-labs.org/?q=neo1973_art01 POR SI ALGUIEN QUIERE ECHARLE UNA OJADITA.....
PRIMERO UN RESUMEN INFORMATIVO SOBRE EL SISTEMA OPERATIVO DE OPENMOKO
Sistema empotrado: Linux embedded system Como sistema empotrado clásico podemos dividir al sistema software del teléfono en tres unidades fundamentales:
- Monitor de arranque, boot loader o boot monitor: u-boot
- Kernel Linux
- Root filesystem (rootfs)
De manera muy simple, podemos decir que el hardware ejecuta el monitor de arranque u-boot, este a su vez ejecuta el kernel del sistema operativo y este último monta el sistema de archivos raíz con las aplicaciones de usuario. La unidad GTA01B4 viene con el cargador u-boot preinstalado, sólo necesitaremos copiar en la memoria FLASH del dispositivo el kernel y el rootfs.
El Openmoko Team ha elegido implementar en la versión de u-boot de openmoko (fuentes orginales de u-boot mantenidos por www.denx.de/wiki/DULG el protocolo USB DFU v1.1 (USB Device Firmware Upgrade) que forma parte de la especificación USB para facilitar la actualización del firmware de un hardware USB. El proyecto más notable que usa esta tecnología en el mundo open source el Free RFID readers www.openpcd.org/ liderado por Harald Welte.
Para comunicarse mediante dicho protocolo con el u-boot de nuestro openmoko usamos desde el host la utilidad: dfu-util svn.openmoko.org/trunk/src/host/dfu-util/ desarrollado por Harald Welte (alias laforge).
Conexión desde el host: dfu-util Nuestro primer paso es bajarnos las fuentes del proyecto, para ello:
svn co http://svn.openmoko.org/ |
Son más de 500 MB el repositorio completo, tendremos que tener paciencia si queremos todas las fuentes. También podemos bajarnos sólo las fuentes de las utilidad dfu-util, o directamente adquirir la herramienta en formato binario estático para arquitectura Linux/i386:
Si optamos por compilar la herramienta seguiremos los siguientes pasos:
cd svn.openmoko.org/trunk/src/host/dfu-util && sh autogen.sh && ./configure && make |
Obtenemos en src/ dos versiones del ejecutable una compilada estáticamente y otra con librerías dinámicas.
Imágenes para "flashear" la unidad
Nos bajamos las imágenes correspondientes al kernel y al rootfs para que nuestro teléfono -haga algo-. Como ya hemos dicho, la imagen de u-boot está correctamente instalada para los teléfonos de la Phase 1, y por ello no la actualizaremos de momento.
Tenemos dos conjuntos de imágenes, las que corresponden a la distribución OpenMoko2007.1 (o OM2007.1) que son las denominadas "oficiales", y las correspondientes a una evolución importante del framework denominadas OM2007.2, que no son consideradas oficiales y son menos estables de momento. Nos decantamos por las oficiales, para tener menos problemas.
Existen muchas combinaciones de imágenes y una nomenclatura confusa, por ello existe una página wiki.openmoko.org/wiki/Phase_1_Software_Testing donde se comentan algunas combinaciones que han funcionado y los problemas que pueden haber dado. Haremos nuestras pruebas iniciales con:
Flashing openmoko
Para comenzar a flashear necesitamos entrar en el menu de u-boot, para ello es necesario apretar el botón AUX wiki.openmoko.org/wiki/Neo1973_AUX_Button mientras presionamos el botón de encendido.
Antes de flasear las imágenes, se recomienda en el wiki de openmoko que se borren las particiones afectadas. Accedemos al prompt del monitor de arranque u-boot a través del cable USB suministrado y algún programa de terminal a través de línea serie. Con la utilidad -cu- del paquete uucp podremos acceder al prompt de u-boot configurando dicho programa para acceder al dispositivo /dev/ttyACM0:
cu -l /dev/ttyACM0 |
Una vez en el prompt de u-boot ejecutaremos los siguientes comandos:
GTA01Bv4 # nand erase clean rootfs GTA01Bv4 # nand erase clean kernel |
Salimos del emulador de terminal y podremos comenzar el flashing desde nuestro host con la utilidad dfu-util.
Flashing del kernel
[root@bigcat OM2007.1]# dfu-util -a 3 -R -D ./uImage-2.6.21.6-moko11-r1_0_0_2388_0-fic-gta01.bin dfu-util - (C) 2007 by OpenMoko Inc. This program is Free Software and has ABSOLUTELY NO WARRANTY Opening USB Device 0x0000:0x0000... Claiming USB DFU Runtime Interface... Determining device status: state = appIDLE, status = 0 Device really in Runtime Mode, send DFU detach request... Resetting USB... Opening USB Device... Found Runtime: [0x1457:0x5119] devnum=5, cfg=0, intf=0, alt=3, name="kernel" Claiming USB DFU Interface... Setting Alternate Setting ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing Transfer Size = 0x1000 bytes_per_hash=31814 Starting download: ################################################## finished! state(2) = dfuIDLE, status(0) = No error condition is present Done! Resetting USB to switch back to runtime mode |
Acceso SSH desde el host
Una vez grabadas las imágenes antes descritas podremos reinicar el móvil y tendremos el móvil listo para funcionar (eso si, mínimamente funcional, no olvidemos su estatus de pre-alfa). Llegados a este punto será muy interesante poder entrar al móvil a través del comando ssh. Para ello, cuando el móvil es conectado a través del cable USB al host, se crea automáticamente una interface de red usb0. Para configurarla manualmente haremos lo siguiente:
# ifconfig usb0 192.168.0.200 netmask 255.255.255.0 # ping -I usb0 192.168.0.202 # /sbin/route add -host 192.168.0.202/32 dev usb0 # ssh root@192.168.0.202 |
Cuando nos pida el password, pulsaremos intro y estaremos dentro de nuestro Neo1973.
Conclusión Este pequeño tutorial, como se puede ver, es meramente una descripción de los pasos que ha dado el equipo de kernel-labs.org para poner en funcionamiento el móvil Neo1973. En las próximas entregas iremos entrando más en profundidad, hasta llegar a nuestro objetivo, participar plenamente en el desarrollo del móvil en el ámbito que nos interesa, la programación del sistema.
bueno eso es todo un poco largo pero sustancioso y presiso..ke es l ke mas importa.
