Toolchain per la Sony PSP sotto Linux

sony-psp.jpgComplice un po’ di tempo libero durante queste vacanze, mi sono messo a studiare come programmare la PSP, dopo aver piu’ volte lodato le potenzialita’ di questo gioiellino con i miei amici e non solo.

La possibilità di avere a meno di 160 euro un hardware dotato di schermo a 4″ 480×272 perfettamente visibile anche sotto il riflesso diretto del sole), connessione Wifi, autonomia che va ben oltre le 3 ore e un discreto processore grafico mi ha stuzzicato non poco. Dotata nativamente di un browser Internet, un lettore di feed RSS e un riproduttore per radio in streaming, la PSP si pone gia’ come piccolo ed economico Internet Device. Se poi aggiungiamo programmi come PSTube e altri player che possono riprodurre audio/video salvati sulla memory stick, trasmessi in streaming o presi direttamente dalla una condivisione di rete di un computer sulla rete wireless domestica, con la possibilità di collegarla alla TV o ad un proiettore tramite il cavo AV/Composite, ecco che diventa anche un pratico media player. Senza contare la possibilità di connettere una webcam o un navigatore
GPS, tant’e’ vero che ora stanno facendo la pubblicita’ della Scenic,
mi pare, che oltre alla macchina offre proprio una PSP con navigatore incorporato. Peccato per la mancanza del bluetooth, altrimenti sarebbe davvero perfetta!

Secondo me le possibilità di questo device sono davvero tante, anche se la vocazione prettamente ludica con la quale e’ nato rischia di oscurarle irrimediabilmente. Soprattutto per farci girare applicazioni dedicate, un po’ come i widget che di cui tanto si sente parlare. Un ottimo client per reperire e visualizzare i dati piu’ svariato presenti nella rete. Un economico sostituto a molti dei programmi che oggi uso sul palmare.

Ho voluto quindi capire quanto complessa è la programmazione per la PSP e quando e’ difficoltoso realizzare piccole applicazioni non dedicate solamente all’emisfero ludico, ma che da questo possano trarre vantaggio, ad esempio, per quanto riguarda lo stile e il look’nd feel dell’interfaccia da usare.

Installazione dell’ambiente di sviluppo

Ho scelto come ambiente di sviluppo GNU/Linux, essendo il mio sistema operativo nativo. Il tutorial che segue e’ relativo ad una Ubuntu 7.10, ma facilmente applicabile anche ad altre distro come Debian o derivate. Sapendo poi quali sono i corrispondenti pacchetti di supporto da installare nelle altre distro, diventa praticamente universale.

Per prima cosa occorre preparare l’ambiente di sviluppo di base: la toolchain, cosi’ chiamata. Ho scelto di scaricare i file necessari a completare questo passo sotto /usr/src/pspdevel/, ma e’ una scelta arbitraria, si puo’ fare dove meglio si crede.

cd /usr/src
sudo mkdir pspdevel
sudo chown %username%:%username% pspdevel
cd pspdevel
apt-get install subversion
svn co svn://svn.ps2dev.org/psp/trunk/psptoolchain psptoolchain

(sostituire %username% con il vostro username)

Nella directory toolchain il file readme-ubuntu.txt contiene gia’ quasi tutte le spiegazioni necessarie, basta seguirlo per portare a termine correttamente la procedura.

Ho installato dei pacchetti necessari alla compilazione della toolchain:

sudo apt-get install build-essential autoconf automake bison flex libncurses5-dev libreadline-dev libusb-dev texinfo patch wget

Inoltre, lo script standard di compilazione della toolchain installa anche alcune utility supplementari (come ad esempio psplink e gdb), che richiedono l’installazione di ulteriori librerie (nelle ultime righe di  /usr/src/pspdevel/psptoolchain/toolchain.sh c’è scritto cosa fa, quando fa partire gli script)

apt-get install libusb-dev libsdl1.2-dev

Poi occorre stabilire la directory dove installare l’ambiente di sviluppo, quella che conterra’ il compliatore per la psp, le librerie, gli header file e diverse altre cose. Infatti /usr/src/pspdevel puo’ anche essere cancellata una volta installata la toolchain per recuperare un po’ di spazio. Generalmente viene proposta come directory /usr/loca/pspdev/, ma volendo la si puo’ anche cambiare e metterla da qualche altra parte, non ci sono controindicazioni.

Ho modificato il ~/.bashrc (avrei anche potuto modificare /etc/bash.bashrc) aggiungendo in coda le seguenti righe (l’ultima necessaria per far correttamente funzionare diversi editor):

cd
vi .bashrc (oppure, al posto di vi, gedit per Gnome e kate per KDE)
export PSPDEV=/
usr/local/pspdev

export PATH=$PATH:$PSPDEV/bin
export PSPSDK=$PSPDEV/psp/sdk

Ho fatto prendere in carico queste nuove variabili all’ambiente:

cd
source .bashrc

A questo punto ho lanciato la compilazione della toolchain (circa una mezzora sul mio pc):

cd /usr/src/pspdevel/toolchain
sudo ./toolchain-sudo.sh

Compilata la toolchain, l’ambiente di base e’ pronto e gia’ si puo’ realizzare il primo programma. Per avere pero’ un minimo di tool a disposizione, conviene anche compilare le psplibraries, delle utili librerie di supporto (freetype, zlib, libpng, libogg, libmad, SDL e molte altre):

cd /usr/src/pspdevel
svn co svn://svn.ps2dev.org/psp/trunk/psplibraries psplibraries
apt-get install libtool
cd psplibraries
sudo ./libraries-sudo.sh

Gia’ con questa configurazione, andando della directory sample dell’sdk (/usr/local/pspdev/psp/sdk/samples/), sono stato in grado di compilare i primi programmi con un semplice make.

Opzionale: si possono anche impostare diversi permessi per la directory /usr/local/pspdev/, cosi’, ad esempio, non occorrera’ spostare gli esempi presenti nell’sdk da qualche altra parte e poi compilarli. username:group dell’ultima riga sono lo user e il gruppo con cui entro
nella mia linuxbox, (legolas:legolas):

sudo chown -R username:group /usr/local/pspdev

Opzionale: rimuovere le cartelle dove sono stati scaricati i sorgenti della toolchain per guadagnare un po’ di spazio:

cd
rm -rf /usr/src/pspdevel

Opzionale: Ci sono un bel po’ di ghiotte utility disponibili per sviluppare con la nostra psp nei repository psp utilizzati. Si possono scaricare tutti semplicemente con un:

svn co svn://svn.ps2dev.org/psp/trunk/

e poi scorrendo le varie directory e compilando quello che serve. Qui una spiegazione di cosa contengono alcune di esse.

Fontiqui e qui.

Windows: Grazie a Cygwin o MinGW e’ possibile fare tutto anche sotto Windows. Ecco dei link ad alcune utili risorse su come fare.

Leave a Reply