PDA

Ver la versión completa : [Tutorial] Comenzando a compilar de forma fácil con DevKitARM y el SDK oficial



theNestruo
11/03/2005, 03:20
Bueno, como acabo de empezar a compilar y me ha costado un poquito hacerlo, aquí os dejo un pequeño tutorial de cómo comenzar a compilar con DevKitARM y el SDK oficial. Incluyo una herramienta ("Make.bat - teh meik suppliar") que he hecho para facilitar(me) el trabajo.

Descargas necesarias:
- Desde la página devkit.tk (http://www.devkit.tk) tenemos acceso, en la sección de descargas, a DevKitARM (http://sourceforge.net/projects/devkitpro) (en el momento de escribir este tutorial, la release 11) y a GamePark SDK for GCC (http://homepage.ntlworld.com/wintermute2002/gamepark_sdk.zip).
- Desde la sección developers (http://www.gp32eu.com/dev.php) de GP32 EU (http://www.gp32eu.com/), descargamos GeePee32 0.40 (http://www.cgos.net/phpmyvisites/sessions/sessions.php?folder=dev&file=geepee32_windx040.zip).

Instalación:
- Instalamos DevKitARM en la carpeta C:\DevKitARM.
- Descomprimimos el SDK de GamePark para GCC en la carpeta C:\DevKitARM\arm-elf. Se creará un archivo gpstart.c en esa carpeta y las carpetas include y lib se completarán con los archivos adecuados del SDK.
- Instalamos el emulador GeePee32 en la carpeta C:\DevKitARM\Emulator. Lo configuramos adecuadamente (el firmware, los controles, etc.).
- Añadimos el compilador a la ruta de acceso. Esto se hace accediendo a las propiedades del sistema (botón derecho en Mi PC o icono Sistema en el Panel de Control), pestaña "Avanzado", botón "Variables de entorno...", doble click en la variable "Path", en la zona de "variables del sistema". Añadimos al final un punto y coma y la ruta "C:\DevKitARM\bin" (sin las comillas).
- Descomprimimos el archivo Make.bat (el archivo adjunto a este mensaje) en la carpeta C:\DevKitARM\bin.

Cómo compilar:
Ya es posible compilar, desde el símbolo del sistema, cualquier aplicación que hagamos con sólo teclear make. Más concretamente:

make: Compila el código, enlaza, construye y ejecuta en el emulador.
make clean: borra los archivos intermedios (*.o, *.elf, *.gxb)
make compile: únicamente compila y enlaza; resulta en el archivo output.elf
make build: únicamente construye el archivo output.fxe a partir del output.elf
make run: únicamente ejecuta el archivo output.fxe

Es conveniente configurar la ventana del símbolo del sistema adecuadamente para poder revisar los errores que se puedan producir. Menú "propiedades", pestaña "diseño", "tamaño del búfer de pantalla" 80x500 y "tamaño de la ventana" 80x50 son valores bastante cómodos.

Qué compilar:
Si no sabemos cómo empezar, podemos descargar GP32 SDK all-in-one version (http://www.cgos.net/phpmyvisites/sessions/sessions.php?folder=dev&file=work_en.zip) de la sección developers (http://www.gp32eu.com/dev.php) de GP32 EU (http://www.gp32eu.com/). La carpeta "examples" contiene múltiples ejemplos, dentro de las carpetas "common". Hay que modificar los #includes para que usen las cabeceras del sistema ( <.h> ) en vez de las locales ( ".h" ).
Lo nuevo que se aprende en cada ejemplo está descrito en el archivo "readme-e.txt".

Notas acerca del archivo make.bat:

Utiliza las rutas descritas en este mensaje. Si se han instalado en diferentes carpetas, será necesario modificarlo.
Utiliza los parámetros de compilación -Wall (todos los warnings habituales), -O3 (máxima optimización) y -march=armv4t (creo que para indicar la arquitectura para la que compilamos). Puede ser necesario en determinados casos modificar estos parámetros y/o añadir otros.
Enlaza con las bibliotecas c, g, gpfont, gpg_ex01, gpgraphic, gpmem, gpos, gpsound, gpstdio, gpstdlib, iberty, m y nosys. Puede ser necesario en determinados casos añadir otras.
El nombre original del archivo era "meik.bat" para evitar conflictos con "make.exe", pero dado que en mi ordenador no tengo configurado ningún make.exe en la ruta de acceso y que escribo casi automáticamente el "make", pues lo renombré a "make.bat". Si hay conflictos, cambiar el nombre ("makeeasy.bat", "meik.bat", etc...) y solucionado.


Ya no teneis excusa para empezar a programar para la GP32... ¿a qué estais esperando?

monolillo
11/03/2005, 03:43
pero quien se anima? al alcance de quien esta esto?... jejej me cuesta encender el ordenador :chupete:

el resto q se animen leche!!!!!!

Puck2099
11/03/2005, 08:59
Muy bueno, Nestruo :)

Saludos

Begto
11/03/2005, 09:06
Ya nadie tiene excusa para hacer sus primeros programitas con la GP.

Sencillo y al grano. Muy bien Nestruo :brindis:

kmkzk
13/03/2005, 19:53
Ruleeees!!
Me va a venir de perlas, para dejar de usar el DevKitAdv, y pasarme al DevKitARM :D Que segun dicen los ejecutables son mas rapidos. Es cierto?
saludos!

Ozius
13/03/2005, 20:14
otro mas que le va a venir de maravilla el tuto. me iba a poner mañana a mirar como poner el devkitarm con el sdk oficial que hay que competir en el concurso de remakes :D
gracias nestruo por facilitarnos el trabajo

ZeNiTRaM
13/03/2005, 21:14
Me he bajado todo lo que indicas, pero a la hora de compilar el ejemplo 000 con tu meik me sale esta sarta de errores:


I:\gp32\DevKitArm\examples>cd ex000\common

I:\gp32\DevKitArm\examples\ex000\common>make
"Make.bat - teh meik suppliar" by theNestruo (2005)

Compiling all source files in current folder + gpstart.c...
-----------------------------------------------------------
In file included from i:\gp32\DevKitARM\arm-elf\gpstart.c:5:
i:/gp32/DevKitARM/arm-elf/include/gpfontres.dat:650:1: warning: no newline at en
d of file
i:\gp32\DevKitARM\arm-elf\gpstart.c:30: warning: second argument of 'main' shoul
d be 'char **'
gpmain.c:18:22: gpnetlib.h: No such file or directory
gpmain.c: In function `GpMain':
gpmain.c:73: warning: implicit declaration of function `GpRectFill16'
gpmain.c:77:2: warning: no newline at end of file
Errors found!

He cambiado los #include "XXX.c" por #include <XXX.c>, pero aun asi no me van.

¿Que hago? Se supone que al menos los ejemplos *deberian* de compilar..

theNestruo
13/03/2005, 22:29
Los dos "no newline at end of file" se solucionan abriendo los archivos y metiendo un retorno de carro al final (para que la última línea escrita esté completa y acabe en fin de línea y no directamente en final de archivo). Así te quitas de problemas para cualquier cosa que hagas más adelante.

Respecto a los problemas específicos del ex000... pues yo tampoco entiendo muy bien algunas cosas (yo empecé a probar el ex001 y siguientes). Quita la línea del include del gpnetlib.h, ya que no existe ese archivo. ¡Y la función GpRectFill16() tampoco existe! Es curioso, pero no aparece por ningún lado; ni en las bibliotecas ni en el .pdf de referencia. Lo que es más: este ejemplo ni siquiera aparece listado en el readme-e.txt... Pasa del ex000; otra solución no te puedo dar.

Dwarf
13/03/2005, 23:28
gracias por el tuto ;)

dkno
14/03/2005, 15:12
Tio gracias por el tuto, no encontraba nada que me explicara como instalar y colocar todo en susitio por eso todavia no he hecho nada para mi kerida gp y eso que llevo ya 2 años con ella jejeje.

Bueno una minipregunta, y ahora despues de esto no se puede acoplar un entorno de desarrollo a esto? para ser más comodo? he visto que hablaban de uno que está muy bien pero no se como configurarlo para que funcione.

asias adelantadas.

charlyBaby
14/03/2005, 17:26
Gracias por el tutorial! Seguro que a más de uno nos viene de perlas.
Sobre como emplear esto con un entorno de desarrollo yo he leido que se puede programar para la GP32 directamente empleando el Visual C++ 6.0.
He leido tutoriales de cómo hacerlo, creo que los encontre en el emule, no obstante ahora mismo no me acuerdo bien.

Aiken
15/03/2005, 01:25
Ruleeees!!
Me va a venir de perlas, para dejar de usar el DevKitAdv, y pasarme al DevKitARM :D Que segun dicen los ejecutables son mas rapidos. Es cierto?
saludos!

creo que tu te refieres al compilador este comercial de arm, el ADS, este es el free el DevKitARM no tienen nada que ver :(

Aiken

Propeller
15/03/2005, 09:40
Quita la línea del include del gpnetlib.h, ya que no existe ese archivo. ¡Y la función GpRectFill16() tampoco existe! Es curioso, pero no aparece por ningún lado; ni en las bibliotecas ni en el .pdf de referencia. Lo que es más: este ejemplo ni siquiera aparece listado en el readme-e.txt...

Mucho me temo que el programita de ejemplo que usa esos archivos/funciones ha sido hecho con otro sdk, con funciones para 16-bit de representación de color, además de al parecer, soporte para red. No he podido comprobar las bondades del kit oficial de pago, pero imagino que tal vez se trate de ese.

Propeller

kmkzk
15/03/2005, 09:50
creo que tu te refieres al compilador este comercial de arm, el ADS, este es el free el DevKitARM no tienen nada que ver :(

Aiken

Vaya, pues si, pensaba que hablabais de ese, pero bueno, no hay problema.
Que diferencias hay entre DevkitAdv y DevKitARM?
saludos

Aiken
15/03/2005, 11:10
Vaya, pues si, pensaba que hablabais de ese, pero bueno, no hay problema.
Que diferencias hay entre DevkitAdv y DevKitARM?
saludos

pues no lo se seguro, pero creo que aparte de que esta "recopilado" por gente diferente ... pues creo que la unica diferencia es que las versiones del compilador y las librerias son las mas recientes, el DevkitAdv que hay para gp32 creo que son versiones mas antiguas :)

asi que posiblemente si que generara codigo mas optimizado, pero tampoco esperes gran diferencia.
Aiken

oankali
15/03/2005, 11:46
pues no lo se seguro, pero creo que aparte de que esta "recopilado" por gente diferente ... pues creo que la unica diferencia es que las versiones del compilador y las librerias son las mas recientes, el DevkitAdv que hay para gp32 creo que son versiones mas antiguas :)

asi que posiblemente si que generara codigo mas optimizado, pero tampoco esperes gran diferencia.
Aiken
Que sepa yo, los càlculos en coma flotante han mejorado mucho. Y por lo visto hay otrs optimizaciones pero no conozco los detalles.



Mucho me temo que el programita de ejemplo que usa esos archivos/funciones ha sido hecho con otro sdk, con funciones para 16-bit de representación de color, además de al parecer, soporte para red. No he podido comprobar las bondades del kit oficial de pago, pero imagino que tal vez se trate de ese.

Propeller


Gracias por el tutorial! Seguro que a más de uno nos viene de perlas.
Sobre como emplear esto con un entorno de desarrollo yo he leido que se puede programar para la GP32 directamente empleando el Visual C++ 6.0.
He leido tutoriales de cómo hacerlo, creo que los encontre en el emule, no obstante ahora mismo no me acuerdo bien.

Hace tiempo tenía pensado colgar un tutorial de como preparar el devkitARM con las librerías de 16 bits del SDK oficial. También tenía pensado explicar como preparar un proyecto para VC 6.
Si veo interés, intentaré ponerlo entre mis prioridades.

Oankali

AOJ
15/03/2005, 12:46
Hace tiempo tenía pensado colgar un tutorial de como preparar el devkitARM con las librerías de 16 bits del SDK oficial. También tenía pensado explicar como preparar un proyecto para VC 6.
Si veo interés, intentaré ponerlo entre mis prioridades.


Si no te consume un tiempo excesivo entre tus proyectos, a mi me interesaria ver algo de esto :D

Weif Raider
01/04/2005, 23:04
oankali, esas librerías de 16 bits, dices que son del SDK. ¿Pero pq no vienen con él?. SOn de pago o algo parecido?

A mi tb me interesaría que pusieras esas librerías y cómo añadirlas.

Gracias de antemano :brindis:

oankali
05/04/2005, 13:20
oankali, esas librerías de 16 bits, dices que son del SDK. ¿Pero pq no vienen con él?. SOn de pago o algo parecido?

A mi tb me interesaría que pusieras esas librerías y cómo añadirlas.

Gracias de antemano :brindis:

Ya he colgado en mi web (http://www.nekanium.com/gp32/news.htm) un pequeño tutorial para instalar el devkitARM con las librerias 16 bits. También hay un pequeño programa de test.
Asi es como lo tengo yo. De echo es muy parecido a lo que ha hecho TheNestruo.
Cuando tenga tiempo (y ganas :rolleyes: ) continuaré con los otros tutoriales previstos.

Oankali.

anibarro
18/04/2005, 21:38
muy sencillo y bien explicao, hasta el ejemplillo mola xD intentare pasar las cosas q tengo con SDL a el oficial a ver si ganan algo de velocidad :rolleyes: