PDA

Ver la versión completa : Beagle & Me: epic battle



Drumpi
14/05/2010, 19:01
Hola a todos:

Sentaos alrededor de la hoguera, hoy os voy a contar una lucha que no pasará a los anales de la historia, pero sí que me está dando mucho por... anal, ejem.

Más de uno conoceis mi historia con el PFC, y los problemas que me va dando. El objetivo, crear un manual en español para trabajar con beagleboard, y más concretamente con el omap3530 y el TMS320C64x.
Bueno, pues llevo meses de peleas, de descargas, de wikipedias, de consultas y hasta de chats (yo, ¡EN UN CHAT!), hasta tal punto que hace tres días tuve un sueño íntegramente en inglés y sin subtitular :P

Dejando a un lado mis idas de olla, os comento: llevo tiempo queriendo probar la placa, pero tiene salida HDMI (en realidad DVI), y es el primer problema, mi PC está en mi cuarto, y las teles con HDMI están en sendas salitas. No parece una cosa grave, pues en teoría la placa es independiente cual GP2X... Sí y no. De momento voy necesitando el puerto serie para trabajar, pues es la única manera de introducir comandos, porque:

Problema 1: no me reconoce ni teclados ni ratones USB. Los he conectado directamente a la placa y el escritorio no reacciona. He probado a meterles un hub autoalimentado, pero tampoco (dudo que le afecten el puerto serie, el paralelo y los dos PS2 que incorpora).

Bueno, no importa, después de un golpe de suerte (un gancho directo a la mandibula), vi que podía manejar y ver la placa a través de un cliente VNC. Yujuuu.

Problema 2: no consigo montar una red USB. En teoría con windows valdrían los mismos driver que uso con GP2X (RNDIS para sistemas 64bits) pero ni caso, lo detecta como un dispositivo ajeno, y ni aun forzando la carga de drivers. No pasa nada, tenemos Linux...
Bueno, tenía un kernel digamos viejo (de cuando empecé allá los noviembres del año pasado) que no hacía ni caso. Llamaba al ifconfig de la placa y sólo tenía el bucle local, ni ifconfig -a.
Así que actualicé al más moderno. Bien, tenemos la red usb0 y la puedo configurar... ¿Linux? Ubuntu, responde. Ni caso.

Problema 3: mi placa es una revisión B, me habían dicho que tenía cierto problemilla con el USB, cosas del HW que eran irreparables (cosas que no me afectaban pues en principio iba a trabajar sólo con sonido). Sudores fríos ante un golpe cargado que se dirigía a mi napia.
Bueno, hay un kernel para hacer tests al hardware. Copio, instalo, conecto y ¡sorpresa! usb0 en Beagle, red detectada en Linux, configuración manual correcta y ¡estoy dentro!

WTF!!!!!!!!!!!!!!!!!

No se si a vosotros se os ocurre algo para arreglar esto.
Habría una manera de resolver muchos problemas si al menos pudiera activar el tv-out y así conectarla a mi TV. Segun san Gugle y san Wiki, el comando mágico es:

echo 'tv' > /sys/class/display_control/omap_disp_control/graphics

Problema 4: no existe la carpeta display_control ni nada de su arbol. FFFFFUUUUUUUUUUUUUUUUUUUUUUU

Pues nada, así están las cosas. Mientras encuentro alguien que me pueda ayudar, suelto algún izquierdazo por si pillase torso, y voy trabajando en otro frente: compilar programas. Ya tengo montado el entorno con Eclipse (no me mireis mal, es lo que me han dicho que use) y el G++ de Codesourcery, y estoy con un "hola mundo" que enciende una bombillita de la placa (uuuuh, la placa va a reventar), pero aun me estoy peleando con problemas que me da el linker. Otro día que tenga abierto el "tapasoles" os lo cuento.

Gracias por escuchar, ahora entenderéis mi "estado de ánimo".
Se admiten apuestas de cuándo echará a volar la placa y cuán lejos llegará :D:D:D

< - >
Bueno, pues estaba siguiendo este tutorial de configuración de Eclipse:

http://elinux.org/BeagleBoardEclipse

Aunque he tenido que cambiar Eclipse Classic por Eclipse con C/C++ porque me daba errores y no me dejaba añadir el CDT y lo otro.
Bueno, el caso que con las librerías GNU de G++ de Codesourcery y todo instalado, he seguido al pie de la letra el tutorial y he obtenido el siguiente mensaje de error:


**** Build of configuration Default for project LEDblink ****

cs-make all
arm-none-linux-gnueabi-ld -g -v -T ldscript -Map LEDblink.map -o LEDblink crt0.o LEDblink.o
GNU ld (Sourcery G++ Lite 2009q1-203) 2.19.51.20090205
LEDblink.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
cs-make: *** [LEDblink] Error 1

Así que no sé qué hacer, me he perdido. Todos los errores anteriores he conseguido corregirlos pero esto, ni idea.

tSuKiYoMi
14/05/2010, 19:04
[CORRED INSENSATOS] --> es broma. la verdad es que no se me ocurre nada que te pueda servir como solición al tema de la red USB, lo estuve pensado el otro dia cuando lanzastes el primer hilo y buscando información por ahi pero no se como ayudarte. lo siento tio.

Drumpi
16/05/2010, 00:32
¿Alguien puede decirme cuanto se tarda en configurar la libsamplerate? Esta tarde se ha tirado como unas 7 horas, gastando la friolera de 60GB y no había terminado. He tenido que reiniciar la compilación y va por el mismo camino :S

Drumpi
17/05/2010, 01:51
¿Alguien me puede echar una mano con el tema de la compilación del LEDblink que he puesto en el mensaje que se ha fusionado con el primero? No puedo hacer nada si no arreglo eso :S

Drumpi
21/05/2010, 17:37
Mientras espero una respuesta... bueno, en realidad ya tengo una, y es que al parecer el LD de las toolchains no va como es debido y me han sugerido que lo cambie por GCC (lo he hecho en el makefile) pero me da un error de que no reconoce el parámetro -map, y se necesita después no sé para qué.

El caso es que he decidido ponerme con las toolchains a pelo con algo más sencillito, con este ACIERTA1.CPP:


#include <iostream>
#include <stdlib.h>
#include <time.h>

//using namespace std;

int puntuacion ( int cuenta, int puntitos)
{
puntitos=puntitos-cuenta;
return puntitos;
}

int main()
{
float numero;
int num_acertar,contador,puntos,a;
contador=-1;
puntos=25;
srand(time(0));
num_acertar=rand()%51-25;
cout<<"******************************"<<endl;
cout<<"* *"<<endl;
cout<<"* EL BUSCA-NUMEROS *"<<endl;
cout<<"* *"<<endl;
cout<<"******************************"<<endl;
do{
cout<<" Por favor escribe un numero: ";
cin>>numero;
/* comprobamos que el numero esta fuera de rango de juego */
while ((numero > 25) || (numero < -25)){
if (numero > 25){
cout<<"Te has pasado, el maximo es 25: ";
} else {
cout<<"Te has pasado, el minimo es -25: ";
}
cin>>numero;
contador=contador+1;
}
/* compara el numero del jugador y el aleatorio */
if (num_acertar > numero){
cout<<"El numero es mayor";
}else if (num_acertar < numero){
cout<<"El numero es menor";
}
contador=contador+1;

} while(num_acertar!=numero);
cout<<"HAS ACERTADO "<<endl;
a=puntuacion (contador,puntos);
if (a < 1){
cout<<"Que mal@ eres, no has conseguido ni un misero numero"<<endl;
}else{
cout<<"Has conseguido "<<a<<" puntos";
if ((a > 0) && (a < 11)){
cout<<", eres un/a jugador/a mediocre";
}else if ((a > 10) && (a < 21)){
cout<<", no esta mal pero se puede mejorar";
}else if ((a > 20) && (a < 25)){
cout<<", eres un/a jugador/a ejemplar";
}else{
cout<<", ¡¡¡¡QUE CHORRA TIENES!!!!";
}
cout<<endl;
}
system("PAUSE");
return 0;
}

El caso es que lanzo el GCC y me manda esto:

ACIERTA1.CPP: In function 'int main()':
ACIERTA1.CPP:21: error: 'cout' was not declared in this scope
ACIERTA1.CPP:21: error: 'endl' was not declared in this scope
ACIERTA1.CPP:28: error: 'cin' was not declared in this scope

Esto no me fallaba cuando compilaba con dev-c++. Buscando por internet he visto que debía añadir la linea "using namespace std;" (que está ahi, comentada), y esto me ha lanzado:

E:\DOCUME~1\Invitado\LOCALS~1\Temp\ccEl4nuT.o: In function `__static_initializat
ion_and_destruction_0(int, int)':
ACIERTA1.CPP:(.text+0x6c): undefined reference to `std::ios_base::Init::Init()'
ACIERTA1.CPP:(.text+0x94): undefined reference to `std::ios_base::Init::~Init()'

E:\DOCUME~1\Invitado\LOCALS~1\Temp\ccEl4nuT.o: In function `main':
ACIERTA1.CPP:(.text+0x140): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x150): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x15c): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x16c): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x178): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x188): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x194): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x1a4): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x1b0): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x1c0): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x1cc): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x1dc): undefined reference to `std::istream::operator>>(flo
at&)'
ACIERTA1.CPP:(.text+0x208): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x218): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x228): undefined reference to `std::istream::operator>>(flo
at&)'
ACIERTA1.CPP:(.text+0x2a0): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x2d8): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x318): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x328): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x354): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x364): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x374): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x384): undefined reference to `std::ostream::operator<<(int
)'
ACIERTA1.CPP:(.text+0x394): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x3b8): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x3e0): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x408): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x418): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostr
eam<char, std::char_traits<char> >&, char const*)'
ACIERTA1.CPP:(.text+0x424): undefined reference to `std::ostream::operator<<(std
::ostream& (*)(std::ostream&))'
ACIERTA1.CPP:(.text+0x444): undefined reference to `std::cout'
ACIERTA1.CPP:(.text+0x44c): undefined reference to `std::basic_ostream<char, std
::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostre
am<char, std::char_traits<char> >&)'
ACIERTA1.CPP:(.text+0x45c): undefined reference to `std::cin'
collect2: ld returned 1 exit status

A ver si vosotros que estais 20 veces más duchos que yo con el tema de las toolchains me podeis echar una manita, que el código es bien sencillo.

Drumpi
22/05/2010, 20:20
Pliiiis ¿es que nadie en este foro ha usado nunca el gcc a pelo? no me lo creo.

Endher
22/05/2010, 20:53
Está en C, ¿no? ¿Por qué no usas printf y scanf?

tSuKiYoMi
22/05/2010, 21:07
Está en C, ¿no? ¿Por qué no usas printf y scanf?


be C++ code my friend

Endher
22/05/2010, 21:14
Zasca :p yo solo conozco el C xD. De todos modos, en C++ no se podían usar funciones de C?

hopez
22/05/2010, 22:31
¿Y si pruebas con un stdio.h?

tSuKiYoMi
22/05/2010, 22:35
Zasca :p yo solo conozco el C xD. De todos modos, en C++ no se podían usar funciones de C?

yes we can.

hardyx
22/05/2010, 23:29
Creo que no estás linkando con la librería estándar de C++, libstdc++. Usa también el comando g++ para compilar en vez de gcc.

Drumpi
23/05/2010, 01:27
¿Y si pruebas con un stdio.h?

No se, la idea es que compilase sin cambiar el código, ya que con dev-c++ nunca tuve problemas.


Creo que no estás linkando con la librería estándar de C++, libstdc++. Usa también el comando g++ para compilar en vez de gcc.

Pues eso es lo raro, se supone que debería hacerlo solo, pero.... En el código debería poner iostream.h, pero es que no está en las toolchains de codesourcery :confused:
He intentado usar g++, pero me ha dado este error al ejecutar:


./acierta: /usr/lib/libstdc++.so.6: version `CXXABI_ARM_1.3.3' not found (requir
ed by ./acierta)

Tambien me interesa hacerlo con eclipse. Segun dice el tutorial debería instalar cygwin o msys además de las toolchains, pero tenía entendido que no era más que una ventana de comandos enlazada con las toolchains que trae, y el cygwin ya lo tengo pillado con las toolchains de GP2X.
Y añado más, he visto bastantes tutoriales (empezando por el del primer mensaje) que no dice nada de instalar estos programas.