Non mi assumo nessuna responsabilita' per danneggiamenti, perdita di dati
o danni personali come risultato diretto o indiretto dell'uso delle
informazioni contenute in queste pagine.
Questo materiale e' fornito cosi' com'e'
senza nessuna garanzia
implicita o esplicita.
Abstract |
Abstract
In questa pagina ho raccolto alcuni progetti ed informazioni che
riguardano la GP2X: questa potentissima console portatile e' una
vera Linux box, puoi usarla semplicemente per giocare o per guardare
i film, oppure puoi farci qualcosa di piu' interessante:
come navigare in Internet, sniffare traffico wi-fi o guidare il tuo
modello robot. Come al solito il limite e' solo la tua fantasia. Cambiare menuLa GP2X viene fornita con un menu preinstallato, con questo puoi avere accesso a giochi e programmi, ascoltare misica, vedere video e foto, etc. E' completamente funzionante, ma fa veramente schifo. Se preferisci un vero menu grafico invece di un clone del menu della PSP, allora puoi installare GMenu2X, se lo provi non tornerai piu' indietro! Console pinout
Ora una breve descrizione dei vari connettori della console e delle
varie piedinature. Ci sono fondamentalmente due connettori sulla
console: sul lato destro la porta USB device e in basso il
connettore EXT: il primo e' un connettore mini USB standard e
puo' essere utilizzato per collegare la GP2X ad un computer, dal
computer puoi accedere ai files contenuti nella memoria SD come se
fosse un hardisk USB portatile. Non sono ammessi altri scambi di
dati: semplicemente dal computer puoi accedere al contenuto della
memoria SD.
L'immagine qui sotto mostra la piedinatura del connettore EXT
di una GP2X-F200, come si puo' vedere contiene l'uscita audio e
video, una porta Jtag, una porta seriale e una porta USN host,
quest'ultima puo' essere usata per collegare diversi dispositivi
alla console: come tastiere, mouse, harddisks, adattatori wi-fi,
interfacce bluetooth e molto altro.
Cavo seriale
Ci sono due modi per utilizzare il connettore EXT: comprare
il craddle della GP2X o costruirsi un cavo seriale. Ci sarebbe anche
un'altra scelta ma dal mio punto di vista e' molto simile a farsi il
proprio cavetto seriale: e' la
BoB.
Bob e' essenzialmente una scheda fatta in casa, molto simile al
craddle originale, da collegare alla porta EXT della GP2X; io ho
ricavato il mio cavetto seriale proprio dagli schemi della Bob.
Attenzione: per utilizzare la porta USB host occorre
collegarla ad un HUB alimentato oppure utilizzare un power injector
lungo il cavo, perche' la GP2X non fornisce i +5V necessari per
alimentare i dispositivi USB.
Il risultato e' lungo circa 30cm, e' un pochino lungo ma e' solo un
prototipo, se preferisci puoi fare una scatolina contenente tutti i
connettori, sarebbe meglio avere un pezzo di cavo tra il connettore
EXT e gli altri perche' la porta EXT e' un pochino delicata: come ti
accorgerai tu stesso il connettore EXT e' tenuto in posizione solo
da due gancetti laterali, il risultato non ha un aspetto molto
solido quindi un pezzo di cavo aiuta ad evitare di rompere
connettore e console.
Per realizzare il traslatore di livello ho utilizzato alcuni componenti SMD per ridurre lo spazio necessario, i transistor BC337 e BC327 sono invece nel classico contenitore plastico. L'immagine qui sotto mostra il layout del circuito che ho realizzato.
Primo esperimento
Ed ora partiamo col primo esperimento: dobbiamo provare il nostro
nuovo cavo. Segui questi passi:
4) Lancia miniterm, o il tuo
emulatore di terminale preferito, le impostazioni della linea sono:
115200bps 8n1 controllo di flusso Xon/Xoff. U-Boot 1.0.0 (Sep 10 2007 - 21:07:23) U-Boot code: 03E00000 -> 03E49FA4 BSS: -> 03E82B70 IRQ Stack: 03ea3b6c FIQ Stack: 03ea4b6c DRAM Configuration: Bank #0: 00100000 63 MB Flash: 0 kB NAND:Probing at 0x9c000000 Flash chip found: Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208 64Mb) 1 flash chips found. Total nand_chip size: 64 MB Get Environment from NAND offset 0x70000 ... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial NAND read: device 0 offset 0x1a0000, size 0x40000 ... 262144 bytes read: OK NAND read: device 0 offset 0x80000, size 0xb0000 ... 720896 bytes read: OK ### main_loop: bootcmd="bootm" Hit any key to stop autoboot: 0 ## Booting image at 01000000 ... Image Name: GP2X Linux Kernel Created: 2007-10-08 9:22:48 UTC Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 673304 Bytes = 657.5 kB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel ... MMC/SD Card Detected Partition check: mmcsda: p1 Register SD: 952MsB mount...1 mount...2: INIT: version 2.84 booting <7>**>>ecc error unfixed on chunk 3268:0 Started device management daemon v1.3.25 for /dev <7>**>>ecc error unfixed on chunk 3844:0 MSDOS FS: IO charset utf8 ---- GMenu2X starting: If you read this message in the logs, check http://gmenu2x.sourceforge.net/page/Troubleshooting for a solution ----
6) Se stai usando il
GMenu2X prendi la tua GP2X in mano ed esegui
Exit, dovresti vedere il menu' originale. L'ambiente di u-boot
Nella mia GP2X il baudrate della console seriale e' impostato a
115200bps, troppo veloce per le mie applicazioni, quindi ho bisogno
di modificare le impostazioni della seriale. La porta seriale e'
utilizzata dadue programmi diversi: inizialmente viene utilizzata da
u-boot come console seriale, successivamente viene usata dal kernel
e diventa la consolse di linux; questo significa che dobbiamo
cambiare entrambe le impostazioni sia in u-boot che nel kernel. U-Boot 1.0.0 (Sep 10 2007 - 21:07:23) U-Boot code: 03E00000 -> 03E49FA4 BSS: -> 03E82B70 IRQ Stack: 03ea3b6c FIQ Stack: 03ea4b6c DRAM Configuration: Bank #0: 00100000 63 MB Flash: 0 kB NAND:Probing at 0x9c000000 Flash chip found: Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208 64Mb) 1 flash chips found. Total nand_chip size: 64 MB Get Environment from NAND offset 0x70000 ... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial NAND read: device 0 offset 0x1a0000, size 0x40000 ... 262144 bytes read: OK NAND read: device 0 offset 0x80000, size 0xb0000 ... 720896 bytes read: OK ### main_loop: bootcmd="bootm" Hit any key to stop autoboot: 0 ## Booting image at 01000000 ... Image Name: GP2X Linux Kernel Created: 2007-10-08 9:22:48 UTC Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 673304 Bytes = 657.5 kB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel ...
Quindi abbiamo bisogno di fare due cose: impostare la variabile
bootdelay ad un valore maggiore di 0 ed impostare il baudrate
della seriale ad un valore inferiore a 115200bps, in entrambi i casi
dobbiamo modificare le impostazioni nell'ambiente di u-boot. /dev/mtdblock/0 /dev/mtdblock/1 /dev/mtdblock/2 /dev/mtdblock/3 /dev/mtdblock/4 Ciascuno di questi device file mappa una zona particolare della memoria NAND della GP2X, nella GP2X-F200 rappresentano: /dev/mtdblock/0 bootloader /dev/mtdblock/1 immagine del kernel parte 1 /dev/mtdblock/2 immagine del kernel parte 2 /dev/mtdblock/3 immagine del filesystem /dev/mtdblock/4 l'intera NAND
Leggendo dal device bootargs=root=ramfs devfs=mount console=ttyS0,19200 baudrate=19200 bootdelay=5 ethaddr=00:11:22:33:44:55 ipaddr=192.168.1.225 serverip=192.168.1.230 netmask=255.255.255.0 bootfile="bios.bin" stdin=serial stdout=serial stderr=serial bootcmd=bootm
1) Da un terminale della tua linux box crea un file di testo
contenente queste definizioni e salvalo come
# tr "\n" "\0"
3) Crea un data block contenente le definizioni d'ambiente:
# makenv -b 0x4000 <newenv.bin >newenv.img
4) Ora copia il file
# dd bs=16384 if=newenv.img of=/dev/mtdblock/0 seek=28 conv=notrunc
Dovresti ricevere un messaggio d'errore tipo:
# dd bs=16384 if=newenv.img of=/dev/mtdblock/4 seek=28 conv=notrunc
Dovresti ricevere una serie di messaggi d'errore di scrittura sulla
NAND ma sembra funzionare ugualmente, c'e' un solo modo per
saperlo In realta' questo esperimento non e' proprio un siccesso completo: se hai notato la velocita' della seriale non e' cambiata, lavora sempre a 115200bps, non so perche' ma adesso possiamo usare la console di u-boot per modificare le impostazioni d'ambiente quando vogliamo! Nuova porta USB
Come abbiamo visto nel paragrafo cavo seriale
la GP2X e' dotata di una porta USB host che puo' essere utilizzata
per collegare tastiere, joypads, memory sticks, adattatori wi-fi,
hard disks e cosi' via. L'unico modo di utilizzare la porta USB host
e' utilizzare il cavo mostrato sopra, ma in
questo modo manca il +5V per alimentare i dispositivi USB, inoltre
il cavo EXT e' veramente scomodo e troppo fragile.
Il realta' all'interno della GP2X c'e' molto spazio inutilizzato,
realizzando un circuito sottile possiamo sfruttare questo spazio per
aggiungere altre due porte alla console. Per contenere gli ingombri
e mantenere un profilo basso ho utilizzato un connettore SIL a 4
pins come porta seriale, invece del tradizionale connettore sub-D a
9 pins, decisamente troppo grande.
All'interno della GP2X-F200 possiamo trovare alcuni utili test point
che forniscono le tensioni +5V, +3.3V e GND; non ho idea della
corrente che la linea a +5V puo' fornire, se il carico richiede piu'
300mA suggerisco di utilizzare un hub alimentato.
Il coperchio posteriore va tagliato per creare un'apertura per i nuovi connettori, il circuito stampato va fissato alla cover con del biadesivo.
Una volta che il circuito stampato e' fissato e tutti i buchi sono a
posto puoi procedere collegando i fili alla scheda della GP2X,
purtroppo non tutti i collegamenti si possono fare sui test points:
i segnali della seriale e della porta USB vanno prelevati
direttamente sul connettore EXT, fai attenzione perche' i pins del
connettore sono molto vicini ed e' facilissimo saldarne due
insieme.
Per collegare la porta seriale puoi usare uno dei cavetti utilizzati di solito dentro i PC per collegare la motherboard alle lucette sul pannello frontale.
Ora fai attenzione: il convertitore RS232 e' fatto con due transistor, piu' piccolo, economico e bello (almeno per me) del classico MAX232 ma con un piccolo problema: se il lato RS232 non e' collegato il segnale TX puo' fare eco dentro all'RX, questo puo' essere un problema se hai modificato l'ambiente di u-boot come visto prima. In questo caso per permettere a u-boot di completare il boot devi cortocircuitare a massa il segnale RX (lato RS232) con un jumper, questo interrompe il loop ed evita che u-boot si arresti durante la sequenza di boot. Adattatore seriale
Puoi colegare un adattatore USB RS232 direttamente alla GP2X usando questo driver. Ora contiene anche il supporto per i chip FTDI. Links
Questa e' una lista non esaustiva di argomenti collegati al
mondo della GP2X:
FAQContattiSe hai delle domande, suggerimenti, problemi, etc. puoi contattami a questo indirizzo: bit.trapper@gmail.com Ultimo aggiornamento: 29 Dic 2012 |
Questo sito e' stato realizzato interamente con vim.
Grazie a tutta la comunita' open source, alla free software foundation
e chiunque scriva software libero.