GP2X, primer contacto
Esta receta describe la consola portátil GP2X y da una primera idea de sus posibilidades dentro del mundo del software libre
Introducción
Antes de empezar con la receta diré que esto no es en realidad una receta... :-P es algo así como un review. El soft libre tiene un mercado que avanza muy rápidamente y prueba de ello está en que cada vez más dispositivos vienen con un Linux integrado y se basa en soft libre. Hace tiempo, la empresa koreana Game Park Holdings sacó una consola portátil llamada GP32. Esa consola vio muy pocos juegos comerciales porque la gente se dedicó a desarrollar homebrew para dicha consola. Viendo el "éxito" especial que tuvo esta consola, meses después se decidió a sacar una nueva consola, la GP2X, mucho más potente que su antecesora (de hecho se compara con la Nintendo DS) y directamente para que la gente desarrolle para ella. Se ha denominado "la portátil opensource" (aunque en realidad GamePark Holdings apuesta muy poco por el GPL y el soft en general... como veremos a continuación...). Sea como fuere aquí pretendo contar un poco mis primeras experiencias con esta consolilla para dejar esta receta como "introducción" a una serie de recetas que, espero, sean más "divertidas" que ésta...El hardware
Bueno, básicamente disponemos de un sistema basado en dos procesadores ARM, 32M de RAM y otros 32M de flash interna, socket para tarjetas SD, puerto USB 2.0, pantalla LCD de 320x240, joystick digital, 10 botones y unos cuantos puertos interesantes como son el de TV-OUT o el JTAG. El main core (llamado MagicEyes o MP2520F) tiene como núcleo dos CPU's que van a 200MHz (dopables):- ARM920T (Rev 1)
- ARM940T (Rev 2)
El software
Pues un Linux de toda la vida, concretamente un 2.4.25 compilado con gcc 2.95.3, es el núcleo que ejecuta la maquinita. Viene con una mínima cantidad de módulos. En el gestor de eventos encontramos a hotplug. En cuanto a librerías, tenemos unas cuantas: libSDL (incluyendo SDL_image, SDL_mixer y SDL_ttf), libjpeg, libncurses (¿para qué?), libogg, libpng, libvorbisdec, a parte de librerías típicas del sistema. Tenemos unas cuantas utilidades GNU como grep, fgrep, egrep, doexec, fdisk, ftp, hostname, ipcalc, netstat, nohup, who, etc... Viene con servidores típicos como telnetd (q miedo!), ftpd, samba, thttpd, etc. Una utilidad interesante que trae es el mplayer de toda la vida, portado y GPL (no tienen más remedio, les obliga la licencia...). Después viene un reproductor de música y un visualizador de imágenes y texto y los... impresentables de GPH no lo tienen liberado (al igual que el menú de la consola)... me parece una cutrez pero bueno.Cómo funciona
Muy simple, dispone de un cargador del núcleo (tipo lilo o grub) llamado U-BOOT que soporta múltiples plataformas. El cargador arranca el linux y comienza un arranque como el de cualquier otro sistema basado en GNU/Linux, salvo que no hay más que un runlevel y un único usuario. El último comando del script de arranque es el menú de la GP2X (que no es más que un ejecutable como otro cualquiera).Primeros cacharreos
Lo más básico que podemos hacer: conectarnos por puerto serie y ver "qué hace" la consola. Fácil: utilizad algún programa como minicom (paquete Debian) y configurad el puerto de la siguiente forma:115200 8N1Ahora encendéis la consola y (con el último fw, 2.1.1 a fecha de hoy) saldrá:
U-Boot 1.0.0 (Apr 20 2006 - 12:51:09) U-Boot code: 03E00000 -> 03E49610 BSS: -> 03E82208 IRQ Stack: 03ea3204 FIQ Stack: 03ea4204 DRAM Configuration: Bank #0: 00100000 63 MB Flash: 0 kB NAND:Probing at 0x9c000000 Flash chip found: Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208 64Mb) 1 flash chips found. Total nand_chip size: 64 MB Get Environment from NAND offset 0x70000 ... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial NAND read: device 0 offset 0x1a0000, size 0x40000 ... 262144 bytes read: OK NAND read: device 0 offset 0x80000, size 0xb0000 ... 720896 bytes read: OK ### main_loop: bootcmd="bootm" Hit any key to stop autoboot: 0 ## Booting image at 01000000 ... Image Name: GP2X-F100 2.1.1 Created: 2006-10-30 8:12:53 UTC Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 618462 Bytes = 604 kB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel ... MMC/SD Card Detected MMC/SD Slot initialized Partition check: mmcsda: p1 Register SD: 976MsB mount...1 mount...2: Reading data from NAND FLASH without ECC is not recommended Freeing init memory: 280K INIT: version 2.84 booting \<7\>**\>\>ecc error unfixed on chunk 3268:0 Started device management daemon v1.3.25 for /dev \<7\>**\>\>ecc error unfixed on chunk 3844:0 Mount image directory, if not mounted... You must set heads sectors and cylinders. You can do this from the extra functions menu. You must set heads sectors and cylinders. You can do this from the extra functions menu. Partition table size is 4096 Loopback device setup... losetup: ioctl: LOOP_CLR_FD: No such device or address MSDOS FS: IO charset utf8 MSDOS FS: IO charset utf8 Apply LCD Timing Using /lib/modules/2.4.25/kernel/drivers/usb/gadget/net2272.o net2272: Set 2272 bus timing USB SUSPEND MODE net2272: PLX NET2272 USB Peripheral Controller net2272: irq 222, mapped mem c280c000, chip rev 0011 net2272: running in 16-bit, byte normal bus mode net2272: version: 2006 April 5, v3 net2272: unbindSi estamos conectados por el puerto serie, podemos usar las siguientes teclas para controlar la consolilla:
I --> Joy UP J --> Joy LEFT K --> Joy DOWN L --> Joy RIGHT Intro --> Joy CENTER D --> Vol - F --> Vol + Q --> L E --> R W --> Y A --> A S --> B Z --> X C --> Select V --> Start
Conclusiones
Pues, aunque tiene muchas cosas mejorables (sobre todo en la parte soft), este dispositivo parece muy interesante y puede tenernos muchas horas y horas entretenidos cacharreando con él... hay hasta un X11 para la consola;y si no nos gusta cacharrear hay que decir que tiene muchísimos emuladores portados al sistema y cómo no... el mplayer en el bolsillo ;-).Enlaces
Página oficial GP2X Wiki GP2X: dónde empezar, datasheets, etc. Comunidad alemana GP2X: todo tipo de descargas [ show comments ]
blog comments powered by Disqus