Newsgroup: it.hobby.elettronica.digitale
Titolo: Primi passi con la Beagle Board

Ciao,
provo a postare anche qui qualche perplessità generica riguardo alla 
Beagle Board, magari qualcuno può darmi una dritta per evitare di 
perdere tempo inutile seguendo una strada sbagliata.
Anzitutto, dove sono arrivato:
* Beagle Board con Angstrom installato
* HUB USB a disposizione
* Monitor DVI (per il quale non riesco a cambiare la risoluzione)
Dove vorrei arrivare:
* sviluppare applicazioni C/C++ con interfaccia grafica basata su QT. 
Come secondo step, vorrei rimuovere i servizi inutili (come X ad esempio).
Quali i dubbi (attuali...)
* Come scelgo l'OS adatto? Angstrom, Debian, Mojo, Mamona....
* Quale è la modalità normale di sviluppo? Stile uC cioè scrittura e 
compilazione del codice su un PC e download sul target oppure si 
sviluppa direttamente sulla beagle board?
Tra la montagna di documentazione disponibile non sono stato di trovare 
un tutorial con il classico hello world (magari in QT!) che parta da zero...
Sono gradite anche semplici "short answer" giusto per indirizzarmi sulla 
via giusta. Se poi avete tempo da perdere, vi offrirò una birra non 
appena ci si incontra :)
Marco

 * Come scelgo l'OS adatto? Angstrom
Me l'hanno consigliato... proviamo con questo...
Ho installato anche il plugin RSE per Eclipse che stando alla 
BeagleBoard "wiki" dovrebbe semplificare il download e il debug del 
codice sul target.
Di sicuro mi manca un pezzo della catena perché se sono riuscito a 
compilare (sotto Debian) un'applicazione basata su QT in Ecplise di 
certo non è stata compilata per il processore a bordo della BeagleBoard...
I due step che mi mancano sono quindi:
1) come faccio (da Eclipse) a dire che voglio compilare per il 
processore OMAP bla bla?
2) una volta ottenuti gli eseguibili come e cosa devo fare per poterli 
trasferire ed eseguire sulla schedina?
Trovo infine un vero peccato che non abbiano inserito un'interfaccia 
ethernet. Non avrei visto che vantaggi ad averla a disposizione... :(
Ciao!
Marco

 ethernet. Non avrei visto che vantaggi ad averla a disposizione... :(
Sicuramente! Ma a questo punto se non hai l'ethernet e non usi X, linux a 
cosa ti serve? 

 cosa ti serve? 
Il fatto di non avere ethernet non dipende da me :)
Quanto al resto non ho capito il senso della domanda: avere a 
disposizione un OS non mi sembra necessariamente legato alla sua GUI e a 
ethernet, anzi!
Anche solo fermandoci alle QT, in quale altro modo potresti lanciare una 
simile applicazione e appoggiarti ai vari servizi che il sistema 
operativo mette a disposizione?
Marco

 distribuzioni già "portate".
Ricompilare il kernel è niente, la parte più brigosa è proprio mettere
assieme tutto il subset di programmi, librerie e script che ti serviranno
poi.
Dai un'occhiata a busybox, è una soluzione molto usata per i sistemi
embedded. Esistono anche X server più leggeri, ad esempio kdrive.
-- 
emboliaschizoide.splinder.com

 embedded. Esistono anche X server più leggeri, ad esempio kdrive.
Lo farò senz'altro. Per il momento però voglio fare un passo alla volta 
così da avere almeno un punto fermo da cui partire.
Già non riesco a capire come fare le cose più semplici :)
A volte mi sento davvero ottuso!
Anche perché pur seguendo le guide passo-passo capita che le cose non 
vadano come descritto.
Ad esempio se io collego la Beagle Board al mio PC via USB, Windows 
dovrebbe riconoscerla e permettere quindi una connessione dati per 
trasferire file e fare debug, invece non viene vista...
Ancora, se alimento la BB dal mio PC ovviamente non posso collegargli 
anche tastiera e mouse (che richiedono l'USB in modalità host). Però 
così facendo quando si avvia angstrom non posso fare il login a video 
(mentre posso effettuarlo via seriale, ma senza alcun effetto sullo 
schermo).
Meglio che vada a dormirci sopra... :(
Marco

 trasferire file e fare debug, invece non viene vista...
Usa la seriale!

 ...
Guarda questo:
http://free-electrons.com/docs/omap/
 

 adatto.
Forse ci sono: devo installare il CodeSourcery per l'ARM Cortex-A8 a 
bordo e dire a Eclipse di usare quello anziché mingw32. Un po' come 
faccio con i Luminary Micro.
Se mi confermi che è corretto, devo solo convincere Eclipse a non 
rimettere mingw32-make appena chiudo la finestra ;)
Marco

 rimettere mingw32-make appena chiudo la finestra ;)
Eclipse e' una fognatura di opzioni... Ci perdo la testa...
Io sto litigando con qemu: qualcuno ne sa qualcosa?

 bene. 
In confusione totale, scusami ;-)

 In confusione totale, scusami ;-)
In effetti non ho capito la conclusione date le premesse :)
Se il gcc non supporta il Cortex-A8 occorre usare il CodeSourcery, è così?
Quando utilizzo i Luminary, nel makefile sono presenti il comando che 
invoca il compilatore (arm-none-linux-gnueabi-gcc) e i vari flag di cui 
ho bisogno.
Nel caso attuale però il makefile viene generato automaticamente dalle 
QT e non posso editarlo a manina (se ne accorge e lo rimette a posto...).
Per cui come diavolo faccio a fargli capire che mi deve compilare il 
sorgente per il ARM?
La cosa strana è che pare che tutti (molti...) utilizzino la tripletta 
Eclipse + QT + BeagleBoard ma come al solito non si trova un tutorial 
per arrivare all'hello world di rito...
Marco

 per arrivare all'hello world di rito...
Ne sei certo? A me "Eclipse QT BeagleBoard hello world" (senza virgolette),
su google, mi ha dato 100 hit.

 su google, mi ha dato 100 hit.
A parte che a me ne trova solo 35... ma non è tanto il numero dei 
risultati quanto la qualità.
Nei primi 3-4 poi la parola BeagleBoard nemmeno è contenuta! Ma google 
funziona ancora come una volta? :-/
Sinceramente sono un po' di giorni che spulcio qua e là, ma ancora non 
ho trovato granché. Al solito, non cerco la pappa pronta, ma giusto un 
esempietto o una guida che mi dica come fare per compilare sotto Windows 
o Linux e poi trasferire e debuggare il codice sulla BeagleBoard. 
Insomma, cose da FAQ.
Ciao!
Marco

 Insomma, cose da FAQ.
Non sono parole da scriversi sotto Natale.

 Non sono parole da scriversi sotto Natale.
Si capiva anche senza faccine che scherzavo, vero?
Il terzo link che mi dà (i primi due sono... al tuo post di apertura) è
jkridner.s3.amazonaws.com/esc/BeagleBoard101_20081025.pp
 ,
che forse non risponde direttamente a tutte le tue domande ma che contiene
una pletora di link dove scommetto potrai trovare ciò che ti serve.

 una pletora di link dove scommetto potrai trovare ciò che ti serve.
Oh yes, quella presentazione la conosco e ho spulciato parecchi suoi link.
Comunque, per chi fosse interessato sono riuscito solo in parte 
nell'intendo. Ovvero, ora sono in grado di:
* compilare in Eclipse il codice C++ per l'ARM Cortex-M8
* utilizzare il plugin RSE per effettuare il download via SSH sulla 
Beagle Board
* eseguire il codice sulla Beagle Board
Mancano però all'appello alcuni punti fondamentali:
* compilare codice con le QT. Il problema è che quando vengono usate 
prendono iniziativa e nascondono tutti i parametri relativi al 
compilatore e al linker e quindi non riesco a configurarlo per l'ARM
* installare java sulla Beagle Board necessario per la connessione RSE 
via RSE Server
Marco

 * eseguire il codice sulla Beagle Board
Dimenticavo: il tutto sotto Windows, perché su Debian non c'è verso di 
far funzionare Eclipse e l'RSE :(
Marco

 Marco
Ma perche' insistete con sistemi operativi strani? gia' la vita e' difficile 
di per se se, quale e' il motivo di scegliere sistemi che non siano winzozz 
e company? invidia verso bill gates :-) 

 invidia verso bill gates :-) 
Come primo motivo ci metterei il costo: hai mai provato a vedere quanto 
costa mettere su una decina di Windows Embedded con il loto Target 
Designer? O anche solo le licenze di Windows per normali PC.
Poi gli altri motivi possono anche passare in secondo piano, forse.
Ciao!
Marco

 Marco
Hai ragione, ma tu non stai sviluppando su Pc per caricare firmware sulla 
Beagle board? intendi dire che usi debian per crearti un sistema operativo 
embedded?
La mia comunque era una considerazione che si basava sulle difficolota' che 
stai affrontando, e mi sembrava che a quei problemi se ne stavano 
aggiungendo altri dovuti a Debian. 

 Beagle board? 
Corretto.
Ma mi è stato consigliato da più parti di preferire comunque un sistema 
linux dal momento che tale sarà il SO sul target.
Questo per evitare accrocchi (vedi Cygwin per dirne una) e 
contemporaneamente approfondire la conoscenza di un sistema operativo 
molto simile a quello finale.
Ad ogni modo non mi sto fossilizzando su Linux. Ho anzi configurato 
Eclipse sotto Windows. Purtroppo ho ancora delle difficoltà per 
completare gli ultimi passi...
Marco

 via RSE Server
Risolto anche questo. Per chi fosse interessato occorreva il pacchetto 
'cacao'. Come diavolo avrei fatto a immaginarlo?
Bene bene, ci siamo quasi. Ora anche il debug remoto è possibile :)
Manca solo di includere le QT. Se baso il progetto sul loro wizard mi 
impedisce di modificare manualmente i comandi di compilazione, e sembra 
ignorare i flag di qmake. Se parto da un progetto C++ standard non 
riesco a configurare qmake...
Marco

 Marco
Ci sono novita' nello sviluppo? 

 Ci sono novita' nello sviluppo? 
Si, anche se il tutto mi è sembrato più macchinoso del previsto.
In pratica ho scaricato le QT-Embedded sulla macchina host (Ubuntu). Poi 
ho modificato il file di configurazione delle mkspecs arm-linux 
sostituendo il gcc di default con il Code Sourcery.
A quel punto ho ricompilato le QT.
Ora effettivamente quando lancio il make del mio progetto C++ viene 
invocato correttamente l'arm-none-linux-gnueabi-g++ e soci.
Non ho fatto a tempo a provare l'eseguibile sulla Beagle Board perché mi 
ha fatto un paio di scherzi e devo rimandare la prova causa scarso tempo 
libero.
Di punti insoluti ve ne sono comunque molti, ne elenco qualcuno:
* Le QT-Embedded si possono installare/compilare solo sotto Linux? Se 
volessi sviluppare sotto Windows applicazioni che gireranno su un target 
Arm-Linux con QT-Embedded si può fare?
* E' corretto che debba modificare i file mkspecs per avere la 
compilazione con l'arm-eabi?
* Per quanto Eclipse sembra configurato a dovere devo lanciare i comandi 
qmake e make da terminale, altrimenti sembra non trovare i percorsi 
(anche se a vedere le variabili di ambiente sembrano ok)
Marco