Archive for the ‘Embedded Systems’ Category

Toolchain GNU ARM nuovo aggiornamento

By Vincenzo Cicogna | marzo 29th, 2017 | LEAVE A COMMENT

Toolchain GNU ARM

Negli ultimi mesi abbiamo registrato un discreto interesse nella Toolchain GNU ARM assemblata da noi e messa a disposizione di tutti attraverso questa pagina.

Per chi non ha avuto modo di interessarsi alla toolchain, vi riassumo in breve che cosa abbiamo realizzato.

In giro ci sono diverse soluzioni gratuite e non che ci mettono a disposizione una toolchain per poter interfacciarsi con microcontrollori ARM.  A volte però si cade in soluzioni con limitazioni sopratutto nelle dimensioni dell’eseguibile.

Circa un anno fa ho deciso di costruirmi ad hoc una toolchain con strumenti totalmente open source, così da poter distribuire a tutta la comunità.

In sostanza il pacchetto di software disponibili nel download, sono software, che per chi mastica il mondo dell’embedded ci si è imbattuti più volte.

Il plus del mio lavoro sta nel fornire un pacchetto completo e pronto all’uso, con un minimo di supporto per l’installazione.

Ho girato così un piccolo video che spiega come installare la toolchain ed il primo setup da fare per verificare che tutto sia ok.


Naturalmente per qualunque tipo di problema potete scrivermi direttamente nei commenti, oppure utilizzare le pagine facebook e twitter di Aos.

Buon lavoro.

Hantek 6022BL: Logic Analyzer ed oscilloscopio

By Vincenzo Cicogna | novembre 21st, 2016 | LEAVE A COMMENT

In ogni laboratorio che si rispetti ci deve essere uno strumento indispensabile per le nostre attività: l’oscilloscopio. In questo articolo vi parlo dell’ Hantek 6022BL, che è molto più di un semplice oscilloscopio.

Nel mercato esistono diversi prodotti in grado di interrogare i bus più comuni, dall’ i2c all’ SPI, sto parlando dei Logic Analyzer.

I logic analyzer solitamente sono costituiti da un interfaccia elettronica, collegata attraverso una porta USB al pc. Attraverso un software dato in dotazione si è in grado di interrogare i bus e studiare l’effettiva trasmissione e ricezione dei pacchetti. L’Hantek 6022BL  ci offre sia la funzionalità di  oscilloscopio che quella di logic analyzer.

Dopo aver installato i driver ed il software in dotazione è possibile collegare con le sonde (fornite nella confezione) i punti di misura desiderati,  avviare il software ed analizzare le forme d’onda dei segnali riprodotti in quel momento.

Vi riporto in seguito le caratteristiche tecniche di questo modello, reperibili dal sito ufficiale:

Bandwidth 20MHz
Channel 2(Digital)+16(Logic)
Sample Rate 48MSa/s
Memory Depth 1M
Rise Time 17.5ns
Time Base Precision ±50ppm
Time Base Range 4ns/div-1h/div (Step by1-2-4)
Input Impendence 1MΩ 25pF
Input Sensitivity 20mV/div~5V/div
Vertical Resolution 8Bit
Vertical Position Range 20mV ~ 5V/div @ x1 probe; 200mV ~ 50V/div @ x10 probe;
2V ~ 500V/div @ x100 probe; 20V ~ 5KV/div @ x1000 probe
DC Accuracy ±3%
Bandwidth Limited 20MHz
Trigger Type Edge, Alternative
Trigger Source CH1, CH2
Math +,-,x,÷,FFT, Invert
Cursor Measurement Cross, Trace, Horizontal, Vertical
Auto Measurement Vpp, Vamp, Vmax, Vmin, Vtop, Vmid, Vbase, Vavg, Vrms, Vcrms, Preshoot, Overshoot, Frequency, Period, Rise Time, Fall Time, Positive Width, Negative Width, Duty Cycle
Logic Analyzer Features
Channel 16
Max. Impendance 1MΩ(C=7.5pF)
Max. Voltage 0V~5.5V
Max. Sample 48M
Bandwidth 10MHz
Compatible Input TTL, LVTTL, CMOS
Memory Depth 1M/CH
General Features
Power USB Port
Demensions 200mm x100mm x 35mm
Weight 0.3KG
Standard Probe 2 x PP80

A livello di prestazioni e qualità dei materiali, il prodotto supera brillantemente il rapporto qualità/prezzo. Con poco più di 70 euro si porta a casa un giocattolino davvero interessante.

61f46q3oa1l-_sl1000_

Come oscilloscopio ci permette di analizzare molto bene  segnali nell’intorno dei 15 Mhz, superando questa frequenza si nota una certa sofferenza ai disturbi.

Come logic analyzer fa molto bene il suo lavoro. Vediamo nel dettaglio.

Prima di tutto per passare da logic analyzer ad oscilloscopio analogico bisogna azionare l’interruttore presente sul retro in posizione alta o meglio indicata con “P” sulla plancia. A questo punto collegate l’Hantek , tramite i cavetti in dotazione, al bus che volete analizzare.

L’unica pecca imputabile a questo prodotto è il software in dotazione. Il software è stato ricavato da una configurazione Labview, di conseguenza ha una interfaccia molto spartana e poco curata. Per quanto riguarda la parte analogica, può essere accettata, ma la parte digitale è praticamente inusabile.

Per fortuna però l’hardware interno lo rende compatibile con un altro software molto più user-friendly.

Sto parlando del software Salae Logic , io in particolare ho installato la versione 1.2.5, che risulta alquanto stabile e molto intuitiva.

Se volete avere uno strumento utile e versatile allo stesso tempo l’ Hantek 6022BL  è il prodotto che fa per voi. In seguito la mia valutazione complessiva del prodotto (da 1 a 10):

  • Materiale di costruzione  7
  • Versatilità 8
  • Facilità d’uso 5
  • Qualità/prezzo 8
  • Affidabilità 6

Voto finale 6,8

 

Immagini Amazon.it

Come sviluppare per stm32f4 con gcc arm su eclipse

By Vincenzo Cicogna | gennaio 11th, 2016 | SHOW COMMENTS (6)

Recentemente ci siamo imbattuti nel mondo St e ARM, acquistando una scheda di sviluppo ST NUCLEO f411RE, che monta un ARM CORTEX M4. Il primo problema che abbiamo riscontrato, è stato il compilatore, per questo motivo oggi vi spieghiamo come sviluppare per stm32f4 con gcc arm su eclipse.Toolchain GNU ARM

In effetti ci sono numerose offerte commerciali che si candidano bene come soluzione, ma ad un costo non indifferente. Cercando in rete però siamo riusciti ad installare e configurare un compilatore basato su GCC ARM per Eclipse.

Per chi è iscritto alla nostra newsletter ha avuto modo di sapere che stiamo sviluppando un nuovo progetto in ambito droni e agricoltura. In occasione di questa nostra iniziativa abbiamo deciso di affidare tutto il controllo del velivolo ad un micro-controllore della famiglia ARM, in particolare ad un Cortex M4.

Vediamo nel dettaglio di cosa abbiamo bisogno. Come prima cosa e come già accennato in precedenza abbiamo bisogno di Eclipse.

Eclipse è un un ambiente di sviluppo integrato (in inglese IDE)  Open Source, molto conosciuto per chi sviluppa in Java o Android. Le potenzialità di questo software sta nei suoi innumerevoli plugin da installare e di conseguenza alle varie features che offre per qualunque evenienza. Tra le tante applicazioni di Eclipse c’è anche la possibilità di installare una toolchain per ARM.

Dopo aver installato Eclipse, ci serve mettere su tutto il necessario per poter generare un compilato che giri su processori ARM. A questa evenienza ci viene in aiuto un plugin: GNU ARM Plugin per Eclipse.

Per semplificare tutta la procedura di setup però noi di Automazione Open Source abbiamo deciso di rendere disponibile la toolchain integrale in un file zip. In questa toolchain sarà incluso tutto quello che ci serve per utilizzare tutto l’ambiente di sviluppo, incluso il debug.

Per toolchain si intende tutta quella catena di software e ambienti di sviluppo per poter sviluppare, compilare e debuggare un dato software destinato a differenti prodotti.

Per poter scaricare la toolchain completa, vi chiediamo gentilmente di lasciarci il vostro contatto email ed il vostro nome, per potervi avvisare di futuri articoli sul mondo st e sui suoi sviluppi, inoltre rimarrete aggiornati su eventuali aggiornamenti che apportiamo nella toolchain, inclusi gli aggiornamenti di eclipse.

Download GNU ARM Toolchain

Una volta scaricato il file zip e scompattato, si avrà subito accesso alla toolchain, non ci resta altro che configurare alcuni pannelli per adattarlo alla macchina che state utilizzando attualmente.
Niente paura vi spieghiamo come fare.

  1. Innanzitutto scaricate la toolchain utilizzando questo form:
  2. A questo punto estraete l’archivio zip dove preferite. Avrete una cartella toolchain dove ci sarà tutto l’ occorrente.
  3. Avviamo Eclipse nella cartella toolchain\eclipse\eclipse.exe
  4. Si aprirà la classica finestra del launcher di Eclipse, inseriamo la cartella del workspace: toolchain\ARMtoolchain\projects, e clicchiamo su ok.
  5. A questo punto possiamo importare un progetto oppure crearne un nuovo.

Configurazione dei path per il compilatore

Prima della configurazione dei path è necessario avere un progetto nel workspace di Eclipse.
Se non abbiamo un progetto nel workspace, allora ci conviene crearlo, da File->New Project-> C project.
A questo punto avremo la seguente schermata, che andremo a settare come in figura, e poi clicchiamo su Next:

primacattura

Creazione Nuovo progetto

A questo punto procediamo con le configurazioni come in figura, cliccando sempre next per andare nella schermata successiva.

Nuovo progetto maschera

Creazione Nuovo progetto: seconda schermata

Creazione nuovo progetto eclipse

Creazione Nuovo progetto: impostazione cartelle

Creazione nuovo progetto Eclipse

Creazione nuovo progetto: selezione piattaforma

In questa schermata dobbiamo settare il nuovo path, dove è collocato il compilatore GNU ARM, aggiungendo al path dove abbiamo inserito la cartella toolchain il restante percorso contrassegnato in figura.

Creazione nuovo progetto

Creazione nuovo progetto: path della toolchain

Al termine clicchiamo su Finish

Fatto questo possiamo procedere a completare l’impostazione dei path.

Se abbiamo sbagliato nella fase di creazione del progetto a scrivere il path, è ancora possibile modificarlo, cliccando con il tasto destro sul progetto nel workspace e in seguito cliccando su proprietà.

Posizionarsi nella scheda indicata in figura,  ed in Build tools folder inserite il vostro percorso di posizionamento della toolchain, lasciando invariato dalla folder toolchain in poi. Praticamente bisogna cambiare la prima parte del path segnalato in rosso, e tutto il resto resta uguale.

Cambiare configurazione Toolchain Path

Cambiare configurazione Toolchain Path

Copiate il path, segnalato in rosso, e collochiamoci nella seguente scheda:

Cambiare path di ambiente

Cambiare path di ambiente

 

Clicchiamo due volte in path e aggiungiamo al termine della stringa  ${Path}:  incolliamo il path che abbiamo copiato in precedenza.

Finestra inserimento path

Finestra inserimento path

A questo punto il gioco è fatto!

Non ci resta che provare ad avviare il compilatore.

Per qualunque tipo di problema lasciate pure un commento o utilizzate i social network.

5 Tools Open Source per Embedded Software Developing

By Vincenzo Cicogna | settembre 14th, 2015 | SHOW COMMENTS (3)

Il mondo Embedded è un mondo a se, fatto da falsi miti, creature fantasiose e draghi….. va beh dai non esageriamo, sicuramente è un ambiente molto all’avanguardia, e poco documentato.

Imparare la  programmazione  per l’Embedded System è una attività molto complessa, per diverse ragioni: poca documentazione e nessun approccio standard ai vari target commerciali.

Di conseguenza varie case costruttrici di microcontrollori, costruiscono i propri device secondo le architetture che più preferiscono, costringendo i programmatori, a riadattarsi.

Con l’articolo di oggi, vi vogliamo rendere la vita facile, almeno dal lato su come produrre del codice per l’embedded, proponendovi 5 strumenti, a parer mio indispensabili, per programmare con un sistema embedded.

1) KDIFF3


kdiff

Per chi fa software, un applicativo in grado di fare i confronti di codice è essenziale, ed a questo proposito sono innumerevoli le alternative che si trovano online. Personalmente preferisco questo programma di compare, per diverse ragioni, prima di tutto la leggerezza. Dopo una manciata di secondi per la sua apertura, troverai il connubio tra funzionalità e semplicità. In aggiunta ha anche la possibilità di far partire il programma stesso dal tasto destro, direttamente dal set di file che si vuole confrontare.

( link )

2) Source Navigator

3706f1.large

 

Una buona alternativa ai software di navigazione, è Source Navigator. Inizialmente non sembrerà molto user friendly, ma successivamente si rivelerà molto utile, almeno nella gestione dei grandi progetti. Caricato il workspace del nostro progetto, sarà in grado di fornirci delle viste dei file, mettendo in lista le funzioni, le classi, oppure i files.

Certamente non arriverà mai ad Understand, ma è un’ottima alternativa gratuita.

link )

3) Notepad++

notepad

Non può mancare all’appello, è il code editor per eccellenza, per la sua versatilità, flessibilità e leggerezza. Altamente customizzabile, è uno degli applicativi più conosciuti nel mondo dei programmatori dato la sua facile adattabilità con qualsiasi linguaggio. Dotato di numerose estensioni, tra cui plugin per i collegamenti FTP o editor XML, notepad++ è il fedele amico di qualunque programmatore.

link )

 

4) Global Find

globalfind

Quante volte vi è capitato di cercare una variabile o un file tra le decine e decine di .c o.h di un vostro progetto? Global find vi viene in aiuto dando a disposizione un filtraggio accurato nella ricerca. In effetti possiamo scegliere che tipo di file cercare, dove cercare e così via. Un ottima alternativa allo strumento di ricerca di windows, più veloce e portatile.

( link )

 

5) Free Commande XEfreecomand

Un approccio diverso ai file system. Tutta un’altra storia. L’applicativo si presenta molto intuitivo, con una visione a doppia scheda nella quale ci sono due viste di file system diverse.

Con questa impostazione il programma mette a disposizione molto agevolmente i comandi base di gestione dei file, tra cui copia taglia e incolla, sposta da una scheda all’ altra, comparazione tra due cartelle,backup automatico, possibilità di avere cartelle favorite, ecc..

link )

 

Con quest’ultimo terminiamo questa mini rubrica sugli strumenti software per uno sviluppatore embedded.

Naturalmente come accennato in precedenza, lo sviluppo dei sistemi embedded è contornato anche da altri strumenti che variano in base al target che si sta programmando.

Di questo però ne parleremo nel prossimo articolo, nel quale esporremo i principali target commerciali con il loro relativo ambiente di sviluppo.

Alla prossima.

 

Raspberry Pi Episodio 6: RFID

By Vincenzo Cicogna | marzo 30th, 2015 | LEAVE A COMMENT

Arrivati al capolinea!
Finalmente dopo circa un anno, ci siamo riusciti!
Abbiamo portato a termine questa serie di episodi su Raspberry.
Come promesso abbiamo pubblicato 6 episodi.

In questo episodio si parla di una tecnologia molto discussa di recente, in ambito di pagamenti con smartphone e controllo accessi: RFID.
In effetti si è realizzato un sistema in grado di riconoscere opportuni TAG e consentire o meno determinate operazioni.

Qui di seguito lo schema di collegamento del setup riassunto in una tabella:

Collegamenti Raspberry

La libreria SPI potete scaricarla qui:

[cpp] git clone https://github.com/lthiery/SPI-Py
[/cpp]

mentre il framework Python per l’ RFID lo trovate qui:

[cpp]

git clone https://github.com/mxgxw/MFRC522-python

[/cpp]

Qui il codice Read.py modificato:

[cpp] import RPi.GPIO as GPIO
import MFRC522
import signal
import time

#set up GPIO using BCM
GPIO.setmode(GPIO.BOARD)

#setup GPIO PIN
led=11
GPIO.setup (led, GPIO.OUT)

continue_reading = True

# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
global continue_reading
print "Ctrl+C captured, ending read."
continue_reading = False
GPIO.cleanup()

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()

# Welcome message
print "Welcome to the MFRC522 data read example"
print "Press Ctrl-C to stop."

# This loop keeps checking for chips. If one is near it will get the UID and au$
while continue_reading:
GPIO.output(buz, False)
# Scan for cards
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

# If a card is found
if status == MIFAREReader.MI_OK:
print "Card detected"

# Get the UID of the card
(status,uid) = MIFAREReader.MFRC522_Anticoll()

# If we have the UID, continue
if status == MIFAREReader.MI_OK:

# Print UID
print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","$

# This is the default key for authentication
key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]

# Select the scanned tag
MIFAREReader.MFRC522_SelectTag(uid)

# Authenticate
status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key,$

# Check if authenticated
if status == MIFAREReader.MI_OK:
MIFAREReader.MFRC522_Read(8)
MIFAREReader.MFRC522_StopCrypto1()
GPIO.output(buz, True)
time.sleep(5)
else:
print "Authentication error"
GPIO.output (buz, False)

[/cpp]

Vi ricordo di iscrivervi alla nostra newsletter, questo mese riceverete in anticipo l’annuncio di un grande ritorno. Forse due!

Alla Prossima!