Aggiungere programmi all’N900 con Maemo SDK

maemo-sdk-ss01

maemo-developerAbbiamo già visto come sia facile installare nuove applicazioni sul Nokia N900, in particolare come sia facile aggiungere tool per programmare; abbiamo già visto infatti come si installa python e PyGTK.

Ora però scendiamo ancora più nel dettaglio e vediamo come si può programmare direttamente in C in modo da sfruttare al massimo la potenza di calcolo dell’N900 e per accedere a tutte le funzionalità del sistema operativo.

Per fare questo il modo migliore è usare l’SDK di Maemo. Vediamo come si installa e come si usa.

L’installazione che eseguirò qui è valida per Ubuntu a 32bit (se avete un’altra configurazione vedete qui). La prima modalità di installazione è quella tramite una apposita GUI che fa tutto da sola; è inutile che vi dica che questo è il metodo più facile di installare l’SDK!

Prima di tutto scarichiamoci, in una directory ad hoc, la GUI di installazione:

$ mkdir maemo5-sdk && cd maemo5-sdk/
$ wget http://repository.maemo.org/stable/5.0/maemo-sdk-install-wizard_5.0.py
–2010-11-21 18:12:37–  http://repository.maemo.org/stable/5.0/maemo-sdk-install-wizard_5.0.py
Resolving repository.maemo.org… 77.67.20.64, 77.67.20.57
Connecting to repository.maemo.org|77.67.20.64|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 153290 (150K) [text/x-python]
Saving to: `maemo-sdk-install-wizard_5.0.py’

100%[======================================>] 153,290     60.1K/s   in 2.5s

2010-11-21 18:12:40 (60.1 KB/s) – `maemo-sdk-install-wizard_5.0.py’ saved [153290/153290]

Quindi diamogli i permessi di esecuzione ed eseguiamola come root:

$ chmod a+x maemo-sdk-install-wizard_5.0.py
$ sudo ./maemo-sdk-install-wizard_5.0.py

Se avete fatto tutto bene otterrete una finestra del tipo riportato nella figura qui sotto.

maemo-sdk-ss01

Cliccate su Next e rispondete alle domande (banali) che vi verranno chieste, alla fine otterrete la schermata di riepilogo come riportato in figura.

maemo-sdk-ss02

Se quanto riportato vi aggrada premete Install e la procedura di installazione partirà. Vi avverto che quest’ultima sarà un po’ lunga (circa 30 minuti a seconda della velocità della vostra rete), ma una volta finito l’SDK sarà pronto all’uso!

Se, invece, dovreste incontrare problemi o non riuscite ad installare l’SDK (a me, ad esempio, ha dato errore…) potete utilizzare il secondo metodo, quello da linea di comando. Anche in questo caso le modalità di installazione valgono per sistemi basati su Debian/Ubuntu (ancora, se avete un altro vedete qui).

Prima di tutto occorre aggiungere la linea:

deb http://scratchbox.org/debian/ hathor main

al file /etc/apt/sources.list e quidi far aggiornare i repository del sistema:

$ sudo bash -c “echo ‘deb http://scratchbox.org/debian/ hathor main’ >> /etc/apt/sources.list”
$ sudo apt-get update

Poi installiamoci scratchbox:

$ sudo apt-get install scratchbox-core scratchbox-libs scratchbox-devkit-qemu scratchbox-devkit-debian scratchbox-devkit-doctools scratchbox-devkit-perl scratchbox-toolchain-host-gcc scratchbox-toolchain-cs2007q3-glibc2.5-arm7 scratchbox-toolchain-cs2007q3-glibc2.5-i486  scratchbox-devkit-svn scratchbox-devkit-git scratchbox-devkit-apt-https

Una volta finito aggiungiamo il nostro username come utente scratchbox:

$ sudo /scratchbox/sbin/sbox_adduser giometti yes
$ newgrp sbox

e poi facciamo login:

$ /scratchbox/login

You dont have active target in scratchbox chroot.
Please create one by running “sb-menu” before continuing

Welcome to Scratchbox, the cross-compilation toolkit!

Use ‘sb-menu’ to change your compilation target.
See /scratchbox/doc/ for documentation.

[sbox-NO-TARGET: ~] >

Ora dobbiamo installarci i tool di sviluppo sia per la piattaforma X86 (quella del nostro PC), sia per la piattaforma ARM (quella dell’N900). Procediamo un passo alla volta configurando scratchbox e scaricandoci i file che ci servono per continure l’installazione:

> sb-conf st FREMANTLE_X86 -c cs2007q3-glibc2.5-i486 -d perl:debian-etch:doctools:svn:git -t none
> sb-conf st FREMANTLE_ARMEL -c cs2007q3-glibc2.5-arm7 -d qemu:perl:debian-etch:doctools:svn:git -t qemu-arm-sb
> wget http://repository.maemo.org/stable/fremantle/armel/maemo-sdk-rootstrap_5.0_20.2010.36-2_armel.tgz http://repository.maemo.org/stable/fremantle/i386/maemo-sdk-rootstrap_5.0_20.2010.36-2_i386.tgz

Una volta definiti i target di lavoro (ARM e X86) possiamo iniziare ad installare il software che ci serve per lo sviluppo. Iniziamo con la piattaforma X86:

> sb-conf se FREMANTLE_X86
> sb-conf rs maemo-sdk-rootstrap_5.0_20.2010.36-2_i386.tgz
> sb-conf in -edFL
> apt-get update
> fakeroot apt-get install maemo-sdk-debug

Fatto questo dobbiamo recarci a questo link della Nokia per accettare i termini di licenza del software proprietario che ci serve (questa è la parte che mi piace di meno, avrei preferito che fosse tutto software libero… n.d.r.). Una volta finito dovremmo ottenere un codice da utilizzare nel solito file /etc/apt/sources.list come segue:

> echo ‘deb http://repository.maemo.org/ fremantle/codice nokia-binaries’ >> /etc/apt/sources.list

Semplicemente sostituite alla stringa codice il codice che la Nokia vi ha dato una volta accettati i termini di licenza.

Aggiorniamo i repository e quindi installiamo i pacchetti che ci servono:

> apt-get update
> fakeroot apt-get install nokia-binaries nokia-apps

Alla fine ridefiniamo la directory opt:

> rm -rf /targets/FREMANTLE_X86/opt
> mkdir /targets/FREMANTLE_X86/opt

Poi ripetiamo gli stessi passi per la piattaforma ARM:

> sb-conf se FREMANTLE_ARMEL
> sb-conf rs maemo-sdk-rootstrap_5.0_20.2010.36-2_armel.tgz
> sb-conf in -edFL
> apt-get update
> fakeroot apt-get install maemo-sdk-debug
> echo ‘deb http://repository.maemo.org/ fremantle/codice nokia-binaries’ >> /etc/apt/sources.list
> apt-get update
> fakeroot apt-get install nokia-binaries nokia-apps
> rm -rf /targets/FREMANTLE_ARMEL/opt
> mkdir /targets/FREMANTLE_ARMEL/opt

Fatto! Ora passiamo ad un semplice test; usiamo, per semplicità, il classico programmino «Ciao Mondo!» in C:

#include <stdio.h>

int main(int argc, char *argv[])
{
        printf(“Ciao Mondo!n”);

        return 0;
}

Salviamolo nel file test.c e quindi compiliamolo per X86:

> sb-conf se FREMANTLE_X86
> make test
cc     test.c   -o test
> file test
test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
> ./test
Ciao Mondo!

Funziona (come ovvio), ora però compiliamo per ARM:

> sb-conf se FREMANTLE_ARMEL
> rm test
> make test
cc     test.c   -o test
> file test
test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
> ./test
Ciao Mondo!

Bingo! Funziona anche questo… notate che il file è compilato per ARM ma gira ugualmente sul PC perché scratchbox utlizza QEMU per emulare il codice ARM.

Ora non ci resta che provarlo sull’N900. Basta passarlo sul cellulare con scp e quindi eseguirlo:

> scp test root@192.168.32.93:
root@192.168.32.93’s password:
test                                          100% 5075     5.0KB/s   00:00    
> ssh root@192.168.32.93
root@192.168.32.93’s password:

BusyBox v1.10.2 (Debian 3:1.10.2.legal-1osso30+0m5) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.

Nokia-N900:~# ./test
Ciao Mondo!

Facile no? :)

Su Rodolfo Giometti

Ingegnere informatico libero professionista ed esperto GNU/Linux offre supporto per: - device drivers; - sistemi embedded; - sviluppo applicazioni industriali per controllo automatico e monitoraggio remoto; - corsi di formazione dedicati. Manutentore del progetto LinuxPPS (il sottosistema Pulse Per Second di Linux) contribuisce attivamente allo sviluppo del kernel Linux con diverse patch riguardanti varie applicazioni del kernel e dispositivi (switch, fisici di rete, RTC, USB, I2C, network, ecc.). Nei 15+ anni di esperienza su Linux ha lavorato con le piattaforme x86, ARM, MIPS & PowerPC.

Lascia un commento

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi