Visualizzazione post con etichetta programmazione. Mostra tutti i post
Visualizzazione post con etichetta programmazione. Mostra tutti i post

giovedì 7 giugno 2012

Programmare microcontrollori PIC su FreeBSD

Introduzione

In questo post vedremo come programmare microcontrollori PIC in ambiente FreeBSD. In particolare come configurare l'IDE Piklab per aiutarci a scrivere i programmi e flashare il PIC. Non mi soffermerò sulla parte di programmazione, quindi se cercate un buon corso di programmazione per PIC vi consiglio quello di settorezero. Se invece siete alla ricerca di una guida per le distro di Linux vi rimando al blog di Salvatore Salzano punti di (s)vista.

Premesse 

Prima di incominciare mi preme ricordare che l'uso di PK2CMD su FreeBSD, come potete leggere nel file ReadmeMakefile.txt, è "very experimental"; questo significa che non è stabile e alcune operazioni, come l'aggiornamento del firmware del pickit2 e l'utilizzo di più programmatori contemporaneamente, non sono supportate e/o vanno effettuate su altri OS.

Cosa ci serve

Per cominciare a programmare il nostro microcontrollore abbiamo bisogno di:
  1. un microcontrollore (of course), io ho provato con un PIC16F877A
  2. Pickit2: il programmatore originale Microchip, reperibile facilmente in Rete dai siti specializzati. Il prezzo si aggira intorno ai 30/40 euro
  3. sdcc : un compilatore C per microcontrollori, che potete trovare nei ports
  4. pk2cmd: programma per flashare il pic, scaricabile qui.
  5. Piklab: un IDE per la programmazione dei microcontrollori, anch'esso presente nei ports
Abbiamo inoltre bisogno di un circuito elettronico per collegare il Pickit2 al microcontrollore e quest'ultimo ai vari componenti. Io personalmente ho collegato il tutto con una breadboard seguendo lo schema fornito nella lezione 2 del corso di settorezero; comunque esistono anche schede di sviluppo facilmente reperibili in Rete (anche se dal costo abbastanza elevato).

Installazione

Procediamo con l'installazione dei programmi necessari. Per quanto riguarda sdcc non ci dovrebbero essere problemi, basta installarlo dai ports, da root lanciamo:
# cd /usr/ports/lang/sdcc && make install clean
Anche Piklab è presente nell'albero dei ports, per installarlo digitare:
# cd /usr/ports/devel/piklab && make install clean
Adesso installiamo pk2cmd, prima di tutto spostiamoci nella cartella dove lo abbiamo scaricato ed eseguiamo
tar xvf pk2cmdv1.20LinuxMacSource.tar.gz
Una volta scompattato il file compiliamolo con il comando:
cd pk2cmdv1.20LinuxMacSource/ && gmake freebsd
Se vogliamo installarlo dobbiamo ottenere i diritti di root e digitare
# gmake install
altrimenti possiamo utilizzare i binari dove si trovano. Ricordatevi che non essendo un port non può essere manipolato con gli strumenti messi a disposizione dal sistema operativo.

Configurazione dell'ambiente

Per poter utilizzare pk2cmd anche da utente non amministratore dobbiamo configurare devfs in modo opportuno. Prima di tutto aggiungiamo il nostro utente al gruppo operator
# pw groupmod operator -m $USERNAME
dove al posto di $USERNAME mettiamo il nome del nostro utente. Aggiungiamo al file /etc/devfs.rules (bisogna crearlo se non esiste) le seguenti linee
[system=10]
add path 'usb/*' mode 0660 group operator

poi editiamo /etc/rc.conf e aggiungiamo questa linea
devfs_system_roleset = "system"
ora ricarichiamo devfs con la nuova configurazione eseguendo
# /etc/rc.d/devfs restart
Ora passiamo alla configurazione vera e propria di Piklab, così da permetterci di sviluppare, compilare e flashare il dispositivo senza (quasi) l'uso della riga di comando. Inoltre permette di configurare i registri del dispositivo senza scrivere tonnellate di codice a mano.
Qui di seguito vado a riassumere quanto già scritto sulla guida di punti di (s)vista a proposito di Piklab, dopo di che spiegherò come configurare il compilatore e il linker per compilare i sorgenti del progetto.
Avviamo Piklab e spostiamoci su Settings-> Configure Programmer, selezioniamo Custom Programmer e inseriamo i seguenti comandi:
read pk2cmd -PPIC%DEVICE -B/usr/share/pk2/ -GF %O
erase pk2cmd -PPIC%DEVICE -B/usr/share/pk2/ -E
program pk2cmd -PPIC%DEVICE -B/usr/share/pk2/ -F %O -M
verify pk2cmd -PPIC%DEVICE -B/usr/share/pk2/ -F %O -Y
blank check pk2cmd -PPIC%DEVICE -B/usr/share/pk2/ -C
run pk2cmd -PPIC%DEVICE -B/sr/share/pk2/ -T
stop pk2cmd -PPIC%DEVICE -B/usr/share/pk2/ -R

e salviamo premendo OK.
Adesso creiamo un nuovo progetto da Project->New Project riempiamo la form che ci viene proposta come in Fig 1
Fig 1 - configurazione nuovo progetto
una volta creato il nuovo progetto, clicchiamo sull'icona del titolo ci apparirà una finestra con le opzioni del progetto, selezioniamo il tab "Toolchain". Nel tab "Compiler" aggiungiamo una nuova cartella degli include aggiungendo in "Include directories" la cartella
/usr/local/share/sdcc/non-free/include/
come riportato in Fig. 2
Fig. 2 - Aggiunta della nuova cartella di include
Ora spostiamoci su "Linker" e alla riga "Custom options" aggiungiamo:
-L/usr/local/share/sdcc/non-free/lib/pic14
se state utilizzando un pic diverso dal PIC16F877A, l'ultima cartella potrebbe cambiare, nel caso aggiungere la cartella esatta.
Fig. 3 - configurazione Linker
Ora non vi resta che scrivere il programma in C; per compilare il sorgente e flashare il microcontrollore basterà premere sugli appositi pulsanti messi a disposizione da Piklab.

Conclusioni

In questa guida abbiamo installato i programmi necessari alla programmazione dei microcontrollori PIC, poi abbiamo installato e configurato l'ambiente di sviluppo Piklab. Vi segnalo che sempre sulla guida di punti di (s)vista è presente un capitolo per automatizzare la configurazione dei registri del PIC utilizzando le funzionalità di Piklab.

giovedì 29 marzo 2012

Sviluppare applicazioni per iPhone su Ubuntu

Introduzione

Molti di voi si saranno chiesti se è possibile programmare applicazioni per iPhone senza l'utilizzo di Mac OS X e senza, il conseguente, utilizzo di XCode. Dopo diversi tentativi ho provato javacom toolchan4, questo sistema offre un semplice script per l'installazione della SDK per iOS sotto Ubuntu 10.10. Toolchan4 predispone il sistema operativo alla compilazione di applicazioni per iOS e permette l'integrazione con la suite per lo sviluppo Theos.

Premesse

Come potete leggere dalla home del progetto, Toolchan4 funziona out of the box su Ubuntu 10.10. Benché esista un workaround per il funzionamento sulle versioni successive di Ubuntu, io vi consiglio (ed è quello che ho fatto anch'io) di installare Ubuntu Maverick su VirtualBox. Oltre a non costringerci ad utilizzare un OS che non verrà più supportato, ci permette di mettere mano alle cartelle di sistema con meno preoccupazioni.
Questo post è incentrato alla preparazione del sistema per poter programmare iOS 4.3.3 e per installare le applicazioni sul dispositivo. Toolchan4 supporta anche versioni successive dell'SDK, quindi alcuni passaggi potrebbero essere diversi.

Ingredienti


  • Con l'utilizzo di una macchina virtuale
  1. una copia di Virtualbox per il proprio sistema operativo
  2. una copia della distribuzione Ubuntu 10.10


  • Necessario per l'installazione dell'SDK
  1. una copia del file xcode_3.2.5_and_ios_sdk_4.2_final.dmg reperibile sul sito di Apple Developer (richiede la registrazione al sito)
  2. Java Virtual Machine reperibile da Ubuntu Software Centre
  3. 7zip, disponibile su Ubuntu Software Centre, per scompattare il file .dmg
  4. HFSExplorer per aprire il file .hfs all'interno del pacchetto di xcode. Il programma è fruibile su Ubuntu scaricando lo zip.
  • Deploy ed esecuzione dell'applicazione
  1. un iPhone sul quale è stato eseguito il jailbreak
  2. Openssh e Installous installati sull'iPhone

Installiamo il toolchan

  • Preparazione della macchina virtuale
Se avete deciso di installare Ubuntu su Virtualbox potete seguire una delle guide facilmente reperibile sul Web. L'unico accorgimento che dovete fare è la configurazione della rete della macchina virtuale. Solitamente VirtualBox configura le nuove macchine virtuali in configurazione NAT. Questa configurazione fa in modo che la macchina creata rimanga in una rete separata. Il problema è che NON possiamo accedere ai dispositivi collegati in LAN, come il nostro iPhone. Per ovviare a questa condizione configuriamo la rete come Bridged Adapter: in questo modo, oltre all'accesso a Internet, avremo la possibilità di accedere a tutti i dispositivi LAN, iPhone compreso(Fig. 1).
Fig. 1 - proprietà della macchina virtuale



Per maggiori informazioni sulla configurazione di rete di VirtualBox, consultate il capitolo 6 del manuale

  • Estrazione dei file necessari
Una volta scaricato dal sito di Apple il pacchetto di XCode, procediamo con l'estrazione dei file necessari all'installazione dell'ambiente di sviluppo. Per prima cosa decomprimiamo l'archivio con 7Zip ed estraiamo il file 5.hfs. Da terminale spostiamoci nella cartella dove abbiamo scaricato il file xcode_3.2.5_and_ios_sdk_4.2_final.dmg e digitiamo:
7z e xcode_3.2.5_and_ios_sdk_4.2_final.dmg 5.hfs

Una volta ottenuto il file navighiamo al suo interno grazie a HFSExplorer. Ho deciso di adottare questa procedura perché montando (o mount-ando) in loopback la partizione potrebbe dare dei problemi (almeno così dicono).
Prima di procedere bisogna installare la JDK di Java da Ubuntu Software Centre (semplicemente cercando java e installando il pacchetto Openjdk java 6 runtime)
Avviamo HFSExplorer digitando, da terminale,
./runfsb.sh
nella cartella scompattata

Una volta avviato il programma, selezioniamo File -> Load file system from file e selezioniamo il file 5.hfs appena scompattato.  Il file che ci interessa è nella cartella /Packages/ e si chiama iPhoneSDK4_2.pkg (Fig. 2)


Fig. 2 - Cartella con il file iPhoneSDK4_2.pkg

La procedura di installazione che trovate nella home di toolchan4 (linkata ad inizio articolo) non presenta alcuna complicazione. Attenzione al punto 6, lì la guida vi propone di rinominare alcuni file di sistema (as e ld), per questo vi dicevo che è consigliabile usare una macchina virtuale.
Ok, questo è quanto per avere l'ambiente di sviluppo funzionante, non dovete fare altro che testare che tutto sia andato a buon fine compilando alcuni dei progetti di esempio.

  • Deploy e installazione del pacchetto ipa sul dispositivo

Prima di procedere con l'installazione del file .ipa (pacchetto dell'applicativo per iPhone) dovete assicurarvi di avere installato, sul vostro dispositivo, OpenSSH e Installous. Come installare queste due applicazioni vi rimando all'onnisciente Google. La prima cosa da fare è recuperare l'indirizzo IP del telefonino. Per fare ciò aprite l'applicazione Impostazioni e scegliete Wi-fi. Qui troverete, alla voce "scegli un network" la lista di reti wireless; quella che ci interessa è la voce spuntata da una V. Premete la freccia blù sulla voce a cui siete connessi e vi appariranno alcune informazioni, l'indirizzo IP è il primo in alto (quello segnato, neanche a dirlo, come "Indirizzo IP"). Ora abbiamo tutto il necessario per deployare il pacchetto ipa su iPhone.
Da Ubuntu andiamo su risorse -> Connetti al server. Ci verrà proposta una finestra con dei campi. Nel campo "Tipo Servizio" selezioniamo SSH, come "Server" l'IP del iPhone, i camp "Porta" e "Cartella" non ci interessano quindi lasciamoli pure vuoti, nel campo "Nome Utente" inseriamo root e clicchiamo su connetti.(Fig3)
Fig. 3 - Form "Connessione al server" compilata



Poco dopo dovrebbe apparirci una finestra per la password, quella di default è alpine. Una volta connessi cerchiamo la cartella /var/mobile/Documents/Installous/Downloads e copiamo il file .ipa. Spostiamoci ora sul telefono, avviamo Installous, premete su Downloads, selezionate l'applicazione appena scaricata e installatela. Tornando alla home dovreste vedere l'icona per avviare l'applicazione.

Conclusione

In questo post abbiamo visto dove recuperare i file necessari all'installazione di toolchan4, come predisporre il sistema operativo (Ubuntu 10.10) e come uploadare ed installare la nostra applicazione su iPhone. Ora non ci resta che dare sfogo alla nostra fantasia e sviluppare applicazioni per iOS. Purtroppo non ho trovato nessuna IDE Open Source che permetta lo sviluppo di applicazioni in modalità visuale, pertanto ci dobbiamo accontentare di scrivere il codice a mano.

Marco "Mad Hatter"