Riassumo le puntate precedenti (nota: potrei aver sbagliato qualche passaggio, diventando inutilmente più pessimista del necessario).
Primo problema: trovare il compilatore adatto e senza bug (infatti alcune recenti versioni del gcc hanno dei mostruosi bug per cui creano codice sballato; spero che nella gcc 4.4 rilasciata un mese fa abbiano risolto) per compilare ottimizzando per la Beagleboard (processore Cortex-A8, architettura armv7a, istruzioni SIMD "NEON", etc). Inutile perdere tempo con robe ottimizzate per ARMv6, ARMv5, ARMv4t, etc (potrebbero funzionare anche a velocità ragionevole ma finisce che uno ci si abitua e sottosfrutta la Beagleboard vita natural durante). I compilatori distribuiti dalla Texas Instruments non riescono a compilare il kernel Linux come ci riesce invece il gcc.
Visto che si comincia da zero, non bisogna decidere "quale ambiente" ma... "con quale approccio" partire.
Dunque:
1) il buon vecchio toolchain Codesourcery 2007q3 (composto dai vari gcc, librerie, etc) è ragionevolmente affidabile (anche se tira fuori degli inutili warning "rdhi/rdlo" che hanno senso solo su processori molto più vecchi del Cortex-A8 che equipaggia la Beagleboard): un buon punto di partenza per chi vuole avere solo il kernel Linux e un minimo (veramente minimo) di programmini a corredo (per usare la Beagleboard come sistema embedded). Con quello ci ho compilato il kernel Linux.
2) la distribuzione Angstrom Linux, col suo bitbake, vi fa compilare tutto "in casa" (kernel patchati, librerie, eseguibili, ambiente grafico) a cominciare dal compilatore stesso: anche questo un buon punto di partenza (molto meno macchinoso del precedente, distribuzione completa di ambiente grafico, ma vi lega alla Angström).
3) ho tentato inutilmente di districarmi con la Buildroot (che pure si compila "tutto in casa" a cominciare dalla toolchain stessa) ma tragicamente le mancano le opzioni (anche le più elementari) per farla funzionare con la Beagleboard (l'ultima versione non supporta neppure il Cortex-A8). La Buildroot è così articolata che si può considerare una distribuzione Linux completa come la Angstrom. Non si può compilare la uClibc senza Buildroot, per cui sono costretto a scartare questa soluzione.
4) la Ubuntu per Beagleboard non è ancora pronta - vi devono integrare le modifiche kernel che già funzionano sulla Angstrom, e fare tutto in modo che al resto del software Ubuntu non dispiaccia. Già da tempo è possibile compilarsi una Ubuntu per Beagleboard in modo "virtualmente nativo" (usando qemu).
Quanto al kernel Linux:
1) il kernel Linux ufficiale (2.6.29.2/2.6.30-rc2) ancora non supporta la Beagleboard - compilandolo ottengo solo di vederlo bloccarsi alla fine di "Uncompressing Linux"; le novità riguardanti la Beagleboard ancora non sono entrate nel mainstream.
2) il kernel Linux-OMAP supporta decentemente la Beagleboard - ma non sono riuscito a compilarlo correttamente.
3) il kernel Linux-OMAP patchato da quelli di Angstrom funziona bene - le patch riguardanti la Beagleboard sono poco meno di due megabytes (!!). Me lo sono ritrovato compilato e pronto compilandomi con bitbake la Angstrom.
Questo è anche il motivo per cui la Ubuntu per Beagleboard non è ancora pronta (poiché solo ciò che è nella "latest stable" del kernel Linux fa davvero testo per tutti).
Una volta sistemato il kernel, la Beagleboard sarà "pronta per il desktop" (non è mia intenzione -per ora- utilizzarla come computer desktop; per "pronta per il desktop" intendo che non c'è più bisogno di smanettare con i compilatori per farvi funzionare un Linux anche minimale).
Prossimi "passi" ufficiali che mi aspetto (non necessariamente nell'ordine in cui li annoto):
a) il supporto per Beagleboard deve stabilizzarsi (in linea di massima mancano poche cose, l'unica fastidiosa è il disconnect della USB EHCI in alcune situazioni) - una volta stabilizzato, si vedrà probabilmente un proliferare di distribuzioni Linux per la Beagleboard
b) deve quindi entrare nel kernel Linux ufficiale (cioè non deve più esserci bisogno di patch esterne)
c) deve diventare ufficiale (open-source o meno) il supporto all'accelerazione grafica 3D del PowerVR SGX (per il quale è disponibile un driver binario ancora pre-alpha, ma già ci giocavano a Quake3, dunque significa che non è tanto male)
d) deve diventare ufficiale il bridging tra il kernel ed il DSP (in modo da integrare nei propri software sezioni che utilizzano il DSP e restituiscono dati all'OMAP). Al momento c'è solo quel compilatore cl6x
e) deve nascere il supporto per Jazelle, cioè inglobare codice Java all'interno di un eseguibile (l'istruzione BXJ del Cortex attiva l'accelerazione Java da hardware, che copre il 95% dei bytecode esistenti).
solo per informazione su questo link abbiamo reso disponibile una verisone di Linux realizzato con buildroot. Per ora è in fase di sviluppo ma permette di mettere alla prova l'OMAP 35x della beagleboard con un sistema base (per sistemi embedded) che parte in circa 10 secondi.
RispondiEliminahttp://www.aptasys.eu/index.php?option=com_remository&Itemid=29&func=select&id=12
Luciano Neri
APTASYS S.R.L.
Grazie, lo segnalo subito.
RispondiEliminaIntanto consiglio di dare un'occhiata al gruppo BB_Projects (che è in lingua italiana).