El sitio personal de David Colmenero (D_Skywalk)

Posts tagged with 'Programación'

Como unir Eclipse y nuestra negrita!

Aunque personalmente siga usando Kdevelop para desarrollar en GP2x, estoy empezando a usar Eclipse para programar en otros lenguajes y me va gustando, asi que previa petición del foro de gp32spain, vamos a explicar como configurar un entorno de desarrollo para GP2x bajo Linux usando un proyecto que he creado como base común.

Como características el proyecto incluye un test de ejemplo y permite crear ejecutables de SDL SDL_mixer SDL_Image para GP2x (Debug/Release) y Linux (Debug).
Puede ser Fácilmente ampliado, ver más abajo.

Pasos previos

Lo primero que necesitamos es Eclipse, para ello nada más fácil que ir al “Gestor de paquetes Synaptic” e instalarlo, una vez instalado entraremos por primera vez en Eclipse, apareciendo una ventana que nos pedirá la ubicación de la carpeta de trabajo (donde descansarán nuestros proyectos), la seleccionamos y listo Smiley: contento!

El siguiente paso previo que se requiere es la instalación del plugin que nos permitirá usar la configuración “custom” que he preparado para la GP2X. Si seguís estos pasos no tendréis problema.
Pulsad en: HELP -> Software Updates -> Find and Install… -> Search for new features -> New Remote Site.

Ahora en Name ponemos “CDT” y en URL:
“http://download.eclipse.org/tools/cdt/releases/callisto”
Pulsamos en “Finish”, para que aparezca la lista de mirrors (Rec. Uk).
Finalmente seleccionamos las actualizaciones, esperamos a que se instalen y permitimos que Eclipse se reinicie. Como último paso debemos asegurarnos que *la perspectiva C/C * está seleccionada (Window->Open perspective->Other).

Instalando el proyecto base de GP2x

Una vez descargado (ver abajo), lo descomprimimos en una carpeta que no se encuentre dentro de nuestro directorio de trabajo seleccionado en Eclipse. Por ejemplo mi directorio de trabajo en eclipse es “/home/david/desarrollo” y he descomprimido el fichero en “/home/david/descargas/gp2x”, espero que haya quedado claro, por que es importante Smiley: guiño

Bien, pues empieza el show: File -> New -> Project… Y seleccionad la opción tal y como aparece en la imagen.

Aparece el diálogo para importar nuestro proyecto de GP2x en Eclipse, seleccionad [Browse]

Seleccionamos la carpeta descomprimida del proyecto que acabamos de bajar y pulsamos [Aceptar]
Imagen del articulo

Si todo ha ido bien debería de aparecer algo similar a esto…
Imagen del articulo

Que no se os olvide marcar “Copy project…”
Imagen del articulo

Y poco más, al pulsar [Finish] el proyecto nos aparecerá en la lengüeta de proyectos Smiley: contento!

Modificando el proyecto base de GP2x

Lo más normal es que cada desarrollador use las herramientas (toolchain) que más le apetezcan. Yo en esta ocasión lo he configurado para que funcione de primeras con el DevKit de Uncanny, pero para que ninguno se tenga que complicar mucho, si desea usar su entorno de desarrollo con Eclipse, dejo unas instrucciones, que seguro también valdrán para que los desarrolladores de Windows puedan adaptar el proyecto base.

Pulsando con el botón derecho encima de nuestro nuevo proyecto de GP2x, seleccionad “Properties” (propiedades) y C/C Build…
Imagen del articulo
En el diálogo que aparece por defecto podemos modificar muchos aspectos como agregar librerías o cambiar las opciones de compilación.

Pero para cambiar cosas como el prefijo del compilador (prefix) o la ruta de trabajo he preferido usar variables de entorno que tenéis a vuestra disposición desde la lengüeta “Environment”…
Imagen del articulo

Como se puede observar con cambiar GPPATH y/o PREFIX-TOOL, lo tendríais configurado para la mayoría de entornos de desarrollo Smiley: contento!

Por Hacer

Seguro que algún fleco se me ha quedado suelto, así que iremos mejorando este tutorial, poco a poco Smiley: Muy contento!
La verdad que lo suyo sería hacer una especie de perspectiva para desarrollar en GP, y que pudieramos crear también ejecutables de GP32, etc…

Bueno, es un comienzo Smiley: guiño

gp2x-eclipse-templates-linux

Subido: 2010-05-15 00:48:00 Eclipse template GP2x for Linux
Version 0.1 Beta

libReadINI - reads your INI files!!

LibReadINI es librería que lee ficheros INI, hecha completamente en C, lo que permite ser usada en proyectos de GP32 sin problemas Smiley: Muy contento! Aunque evidentemente puede ser usada en cualquier otra plataforma que soporte C, como proyectos para programas en MSDOS u otros pequeños sistemas embebidos.

Español

See the english version of this text below

La librería no tiene dependencias externas de SDL, libxml o similares, como la librería “oficial” de lectura de INIs que por ejemplo se usa en GP2X. Y lo mejor pesa muy poquito -unos 6kb- y es bastante rápida, aunque seguro que se podría mejorar, así comparte tus mejoras Smiley: guiño

La librería lee dos tipos de ficheros INI tipo, M$ (los que todos conocemos), o tipo “conf” de linux.

Un fichero INI podría ser algo como esto:

[General]
    name = Junk Config File Test
    version = 2

[Mode]
    StrictMode = yes
    useflags = no
    phase = 5

[OtherSection]
    name = Hello

[AnotherSection]
    name = Bye

Ejemplo Práctico

Su uso es muy simple:
- Primero abrimos el fichero, que podría ser algo como:

if(!cfgOpen("./configs/ejemplo.ini", MS_STYLE))
    {
       //no encontre el fichero
    }else
    {
        //fichero leido!
    }
  • Una vez abierto, hay que elegir una sección que la librería se encargara de buscar. Para seleccionar una sección seria:

    if(cfgSelectSection(“General”)) { //haz lo que sea… }else { //pues se ve que no la encontro!!! xD }

  • Una vez seleccionada se pueden pedir datos de la misma usando funciones para cadenas, números y booleanos… unos ejemplos finales:

    currentVersion = (Uint8) cfgReadInt(“version”, 1);

Ex: Lee la variable versión del fichero INI y la almacena en nuestra variable, currentVersion.
(El numero del final es un valor por defecto, por si no lo encuentra, etc.)

Finalmente cuando hemos terminado de trastearla debemos hacer, simplemente:

cfgClose();

La ventaja de usar ficheros INI es que puede hacer cambios en las configuraciones de sus programas y ver los cambios sin que se requiera una nueva compilación. Y si luego lo necesita siempre podría encapsular todo el código “INI” en un fichero binario… Smiley: guiño

Para acceder a más ejemplos vea la documentación de la libreria


English

LibReadINI is a library to read INI files, developed in C code.

Now you can read your game/program INI files on your GP32 and other embeddeds platforms that can run a C code!! Smiley: Muy contento!

Dont have any external dependencies (SDL, libxml, etc…)
Little -6kb- and quick code, but if you can make a better code, share your changes Smiley: guiño

Examples and more info on the library`s documentation


Is used by… / usada por…

If you used this lib email me, thanks!
Si usas esta librería mándeme un email, gracias!

libReadINI

Subido: 2010-05-15 00:43:00 Primera versión publica para GP2x/Gp32 o su tostadora.
[b]libReadINI 0.8f[/b]

First Test release for GP2x/Gp32 or your toaster.
[b]libReadINI 0.8f[/b]

(License changed to LGPL, thanks Uncanny)


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 ...