Archivos en la categoría 'Hardware'

Fonera RS232 Serial

Martes, Enero 9th, 2007

RS232 Serial Cable AdapterComo aún no he visto ningún cable para la fonera autoalimentado a través del puerto serie, he hecho uno propio que no hace falta conectar a ningún sitio mas que al puerto serie de nuestro ordenador y a la fonera.

Update: Fotos del cable terminado. Funciona perfectamente. Antes probé el de un nokia 3310, pero contrariamente a lo que se dice en algunas páginas, los cables Nokia no son compatibles con un rs232 standard, probado.

front.jpg rear.jpg

Sobre la memoria flash de la fonera

Sábado, Diciembre 9th, 2006

Como al final acabamos confundidos con la memoria flash y como va distribuida, voy a exponer un análisis para explicar la constitución y particion de la misma.

Cualquiera que tenga una fonera abierta puede ver lo siguiente escribiendo dmesg:

MTD driver for SPI flash.
spiflash: Probing for Serial flash …
spiflash: Found SPI serial Flash.
8388608: size
Creating 8 MTD partitions on “spiflash”:
0×00000000-0×00030000 : “RedBoot”
0×00030000-0×00720000 : “rootfs”
0×001c0000-0×00720000 : “rootfs1″
0×00720000-0×00730000 : “config”
0×00730000-0×007e0000 : “vmlinux.bin.l7″
0×007e0000-0×007ef000 : “FIS directory”
0×007ef000-0×007f0000 : “RedBoot config”
0×007f0000-0×00800000 : “board_config”

Según la cuarta linea de este paste la fonera dispone de 8388608 bytes de espacio (exactamente 8Mb) y leyendo la quinta linea vemos que está particionada en 8 dispositivos mtdX donde:

  • mtd0: Tiene 196608 bytes (192Kb) que ocupa desde la posición 0×00000000 hasta la posición 0×00030000 y está etiquetada como “RedBoot” que es el bootloader de la fonera.
  • mtd1: Tiene 7274496 bytes (6.93Mb) que va desde la posición 0×00030000 hasta la 0×00720000 y está etiquetada como “rootfs”. Aqui se guarda el sistema de archivos inicial (raiz).
  • mtd2: Tiene 5636096 bytes (5.37Mb) que va desde la posición 0×001c0000 hasta la 0×00720000 y está etiquetada como “rootfs1″. Contiene los cambios que realizamos en la fonera y se monta en /jffs.
  • mtd3: Tiene 65536 bytes (64Kb) que va desde la posición 0×00720000 hasta la 0×00730000 y está etiquetada como “config”. Este espacio realmente está en blanco, solamente contiene ‘1337′ en los dos primeros bytes (7 ascii).
  • mtd4: Tiene 720896 bytes (704Kb) que va desde la posición 0×0073000 hasta la 0×007e0000 y está etiquetada como “vmlinux.bin.l7″. Contiene el nucleo linux.
  • mtd5: Tiene 61440 bytes (60Kb) que va desde la posición 0×007e0000 hasta la 0×007ef000 y está etiquetada como “FIS directory”. Parece contener información sobre el particionado de la flash.
  • mtd6: Tiene 4096 bytes (4Kb) que va desde la posición 0×007ef000 hasta la 0×007f0000 y está etiquetada como “RedBoot config”. Contiene la configuración del bootloader ReedBot.
  • mtd7: Tiene 65536 bytes (64Kb) que va desde la posición 0×007f0000 hasta la 0×00800000 y está etiquetada como “boad_config”. Aqui podemos encontrar la configuración general de la placa y cosas como el número de serie, las direcciones mac, etc.

Como se aprecia, rootfs y rootfs1 comparten espacio desde la posicion 0×001c0000 hasta la 0×00720000 (/jffs). Esto nos deja solamente 0×001c0000 – 0×00030000 de espacio para el sistema de archivos rootfs (1638400 bytes o 1.56Mb). Si es superado ese espacio con una imagen de sistema de archivos (como ha sido mi caso, la superé por unos cientos de Kb por el modulo cifs.o) pasa esto:

root@fonera:~# du -sh /jffs/
12.5k /jffs
root@fonera:~# df -h
Filesystem Size Used Available Use% Mounted on
none 7.0M 52.0k 6.9M 1% /tmp
/dev/mtdblock/2 5.4M 332.0k 5.1M 6% /jffs

Es decir, a pesar de que /jffs no ocupa mucho, df nos dice que si porque parte de la memoria está siendo usada por la imagen excesivamente grande que puse, lo que me lleva a pensar que hay de capacidad hasta 6.9 megas para poner nuestra imagen, pero que agotaríamos así la capacidad de /jffs impidiendo poder realizar cambios, así que preferiblente es mejor no execeder esos 1.56 megas para el sistema de archivos inicial.

El Hardware de La Fonera

Lunes, Diciembre 4th, 2006

He desmontado la fonera y comprobado los números de modelo de los chips de memoria ram y de la memoria flash.

Según la descripción que he encontrado en alldatasheet la memória ram es de 128Mbits (16Mbytes) (4Banks x 2Mb x 16bits) a una velocidad 133Mhz.

La flash según esa numeración no he podido encontrarla pero si que aparecen chips del mismo fabricante con la númeración 25P64 que al parecer utiliza para las memorias flash de 64Mbits (8Mbytes).

En datasheet4u también se puede encontrar el mismo datasheet de la memoria lo que ya me hace dudar puesto que Martin Varsavsky en su blog publicó que la fonera solamente tendría 16Mb de ram y 4Mb de rom. En cualquier caso tambien se puede leer por internet que la rom la ampliaron al final.

Linux en iPAQ h1930

Domingo, Noviembre 19th, 2006

Hacía algún tiempo que venia buscando alguna forma de instalar linux en este Pocket PC para trastear un poco en las posibilidades de linux en dispositivos móviles, así que me puse a buscar y encontré el proyecto que por lo menos mas avanzado está.

Aun le queda un poco para acabar, pero con lo que ofrecen tendremos mas que suficiente para hacer nuestras pruebas.

Lo que haremos será construir un ‘disco duro’ con dos particiones, una para almacenar los archivos necesarios para arrancar y otra para el sistema de archivos del SO.

Las pegas que tiene actualmente el proyecto entre manos son el arranque de Linux y la gestión de energía. El primero de los problemas se solventa con un pequeño ejecutable que borra la RAM de la PDA y carga en ella el kernel de linux. Este ejecutable tiene que ejecutarse desde windows para pocket pc. El otro inconveniente no está solventado, por lo que no podemos apagar ni suspender la unidad, tan solo reiniciarla (tras lo cual restaurará windows ce en la RAM desde la ROM).

Comenzando con el particionado, si vamos a dedicar la tarjeta exclusivamente para linux, tenemos que crear la primera partición de la tarjeta SD con al menos 7 megas de espacio para los archivos de arranque y al menos 50 megas para la particion de Sistema. Este orden es obligado ya que la iPAQ solamente reconocerá y montará en windows ce la primera partición que encuentre en la tarjeta.

Para el ejemplo de particionado expodré mi caso, una tarjeta de 64 megas que me vino muy justa para hacer la instalación.

# fdisk -l /dev/mmcblk0
Disco /dev/mmcblk0: 62 MB, 62783488 bytes
1 cabezas, 16 sectores/pista, 7664 cilindros
Unidades = cilindros de 16 * 512 = 8192 bytes
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/mmcblk0p1   3  800  6384 1 FAT12
/dev/mmcblk0p2 801 7664 54912 83 Linux

Como puede verse la partición que emplearemos para arrancar ha de ser la primera y ha de ser forzosamente de tipo 1 (FAT12). La segunda, en la que he empleado el resto del disco, ha de ser de tipo Linux.

NOTA: mmcblk0 es el nombre del dispositivo tarjeta SD que mi tarjetero embenido en el portatil asigna para estas tarjetas. Si usas un lector externo, posiblemente tengas /dev/sdxz, donde x es el numero de dispositivo (a, b, c…) y z es el número de particion (ie: /dev/sda1, /dev/sda2).

Ahora que tenemos la tabla de particones adecuada tenemos que dar formato a las nuevas particiones adecuadamente:

# mkdosfs /dev/mmcblk0p1

# mke2fs /dev/mmcblk0p2

Comentar que forzosamente tienen que ser la primera de tipo dos y la segunda ext2.

Una vez hecho lo delicado, pasamos a lo facilon, la instalación de linux, que es tan sencilla como copiar los archivos necesarios en la tarjeta.

Empezamos descargando el nucleo (zImage) precompilado de la seccion de descargas de handheld y el HaRET, el programa que usaremos para arrancar linux y los copiaremos ambos en la primera particion de la tarjeta (la de arranque) descomprimiendo previamente haret.exe.

Por último hay que descargar el sistema de archivos con el entorno grafico, que pueden ser GPE o Opie. Yo prefiero GPE que se parece a Gnome. Para verlos y comparar cual os gusta mas, podeis verlos ambos aqui. Una vez descargado, descomprimirlo en la segunda partición y con esto ya habremos acabado de instalar nuestro linux experimental. Tan solo queda poner la informacion de arranque en la primera particion en un archivo llamado default.txt con el siguiente contenido:

set MTYPE 347 set KERNEL “zImage” set RAMADDR 0×30000000 set CMDLINE “root=/dev/mmcblk0p2 console=ttySAC2,115200n8 panic=30 rootdelay=5″ bootlinux

Notese de cambiar mmcblk0p2 por sdx2 o cualquiera que sea la partición en la que guardó el sistema de archivos.

Ahora ya podremos introducir la tarjeta preparada en la iPAQ y ejecutar haret.exe en la tarjeta SD y esperar que arranque el sistema.

Se puede encontrar el manual completo en ingles en la pagina original.