Éste tutorial pretende ser una expansión de éste
hilo_tutorial-instalar-libxenon-en-ubuntu-10-10-anadidos-zlib-y-libpng_1659526, así como una pequeña iniciación a la programación en libxenon.
Requisitos previos:- Disponer de una consola con JTAG/RGH (Obvio
).
- Tener instalado, como mínimo, la toolchain de libxenon (Ver enlace de arriba).
- Se dará por sentado que se tienen unas bases mínimas de programación en cualquier lenguaje. Si eres completamente principiante, te aconsejo que empieces por éste otro hilo de blipi (
hilo_tutorial-programando-en-c_1546639), en él se explican las bases del lenguaje de programación C, una vez aprendido esto podéis ir pasando a libxenon.
Creando un nuevo proyecto de libxenon en netbeans:En primer lugar, descargaremos éste paquete que utilizaremos como plantilla para crear nuestros proyectos:
http://www.mediafire.com/?knnfawls1kd4do2Descomprimimos el paquete en la ruta que más nos apetezca.
Cada vez que queramos crear un nuevo proyecto deberemos de crear una nueva carpeta con el nombre del proyecto y copiar en ella
el contenido de la carpeta plantilla. NetBeans usa por defecto la ruta /home/nombre de usuario/NetBeansProjects , así que yo recomiendo usar ésta misma para crear el proyecto, si no, tendremos el source por un lado y los archivos de netbeans por otro.
Empezaremos creando un proyecto nuevo llamado HelloXenon, de manera que creamos una carpeta llamada HelloXenon dentro de /home/nombre de usario/NetBeansProjects y copiamos el contenido de la plantilla en ella.
Iniciamos NetBeans y escogemos "Nuevo Proyecto/C/C++ Project with existing source", damos "next".
En la siguiente pantalla, en la primera línea, ponemos la ruta de la carpeta que hemos creado anteriormente (/home/nombre de usuario/NetBeansProjects/HelloXenon), en los check, seleccionamos "custom", el resto de opciones las dejamos por defecto, pulsamos "next".
En ésta pantalla debería de detectar el makefile que está en la carpeta del proyecto, si no es así pulsamos "back" y revisamos que la ruta del proyecto sea correcta, si todo está bien, simplemente pasamos a la siguiente pantalla.
En ésta pantalla dejamos todo tal y como está y pasamos a la siguiente (no pongáis otra ruta para el archivo compilado, dará error, el resultado compilado estará en la carpeta de nuestro proyecto).
En la siguiente ventana añadiremos el directorio de libxenon y dónde está instalado:
/opt/free60-git/libxenon
/usr/local/xenon
Pulsamos "next".
En la siguiente ventana damos a "manual configuration" y añadimos la siguiente ruta a las que ya están:
/usr/local/xenon/usr/include
Pulsamos "next".
En la siguiente debería de salir todo configurado automáticamente, pero desmarcaremos la casilla de "set as main project", ya que sino siempre nos compilará éste proyecto, hasta que tengamos otro proyecto principal y os aseguro que es un coñazo....
Por fin, pulsamos "finish" y se creará nuestro nuevo proyecto vacío.
Veréis en la barra de la izquierda el proyecto creado con sus directorios y las librerías de libxenon incluídas.
Para comenzar a programar, en el proyecto (barra de la izquierda), vamos a la carpeta del proyecto (HelloXenon) y hacemos click derecho en la carpeta "sources", seleccionamos "/new/C Main File/". Todos los archivos .c o .cpp que creemos deben necesariamente de ir en la carpeta sources (a no ser que editéis el makefile...). Se nos pedirá un nombre para el archivo, lo llamaremos "Main", para señalar que es el archivo que contiene dicha función.
Ahora sí, ya podemos comenzar a trabajar en libxenon!!!
Escribiendo nuestro primer HelloWorld:Bien, aquí voy a poner directamente el source e iré explicando lo que es cada función.
No soy ningún experto en libxenon, por lo que, si veis que pongo algo mal, ruego que me disculpéis... y que lo reportéis.
#include <stdio.h>
#include <stdlib.h>
#include <xenos/xenos.h>
#include <console/console.h>
/*
*
*/
int main() {
xenos_init(VIDEO_MODE_AUTO);
console_init();
usb_init();
usb_do_poll();
printf("Hola Mundo");
while(1){printf("\r");}
return 0;
}
Como podéis ver, lo primero que he hecho es quitar parte del código auto generado por net beans, concretamente, main no espera ningún parámetro, y he eliminado el return auto generado, además, he añadido los includes de las librerías básicas de la consola.
xenos_init(VIDEO_MODE_AUTO);
Ésta función inicia la xbox en un modo de vídeo concreto, existen muchos modos de vídeo, en éste caso, se ha seleccionado el modo de detección automática para que la aplicación sea visible por cualquier cable.
console_init();
Ésta función inicia la consola, ojo, no la xbox, sino la consola para mostrar texto (algo parecido al cmd de windows).
usb_init();
Ésta función inicia los puertos usb de la xbox.
usb_do_poll();
Reconoce los dispositivos usb enchufados a los puertos de la consola y los mandos inalámbricos vinculados a ella.
printf("Hola Mundo");
Imprime en pantalla el mensaje pasado como parámetro.
while(1){printf("\r");}
Libxenon no dispone de una función del tipo getchar(); o system("pause"); de manera que he creado un bucle while que, mientras main devuelva 1, pintará en pantalla lo que ya hay escrito. De lo contrario, nos iríamos al return 0; parando el programa y volviendo a xell.
return 0;
Para el programa y devuelve a xell.
Éste tutorial está en construcción, de modo que, cuando pueda iré añadiendo o actualizando cuando pueda. Espero que os animéis a participar en ello. Un saludo.