Getting started with open mobile development on the Openmoko platform
Openmoko
-
Upload
guestec2667 -
Category
Technology
-
view
1.278 -
download
0
description
Transcript of Openmoko
Caratteristiche hardware #1
Size and Weight 120.7 x 62 x 18.5 mm133 grams
Display Touch Screen 2.8" VGA (480x640) VGA Screen
Speed ARM9 @ 400 MHz2D/3D Graphics Acceleration
GSM Tri band 850/1800/1900 MHzTri band 900/1800/1900 MHz
Caratteristiche hardware #2
Power Removable 1200 mAh battery
Memory 128MB SDRAM256MB NAND FlashmicroSD Slot
Input and Output Input and Output 2.5 mm audio jackGPS external connector
Caratteristiche hardware #3
Hardware Highlights Wi-Fi (802.1 1b/g)AGPSGPRS (2.5G not EDGE)Bluetooth 2.03axis Motion Sensors (2)
Software Highlights Openmoko GNU/Linux-based100% FOSS on CPUGNU/Linux development tools
Distributions
om2007.2 (GTK)om2008.9 (GTK + QT)FSO (FreeSmartphone.Org)SHRFDOMQT Extended (ex qtopia)DebianGentooAndroid ?!?
Features by distributions
FSONo BlueToothNo AccellerometersNo PIM
om2007.2
No Accellerometers
DebianNo Finger FriendlyNo Accellerometers
QT Extended
No GPRSNo Accellerometers
TangoGPS e openstreetmap.org
è uno dei gps piu' diffusi (in ambito Linux)non è un navigatoreusa le mappe di openstreetmapha una comunità di utenti può usare le mappe di google mapsè stabile sull'openmokousa gpsdl'utente disegna le mappe di openstreetmappuoi condividere i tuoi tracciati gpspuoi modificare eventuali errori nelle mappeaggiornamenti delle mappe in tempo reale (o quasi)
Linguaggi di programmazione
PrincipaliPython C/C++
AltriPerlBash scriptJavaBrainFuckMonoun po' quello che ti pare
Toolchain
La toolchain precompilata fornisce:
Compilatore gcc per la crosscomplileScript per la configurazione delle variabili di ambienteScript per facilitare configurazione sorgentiScript per la creazione di pacchettiopkg per l' installazione delle varie librerie necessarie
Installare la toolchainScarichiamo la toolchain per architetture i686: $ wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2 oppure per X86_64: $ wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2 Scompattiamo il pacchetto in / : #cd /#tar -xjvf ~/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
Esempio di ultilizzo della toolchain
Grazie alla toolchain si possono portare software non ancora disponibili sul Neo Freerunner , per esempio un programma che si può compilare con la triade ./configure & make & make install si compila con le seguenti istruzioni:
$ . /usr/local/openmoko/arm/setup-en $ om-conf <directory sorgenti programma>$ cd <directory sorgenti programma>$ make$ cd ..$om-make-ipkg <directory sorgenti programma>
Facile, no?
No! Molte volte bisogna modificare gli script per la configurazione del programma e i Makefile dello stesso.
Porting di Powertop
Powertop è un programma sviluppato da Intel grazie al quale possiamo sapere chi consuma la batteria del nostro portatile o in questo caso il nostro cellulare.
Procuriamoci powertop
Prima di tutto scarichiamo i sorgenti di powertop :
$ wget http://www.lesswatts.org/projects/powertop/download/powertop-1.10.tar.gz
Scompattiamo il pacchetto:
$ tar -xvzf powertop-1.9.tar.gz E ora analiziamo il Makefile
Modifichiamo il Makefile
BINDIR=/usr/binLOCALESDIR=/usr/share/localeMANDIR=/usr/share/man/man1WARNFLAGS=-Wall -W -WshadowCFLAGS?=-O1 -g ${WARNFLAGS}CC?=gcc[...]powertop: $(OBJS) Makefile powertop.h $(CC) ${CFLAGS} $(OBJS) -lncursesw -o powertop @(cd po/ && $(MAKE))
Modifichiamo il MakefileBINDIR=/usr/binLOCALESDIR=/usr/share/localeMANDIR=/usr/share/man/man1WARNFLAGS=-Wall -W -WshadowCFLAGS?=-O1 -g ${WARNFLAGS}CC?=arm-angstrom-linux-gnueabi-gcc[...]powertop: $(OBJS) Makefile powertop.h $(CC) ${CFLAGS} $(OBJS) -lncurses -o powertop @(cd po/ && $(MAKE))
Installiamo le librerie necessarie
Diventiamo root e inizializziamo le variabili di ambiente:
# . /usr/local/openmoko/arm/environment-setup
Installiamo le librerrie mancanti:
# opkg-target install ncurses-dev
Crosscompiliamo Powertop
Inizializziamo le variabili di ambiente:
$ . /usr/local/openmoko/arm/setup-en
Compiliamo il programma:
$ cd powertop-1.10
$ make
Creiamo il pachetto ipkg/opkg
Ora invece di dare il classico make install :
$ cd ..
$ om-make-ipkg powertop-1.10/
Questo produrra il pachetto pronto per essere installato sul nostro telefono:
powertop-1.10_0.1_armv4t.ipk
Un esempio di sviluppo in Python
Scopo: avere sul desktop del telefono un'icona per lanciare e fermare il demone gpsd .
Strumenti:PythonsshviGimp
Risultato:
gpsdcontrol (ver 0.2)
Per lanciare o fermare gpsd bisogna lanciare:
/etc/init.d/gpsd start|stop
Per accendere l'antenna gps bisogna scrivere 0 o 1 dentro il file:
/sys/class/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron
I dati per definire l'icona stanno in:
/usr/share/applications/gpsdcontrol.desktop
La PNG dell'icona (80x80 pixel) sta in:
/usr/share/pixmaps/gpsdcontrol.png
Il pacchetto finale sarà composto da 3 file:
/usr/bin/gpsdcontrol.py/usr/share/pixmaps/gpsdcontrol.png/usr/share/applications/gpsdcontrol.desktop 1. l'eseguibile2. la PNG dell'icona3. il file per la definizione dell'icona sul desktop
# cat /usr/share/applications/gpsdcontrol.desktop
[Desktop Entry]Name=gpsd startComment=gpsd start and stop scriptEncoding=UTF-8Version=1.0Type=ApplicationExec=gpsdcontrol.pyIcon=gpsdcontrolTerminal=FalseCategories=GTK;Application;PIMSingleInstance=trueStartupNotify=true
root@saponettofono:~# cat /usr/bin/gpsdcontrol.py #!/usr/bin/python## Start & Stop gpsd service from openmoko desktop## Carlo Minucci 2008 - GPL# [email protected] http://minucci.netimport stringimport osf = open("/usr/share/applications/gpsdcontrol.desktop", "r")file_content = f.read()pezzi = string.split(file_content, '\n')f.close()state = string.split(pezzi[1], ' ')state = state[1]
f = open("/usr/share/applications/gpsdcontrol.desktop", "w")if state == "start": f.write ("""[Desktop Entry]Name=gpsd stopComment=gpsd start and stop script""") os.system("/etc/init.d/gpsd start") os.system("echo 1 > /sys/class/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron")elif state == "stop": f.write ("""[Desktop Entry]Name=gpsd startComment=gpsd start and stop script""") os.system("/etc/init.d/gpsdcontrol stop") os.system("echo 0 > /sys/class/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron")
f.write ("""Encoding=UTF-8Version=1.0Type=ApplicationExec=gpsdcontrol.pyIcon=gpsdcontrolTerminal=FalseCategories=GTK;Application;PIMSingleInstance=trueStartupNotify=true""")f.close()
Configurare un repository #1Come tutte le distro anche OpenMoko ha un gestore di pacchetti basato sui repository: si chiama opkg .E' derivato da ipkg con alcune modifiche marginali.
I file di configurazione dei repository sono dentro /etc/opkgPer aggiungere un nuovo feed basta creare un file con dentro le informazioni del repositori:
root@saponettofono:~# cat /etc/opkg/gecco-feed.conf src/gz daily-gecco http://minucci.net/file/opkg
Configurare un repository #2
Inoltre va aggiunta l'apposita stringa al file /etc/opkg/arch.conf
root@saponettofono:~# cat /etc/opkg/arch.conf arch all 1arch any 6arch noarch 11arch arm 16arch armv4t 21arch fic-gta02 26arch neo1973 31arch om-gta02 36arch gecco 40
Usare opkgopkg update (aggiorna la lista dei pacchetti)opkg upgrade (aggiorna tutti i pacchetti aggiornabili)opkg list (da la lista di tutti i pacchetti disponibili)opkg list_installed (da la lista dei pacchetti installati)opkg install nomepacchetto (installa il pacchetto)opkg install http://nomesito.org/dir/nome_0.1_all.opk (installa il pacchetto da un percorso di rete)opkg install ../tmp/nome_0.1_all.opk (installa il pacchetto da un percorso locale)opkg remove nomepacchetto (rimuove il pacchetto)
Difetti notiSu om2008 l'eventuale installzione di gsmd conflitta con qpe e non si riesce più a telefonare.Su om2008 installando pulseaudio o un synth vocale diverso da flite disabilita l'audio.Su om2008 a volte se accendi il telefono col cavo usb poi non funzionano i messaggi. Devi riavviareSu om2008 se lo mandi in sospensione col wifi attivo, poi devi disattivarlo riavviare il telefono altrimenti il wifi non funzionaIl volume va regolato via ssh con alsamixerSe imposti il suspend automatico a volte si inceppaSe accendi il wifi dopo averlo messo in carica non funziona
Conclusioni
domanda: "Io per lavoro uso spesso il telefono, mi consigliate l'acquisto dell'Openmoko?" risposta: "No!"
Community
La community di openmoko sembra molto attiva. Ecco alcuni riferimenti:
http://wiki.openmoko.orghttp://planet.openmoko.org/http://forum.telefoninux.org/http://lists.openmoko.org/mailman/listinfo/http://docs.openmoko.org/trac/http://projects.openmoko.org/