El sitio personal de David Colmenero (D_Skywalk)

Posts tagged with 'Programación'

GP32 / GP2X Community Linux SDK

Desde este proyecto publicaré todas mis aportaciones para poder disfrutar de una plataforma de desarrollo útil para GPx en Linux y además se darán unos pasos básicos de como instalarlos…

SPANISH

English version bellow

GP2X Toolchain

El entorno de desarrollo para GP2X, tiene como objetivo una compilación que permita ejecutables que ocupen casi cien veces menos, un simple programa pasa de 500kb a 5kb si evitamos la compilación estática; y el arranque instantáneo, gracias a utilizar las librerías que todos tenemos instaladas dentro de nuestra GP2X.

No obstante, el entorno no obliga a nada y puedes seguir compilando estáticamente sin problemas Smiley: contento!

La versión actual incluye:

LINUX HEADERS: 2.4.25-GP2X
BINUTILS: 2.16.1
GLIBC: 2.2.5
GCC: 3.4.6

Y puedes bajarla de aquí.
El espacio ha sido cedido por el proyecto AGES en la Forja de REDIRIS.

Para instalarla abre una consola como root y entra en la carpeta donde hayas bajado el paquete y escribe:

# tar xvjf toolchain-linux*.tar.bz2
# mv gp2x /opt

También puedes bajar el toolchain completo de Uncanny que incluye además sus librerías SDL a parte de los compiladores y utilidades.
El espacio ha sido cedido por el proyecto AGES en la Forja de REDIRIS.

Para instalarla abre una consola como root y entra en la carpeta donde hayas bajado el paquete y escribe:

# tar xvjf toolchain-uncanny*.tgz
# mv gp2xdev /usr/local/

GP2X Development SDL Library

Para esta parte he preparado una librería para escena la escena que llamaremos “Community” y la compararé con la oficial de GPH.

Cada una de ellas contiene, a no ser que se indique lo contrario:

SDL: 1.2.9 (Paeryn) Community - 1.2.7 Oficial
SDL_mixer: 1.2.7 (oficial sin soporte smeg) [WAV, MOD (mikmod), MP3 (smeg), OGG (tremor)]
SDL_image: 1.2.4 [JPG, PNG]
SDL_ttf: 2.0.7
SDL_gfx: 2.0.13 (solo Community)
SDL_sound: 1.0.1 (solo Community) - [WAV, VOC, MP3 (no smeg), MID (timidity), MOD (modplug), OGG (vorbis), RAW, AU, AIFF]
libMAD: 1.15.b
libId3tag: 1.15.b (solo Community)
libUniCodeFont (solo Oficial)

Tened encuenta que si usáis librerías no incluidas en la consola deberéis compilar estáticamente.

La versión de “community” la puedes bajar de aquí.
La versión oficial la puedes encontrar en el foro de desarrolladores de GP2X.

Para instalar la versión de la escena seguid estos pasos como root:

# tar xvjf gp2x-libs-community*.tar.bz2
# cp -R gp2x-libs-community/* /opt/gp2x

GP2X / GP32 IDE

Desde aquí iré preparando platillas o entornos de trabajo para IDEs disponibles en cualquier distribución Linux.

Esta versión aun no es perfecta y aun gustaría añadirle cosas, pero es perfectamente funcional y si os animáis a ayudarme a perfeccionar el entorno para GP32, quizás en poco tiempo podamos compilar, a un click de distancia, para: GP2X, LINUX y GP32 Smiley: HA HA HA ...

Puedes bajar desde aquí la versión 0.5 (RC1a) de las plantillas para GP2X.

Ahora instalaremos la plantilla. Entra como root en la carpeta donde lo descomprimieras y ejecuta:

# tar xvjf gp2x-template*.tar.bz2

Ahora sería un buen momento para leer el fichero “LEEME.TXT” y así saber las novedades y/o problemas conocidos de las plantillas que te dispones a instalar… Ahora sigue las instrucciones de instalación de las plantillas Smiley: guay!

Además he preparado un pequeño tutorial para empezar a desarrollar con todo este entorno en linux.

Feliz desarrollo!! Smiley: Muy contento!


English

GP2X Toolchain

This development enviroment for has two objetives:
- Reduce weight of your binary files (500kb to 5kb using shared linking)
- More quick load (you use the libs installed on your GP2X)

But this toolchain allow static linking if you want Smiley: guiño

This version includes:

LINUX HEADERS: 2.4.25-GP2X
BINUTILS: 2.16.1
GLIBC: 2.2.5
GCC: 3.4.6

You can download here the last toolchain.
Mirror donated by AGES Project on REDIRIS Forge.

Install instructions: Login as root and in your download directory do:

# tar xvjf toolchain-linux*.tar.bz2
# mv gp2x /opt

Also you can download the Uncanny toolchain with SDL libs included.
Mirror donated by AGES Project on REDIRIS Forge.

Install instructions: Login as root and in your download directory do:

# tar xvjf toolchain-uncanny*.tgz
# mv gp2xdev /usr/local/

GP2X Development SDL Library

SDL: 1.2.9 (Paeryn) Community - 1.2.7 Oficial
SDL_mixer: 1.2.7 (official without smeg support) [WAV, MOD (mikmod), MP3 (smeg), OGG (tremor)]
SDL_image: 1.2.4 [JPG, PNG]
SDL_ttf: 2.0.7
SDL_gfx: 2.0.13 (only Community)
SDL_sound: 1.0.1 (only Community) - [WAV, VOC, MP3 (no smeg), MID (timidity), MOD (modplug), OGG (vorbis), RAW, AU, AIFF]
libMAD: 1.15.b
libId3tag: 1.15.b (only Community)
libUniCodeFont (only Official)

Community Version Download.
You can download the Official libs from GPH development forum.

Community Install instructions: Login as root and in your download directory do:

# tar xvjf gp2x-libs-community*.tar.bz2
# cp -R gp2x-libs-community/* /opt/gp2x

GP2X / GP32 IDE

You can download the templates for KDevelop version 0.5 (RC1a) here.

Install instructions: Login as root and in your download directory do:

# tar xvjf gp2x-template*.tar.bz2

Now its the time to see README.TXT for install and use instructions Smiley: guay!

Happy Codding!!


Como usar KDevelop y no morir en el intento…

Bueno este va a ser un minituto para que cualquiera que quiera pueda empezar a programar facilmente para GP2X bajo linux Smiley: Muy contento!

Este tutorial supone que tienes instalado ya tu entorno de trabajo (o toolchain) y que el siguiente paso que quieres dar es programar algo y ver como queda Smiley: HA HA HA ...

Una vez arrancado KDevelop (por ejemplo en su version C/C ) vamos a proyectos y nuevo proyecto:

C -> GP2X

Ponemos el nombre de nuestro futuro proyecto y siguiente Smiley: contento!

Imagen del nuevo proyecto

Ahora personalizaremos nuestro proyecto preparando las plantillas que se incluiran en cada fichero del proyecto.

Personalizando proyecto

Creando las Cabeceras

Una vez esta todo creado aparecera el entorno de trabajo de nuevo con un pequeño ejemplo, lo siguiente sera seleccionar desde el menu de Proyectos el tipo de fichero a generar, tal y como veis en la imagen inferior:

Eligiendo nuestro futuro ejecutable

Aunque haya una opcion para GP32 esta aun esta en desarrollo, si la conseguis modificar para que os genere binarios de GP32 enviadme los parches para que los publique Smiley: Muy contento!

Ahora solo queda generar el ejecutable deseado pulsando F8 o desde el menu:

CONSTRUIR -> CONSTRUIR PROYECTO

Construyendo el binario

Momento en el que aparecera un pequeño monitor que nos ira ofreciendo la informacion sobre la construccion de nuestro proyecto…

Compilando...

Y listo! ya tenemos nuestro ejemplo compilado, el ejemplo que trae por defecto necesita que copieis un BMP en la misma carpeta que el ejecutable. Si quereis verlo… ¡a que esperais! Smiley: guiño

Rosa rosa rosae
Rosa, Rosa, Rosae… Smiley: guay!

UPDATE: Como Documentar y hacer uso de librerías

Para animar un poco más a los indecisos, he preparado un ejemplo que espero que muestre, aunque sólo sea superficialmente, la potencia y profesionalidad que puede dar a nuestros proyectos Kdevelop.

Este ejemplo, que es una modificación del test basico de GP2x y Linux, una de las intenciones es que podáis ver lo fácil que es documentar completamente vuestro código (usando la opcion Build API Documentation), para ello Kdevelop usa doxygen, que permite generarla automaticamente en: PDF, HTML, RTF, XML… Os dejo un ejemplo de la documentación HTML que genera.

Además este ejemplo hace uso de librerías para que también comprobéis otras formas de trabajo; subarrendando tareas a las diferentes partes de vuestro proyecto, como: una libreria gráfica, de personajes, IA, …

Pulsad aquí para bajar el ejemplo de uso de librerías y documentación.
Para instalarlo sólo descomprimidlo en vuestra carpeta de desarrollo y abrid el proyecto desde Kdevelop.

Notas para Usuarios Avanzados

Si quereis usar vuestro toolchain podeis cambiar las opciones de compilacion desde el menu:

PROYECTO -> OPCIONES DEL PROYECTO -> OPCIONES DE CONFIGURE

Desde el menu despegable de Configuracion seleccionais la configuracion a cambiar:

Cambiando opciones y compilador

Por ejemplo si vuestro PATH es diferente aqui tendriais seleccionada la parte a cambiar…

Cambiando ruta

Si nuestro compilador tuviera un nombre diferente al oficial (arm-gp2x-linux-gcc) desde la lengüeta C podreis renombrarlo:

Cambiando el nombre del compilador

Listo, espero que os sea util y lo disfruteis Smiley: HA HA HA ...


La fuerza del Estandar: XHTML + CSS2

Con esta serie de artículos espero animaros a conocer las tecnologías que han dado lugar a este Weblog, creado desde 0 y que ahora disfrutáis Smiley: HA HA HA ...

Empezaremos preguntándonos: ¿Y que es XHTML?
- Básicamente se trata de coger el viejo y maltratado HTM y fijar unas reglas estrictas para devolver la L (Language) a nuestro compañero inseparable en esta gran red de redes Smiley: guiño

Se trata, por lo tanto, de usar cada etiqueta para el uso que explícitamente se creó. Por ejemplo, un servidor tenía la (mala) costumbre de hacer las típicas cajas de información usando tablas e imágenes dentro de ellas y claro esto, ahora ya no se permitiría…

La idea es que en el XHTML sólo encontremos el CONTENIDO de la web y nada más. Que se dice rápido, pero es algo que sin duda, cuando nos enfrentemos, a ello costará ser fiel… y en realidad yo no lo veo tanto culpa nuestra, sino quizás unos navegadores demasiado “permisivos”, que nos han mal acostumbrado años ha…

Por eso cuando hace pocos días me preguntaba SpankThru: ¿Y no es mejor saber algo de HTML antes de enfrentarte a XHTML?
Pues, evidentemente no. Ya que sufrirás lo mismo que le pasa al conductor que ha cogido el coche por sí mismo (o le ha enseñado otro conductor) que termina cogiendo ciertos malos hábitos, que luego costará sangre y sudor, no cometer Smiley: guay!

Si seguimos las directrices del W3C obtendremos algo como esto
- !!¡¡DIOS MIO!!! ¿!¿!HEMOS VUELTO A LOS AÑOS 80!??!?!
- No hombre, no no te pongas nerviosillo, si aun no hemos empezado… xD

El ejercicio que quiero que hagas ahora es que veas el código fuente de la web, que aunque no esté muy bien indentado, verás que todo es perfectamente legible y sobretodo muy liviano. Atrás quedan aquellos HTM de 50Kb, esos mastodontes donde buscar la tabla que se había descuadrado era una tarea de chinos Smiley: guiño

La verdad que cuando usas esta tecnología te das cuenta de la cantidad de ventajas que rápidamente te da:

  • Preguntémonos ¿Que indexará mejor google?
    Una página con miles de tablas y campos donde se mezcla contenido y diseño o…
    El ejemplo anterior, donde además cada etiqueta está cumpliendo su objetivo…
    Evidentemente, google lee ese mismo código que antes vimos y nos indexa antes, más facilmente y nos puntúa mejor… poned en google “David Colmenero” o “D_Skywalk” por si no lo tenéis muy claro aun xD
  • Sera más fácil de mantener e incluso añadirle nuevas secciones o contenidos…
  • Permitirá que personas con discapacidades puedan acceder sin problema a sus contenidos y la información por lo tanto se convertirá en universal…
  • Dada su simplicidad cualquier navegador de mañana o prejurásico puede comprender y mostrarte sin problema el contenido de la web, ej: Visitad la web con Lynks Smiley: guiño
  • Por último, en futuros capitulos veras, que NUNCA MÁS el contenido estropeará o dictará sobre el diseño; ya que como comprobarás ambos serán totalmente independientes. Pero no adelantemos acontecimientos…

- Muy bien todo, pero sigo sin estar del todo convencido: ¿Como meto ahí mis fantásticos diseños?

Pues ahí es donde entrará en juego la segunda parte de estos artículos: CSS2.
Pulsad aquí para comprobar los resultados y fijaos que lo único que cambia entre uno y otro es la línea que define el uso de las reglas CSS:

@import "/diseno/base.css";

Si he conseguido captar vuestra atención y queréis experimentar empezad instalándoos las extensiones de firefox que veas más útiles desde esta web. Personalmente yo uso: Webdeveloper, MeasureIt, Colorzilla y TidyHTML (animáos a usar este y veréis que pocas webs cumplen el estándar escrupulosamente).

Otros fantásticos sitios donde empezar a leer sobre estos temas son:
- blog.levhita.
- 100 Pixels. [LINK DOWN]
- Escuela W3.

Y Finalmente para que veas la potencia de XHTML CSS:

[CONTINUARÁ]


Tutorial: SDL - Entorno de Programacion Win/GP32

Bueno primero agradecer a Chui su trabajo con el port de SDL ya que sin el este tutorial, no tendria mucho sentido y tambien agradecer a la gente de devkitpro, por sus fantasticos screenshots xDDD

Este entorno esta pensado para que podamos trabajar desde Windows, testeando nuestros programas en Zuindows y cuando realmente queramos ver como “anda” en la GP compilamos para ella ese mismo source y lo pasamos a nuestra SMC viendo el resultado final. Con esto yo me he ahorrado algun quebradero de cabeza y menos gasto de pilas al no tener que compilar cada vez, etc… Todo ello sin contar lo utiles que son las librerias en si Smiley: guiño

Si quereis mas informacion de como usarlas y aprovechar el trabajo de Chui:

Lo primero que debes hacer es decidir la ruta de donde quieres que descanse tu entorno de desarrollo, en este tutorial voy a usar:

C:DevkitPro

Si tu deseas usar una ruta o unidad diferente, ten encuenta luego los cambios Smiley: guiño

Primero necesitamos compilador y librerias para gp32:

devkitARMr11-win32.exe (este es el que uso yo)
o
devkitARM
r15-win32.exe (la ultima version a dia de hoy)

http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=124207 (todas las versiones)

Yo os recomiendo que bajeis la r11, aunque sea mas antigua es la version con la que Chui ha compilado sus librerias de SDL y puede que os de problemas usar una version diferente del compilador, mi recomendacion es que bajeis esto:

Aunque siempre teneis la opcion de bajaros los Sources de Chui y compilarlos para vuestra version de GCC:

Dicho esto, descomprimimos en el directorio donde hayamos elegido anteriormente, en mi ejemplo C:DevkitPro

Imagen del articulo

Y si ves que el directorio del “devkitARM” tiene un nombre diferente como: “devkitarm_rXX” renombralo para que quede como: “devkitARM“.

Ahora bajamos de

MinGW-4.1.1.exe
Y
MSYS-1.0.10.exe

y los instalamos en nuestro directorio de devkitPRO…

Imagen del articulo

Cuando termine la instalacion de Msys, apareceran unas preguntas que nos preguntaran donde tenemos instalado el MinGW, debes decirle la ruta con la barra del “7” (mira el ejemplo). Yo por ejemplo tengo: “C:/devkitpro/MinGWSmiley: contento!

Añadimos las variables necesarias de entorno de usuario y de sistema:

Os dejo un screenshot de ejemplo y mis rutas, solo amoldadlas a la ruta que vosotros hayais elegido…

En sistema cambiamos el PATH:

Imagen del articulo

C:devkitProMinGWbin;C:devkitPromsysbin;C:devkitProdevkitARMbin

Y en usuario agregamos tres nuevas variables:

Imagen del articulo

DEVKITARM || /C/devkitPro/devkitARM
DEVKITPRO || /c/devkitPro
GP32PATH || /opt

Para saber que tenemos bien instalado el entorno entramos en MSYS y ejecutamos:

skywalker@SSTT ~
$ arm-elf-gcc --version
arm-elf-gcc.exe (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

skywalker@SSTT ~
$ gcc --version
gcc.exe (GCC) 3.4.2 (mingw-special)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

La version 3.4.4 es de la r11, si bajasteis la r15 o una superior supongo que sera algo como: 4.x.y

Bien si tenemos este resultado ya tenemos nuestro entorno listo, sino volved a repetir los pasos anteriores por que algo habeis olvidado Smiley: guiño

Antes de continuar necesitamos crear un directorio para alojar nuestros ficheros…

en MSYS ejecutamos:

$ mkdir /opt

Ahora vamos a instalar el SDL oficial (x86), para compilar aplicaciones en Windows y que nos sirva de testeo; Chui usa la version 1.2.8 y aunque la ultima oficial es la 1.2.9 mejor ceñirnos a la version que usaremos en la gp para evitar posibles problemas :?

y lo guardamos en el directorio /opt (lo encontrareis en msysopt)

y ahora siguiendo un poco el tutorial que tiene chui en su pagina hacemos:

$ cd /opt/

$ tar xzvf SDL-devel-1.2.8-mingw32.tar.gz

$ cd SDL-1.2.8/

$ mv bin/* /usr/bin/

$ mv include/SDL /mingw/include/

$ mv lib/* /mingw/lib/

(ahora estos pasos creo que no son estrictamente necesarios pero los haremos no obstante :P )

$ mkdir /usr/share

$ mkdir /usr/share/aclocal

$ mv share/aclocal/* /usr/share/aclocal/

Ahora renombramos el archivo de configuracion que usa SDL:

$ cp /usr/bin/i386-mingw32msvc-sdl-config /usr/bin/sdl-config

Ahora debemos editar el archivo sdl-config que tenemos en MSYS/BIN

En la primera linea tenemos algo como:

prefix=/usr/local/cross-tools/i386-mingw32msvc

Pues lo cambiamos a nuestro entorno:

prefix=/mingw

Guardamos y ejecutamos de nuevo en MSYS:

$ sdl-config --cflags

Que dara como salida:

-I/mingw/include/SDL -Dmain=SDL_main

Por ultimo (paso opcional) vamos a comprobar que el SDL esta correctamente instalado compilando los test, en MSYS ejecutamos:

$ cd /opt/SDL-1.2.8/test/

$ ./configure

y empezara a compilar, si nos diera un problema algo asi como…

Checking for sdl-config... no

Es que no puede encontrar el fichero de configuracion, vuelve a mirar el paso donde lo copiamos mas arriba…

checking for SDL - version >= 1.2.7... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: *** SDL version 1.2.7 not found!

Es que la ruta del fichero sdl-config no es correcta, revisa el fichero de nuevo

Si todo fue correcto el resultado tiene que ser algo como esto:

checking for sdl-config... /bin/sdl-config
checking for SDL - version >= 1.2.7... yes
checking for OpenGL support... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands

skywalker@SSTT /opt/SDL-1.2.8/test
$

Bien, ponemos “make” y a esperar un poquito mas Smiley: contento!

Es posible (aunque no deberia) que en uno de estos pasos nos dijera que no puede encontrar la SDL.dll (o similar) teneis esa dll en msysbin os la pide por que no puede encontrarla en el sistema, para solucionarlo copiadla en vuestro directorio de “windows” o en “windowssystem” para ser algo mas correctos Smiley: guiño

Si todo va bien podriamos ejecutar sin problemas, por ejemplo:

$ testsprite.exe
$ testgl.exe
$ testalpha.exe
....

Listo ya podriamos compilar un programa en windows pero aqui hemos venido a trabajar para nuestra querida GP32, ¡¡Pues vamos a ello!! xD

Bajamos los ficheros necesarios de y los guardamos en opt

Y/O

(opcional para compilar los ejemplos)

$ cd /opt

$ tar xjvf sdl4gp32-precompiled-28082005.tar.bz2

Y si queremos tambien compilar los ejemplos:

$ cd

$ mkdir gp32

$ cd gp32

$ tar xjvf /opt/examples-src-28082005.tar.bz2

Ahora entramos en cualquier ejemplo y lo compilamos…

$ cd fonts/

skywalker@SSTT ~/gp32/fonts
$ make
arm-elf-as   -o crt0x_gp32.o crt0x_gp32.s
arm-elf-gcc -I/opt/include/SDL -I/opt/include -mtune=arm920 -march=armv4t -marm -mno-thumb-interwork -msoft-float -ffast-math -nostdlib -fno-common -ffreestanding -fno-builtin -fno-exceptions -mstructure-size-boundary=8 -fomit-frame-pointer -fstrict-aliasing -O6  -DGFXST -DGP32 -DGP32_LIBC -Wall -Wno-switch -DUSE_FIXED_POINT    -c -o fonts.o fonts.c
arm-elf-ld -Map fonts.map -nostartfiles --script arm-gp32bin.x -L/opt/lib crt0x_gp32.o  fonts.o -lSDL_gfx -lSDL_image -lSDL -lpng -ljpeg -lz -lc -lm -lgcc -o fonts.elf
arm-elf-objcopy -O binary fonts.elf fonts.gxb
b2fxec fonts.gxb fonts.fxe

b2fxeC v0.5d BETA - (c) 2002-4 Jouni `Mr.Spiv` Korhonen

Crunched 54.3% - total 189808 bytes

El siguiente paso es añadir las librerias especificas para windows de: SDL_Image, SDL_Mixer, SDL_flic, SFont y SDL_gfx…

[TEMPORAL RC-2]

Bajad el fichero de mi web: (Noticia del 8 de Septiembre) o directamente de aqui

Leed la documentacion y reemplazad si actualizais de una version anterior.

TODO: Soporte para GPX2? jejej :p

Ahora quizas os venga bien saber como generar un proyecto para SDL, pulsa aqui para acceder al tutorial de MAKEFILEs.

Espero que os sirva, si teneis alguna duda o he cometido algun fallo ya sabeis comentadlo Smiley: guiño

Un Saludo y EOF :P

mirko GEEPEEFIX

Subido: 2010-08-19 03:55:00 Hace funcionar el emulador GEEPEE con la versión 0.95 de las librerías de GP32 de MrMirko. Lee el fichero de ayuda para más información. (Compatible Windows/Linux)