home page - continua (next page)

Click here for other N900-related pages!


Connettività con Linux

Inutile perdere tempo a cercare utility esterne: l'N900 è supportatissimo.

Basta agganciare il cavo USB: nella modalità "memoria di massa" il banco di 27 gigabyte di memoria utente (quella non riservata al software) viene visto come disco esterno; invece, nella modalità "PC Suite" l'N900 viene visto come periferica composita modem/ethernet. Il modem è come al solito un /dev/ttyACM0 (vedi sotto), mentre la USB si può utilizzare con un ifconfig usb0 - in questo caso occorre fare qualche operazione in più sull'N900. Anche chi utilizza Linux su piattaforme non intel-compatibili (come PPC o ARM) potrà usare il modem o l'interfaccia ethernet usb0 o la "chiavetta da 27 giga", in tutti i casi senza aver bisogno di drivers perché sono supportati da ogni kernel Linux già da diversi anni. Ottimo.

Dal terminale seriale minicom settato su /dev/ttyACM0 (o ttyACM1 se c'era già una periferica ACM) vedo che posso dare i soliti comandi di identificazione: ATI (restituisce "Nokia"), ATI1 (restituisce l'IMEI dell'apparecchio), ATI2 (restituisce il codice prodotto "RX-51" e la data di produzione; per esempio "09w47" significa quarantasettesima settimana del 2009; poi aggiunge anche la revisione firmware e la versione kernel Linux, che oggi -febbraio 2010- vedo 2.6.28-omap1).

Per attivare da command-line la connessione internet basta dare questi comandi (guarda caso sono gli stessi che utilizzavo con altri modem USB, anche non wireless, già da molti anni):
PORT=/dev/serial/by-id/usb-Nokia_N900__PC-Suite_Mode_-if06
/usr/sbin/pppd $PORT 921600 crtscts updetach defaultroute lcp-echo-failure 10 lcp-echo-interval 86400 connect +'/usr/sbin/chat -t 6 -s -v '' ATZ OK ATDT*99# CONNECT \d\c'

Su alcuni sistemi non viene settato il resolv.conf con i nomi dei nameserver. In tal caso basta aggiungere allo script di cui sopra questi due comandi, che lo ricreano utilizzando gli indirizzi di OpenDNS:
echo nameserver 208.67.222.222 >/etc/resolv.conf
echo nameserver 208.67.220.220 >>/etc/resolv.conf


In alcuni casi pare che sia utile evitare al pppd i due parametri lcp-echo.

In modalità memoria di massa, la partizione viene "smontata" dall'N900 e resa "montabile" dal PC Linux (nota: succede lo stesso con Mac e con Windows, ma sotto Linux sembra tutto più facile ed elegante). Questo può erroneamente impressionare la prima volta ("ma come, gli ho caricato venti giga di MP3 e mi dice ancora nessun brano"? invece basta staccare il cavo USB e aspettare qualche secondo che scandisca di nuovo la memoria interna... se sono parecchi giga, ci vorrà più di qualche minuto, visto che il daemon interno si spazzola non solo i file audio/video ma anche le immagini, creando thumbnails ed indici). La memoria interna è formattata in formato FAT con cluster da 64k, per cui verrà vista da qualsiasi PC con porta USB.


Una board seria

Ma vediamo da command-line come è organizzato l'hardware a bordo. È una board basata su Cortex-A8; chi conosce la Beagleboard troverà che l'architettura gli è familiare:
Nokia-N900-51-1:~# cat /proc/interrupts 
           CPU0
 11:     703836        INTC  prcm
 12:    2658885        INTC  DMA
 21:     645627        INTC  SGX ISR
 24:      10668        INTC  omap-iommu.1, Omap 3 Camera ISP
 25:         95        INTC  OMAP DSS
 26:        589        INTC  DspBridge mailbox
 28:          0        INTC  DspBridge iommu fault
 37:    2242876        INTC  gp timer
 56:    5767168        INTC  i2c_omap
 57:     421651        INTC  i2c_omap
 61:     541950        INTC  i2c_omap
 67:     246466        INTC  ssi_p1_mpu_irq0
 71:     135664        INTC  ssi_gdd
 73:        453        INTC  hci_h4p
 83:          6        INTC  mmc0
 86:     849128        INTC  mmc1
 92:          2        INTC  musb_hdrc
 93:          0        INTC  musb_hdrc
202:      53997        GPIO  wl1251
213:          4        GPIO  si4713
225:      91968        GPIO  omap2-onenand
228:         96        GPIO  cam_focus
229:          9        GPIO  cam_launch
231:         28        GPIO  slide
232:          0        GPIO  ape_rst_rq
249:         39        GPIO  proximity
260:     266868        GPIO  tsc2005
261:         20        GPIO  hci_h4p_wkup
270:          6        GPIO  cam_shutter
273:        588        GPIO  kb_lock
311:      98939        GPIO  ssi_p1_cawake_gpio
320:          0        GPIO  mmc0
337:          0        GPIO  headphone, headph
341:        141        GPIO  lis302dl
369:        930     twl4030  twl4030_keypad
371:          0     twl4030  twl4030_madc
376:          4     twl4030  PwrButton
378:         10     twl4030  twl4030_usb
379:          8     twl4030  rtc0
Err:          0

Dunque, ricapitoliamo: accelerazione grafica SGX, supporto per il DSP (necessario al multimedia), vari GPIO allocati per tasti e sensori (come ad esempio quello dello slide della fotocamera) o che generano interrupts (come per sempio le comunicazioni sulle porte i2c, a cui saranno collegate periferiche come il touchscreen), etc.


Nokia-N900-51-1:~# cat /proc/cpuinfo 
Processor : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 249.96
Features : swp half thumb fastmult vfp edsp neon vfpv3 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x1
CPU part : 0xc08
CPU revision : 3

Hardware : Nokia RX-51 board
Revision : 2101

Dunque è un ARM classe 7 con estensioni neon, floating point, thumb-code e altro.

Vedo oltre 160 processi attivi. La porta WiFi è connessa su una veloce SPI. Insomma, un'architettura complessa ma organizzata in modo pulito. Davvero avevano ragione quelli che dicevano che nell'N900 c'è più ingegnerizzazione di quanta se ne può immaginare a prima vista.


Click here for index page.

indietro (previous page) - home page - continua (next page)