3. Che cos’è un sistema Embedded
In elettronica e informatica, con il termine sistema embedded si
identificano genericamente tutti quei sistemi elettronici di elaborazione
a microprocessore progettati appositamente per una determinata
applicazione (special purpose) ovvero non riprogrammabili dall’utente
per altri scopi, spesso con una piattaforma hardware ad hoc, integrati
nel sistema che controllano ed in grado di gestirne tutte o parte delle
funzionalità richieste. [Wikipedia]
• Non significa utilizzare un computer tradizionale, general purpose
• Utilizzo di un processore “general purpose” (tra I più popolari: arm,
x86, ppc) o un ancora più semplice microcontrollore
4. Che cos’è un microcontrollore?
In elettronica digitale il microcontrollore o microcontroller o MCU
(MicroController Unit) è un dispositivo elettronico integrato su
singolo chip. Un microcontrollore include:
• I/O bit discreti per il controllo o rilevamento di stati logici
• I/O seriale (porte seriali, UARTs)
• Altre interfacce di comunicazioni seriali come I2C, SPI e CAN.
• Periferiche come timer, contatori di eventi, generatori di PWM
• Generatore di clock (spesso si tratta di un oscillatore, un
risuonatore o un circuito RC)
• Convertitori A/D multicanali
• Programmazione e debugging In-circuit
5. Open Source Hardware
Hardware libero si riferisce ad hardware elettronici e di computer
che sono stati progettati con la stessa politica del software libero
ed open source (FOSS).
L’hardware libero è parte della
cultura dell’open source che
espande quest’ideologia al di fuori
dell’ambito software.
6. Open Source Hardware
Il termine viene principalmente usato per esprimere la libera
divulgazione di informazioni riguardanti il progetto stesso
dell’hardware comprendendente:
• Schemi
• Lista dei materiali
• Layout dei dati del circuito stampato
• FOSS per far girare l’hardware
• Codice sorgente del firmware e tool chain.
• Modelli 3D per i case
Per gli ormai diffusissimi dispositivi a logica programmabile,
invece di condividere gli schemi si può condividere la descrizione
in HDL.
7. Open Source Hardware: licenze
Piuttosto che creare una nuova licenza, alcuni progetti hardware
usano semplicemente le licenze sistenti per i software open
source. In più sono state proposte diverse nuove licenze:
• TAPR Open Hardware License
• Balloon Open Hardware License
• CERN Open Hardware License
• Solderpad License
• Hardware Design Public License
11. Open Source Hardware: esempi
Alcuni esempi:
• Hack-A-Day Bus Pirate, http://www.buspirate.org
• Elphel, http://www.elphel.com
• Bug Labs modular kits http://www.buglabs.net
• RepRap, Replicating Rapid-prototyper http://www.reprap.org
• Arduino http://www.arduino.cc
• Beagle Board e Beagle Bone http://beagleboard.org
E molti molti altri esempi tra cui CPU, schede grafiche, laptops,
cellulari
13. Software
Diversi software sono disponibili per aiutare il progettista nelle fasi
di Schematics Capture e PCB Design o EDA (Electronic Design
Automation)
• Eagle CAD http://www.cadsoft.de
• Kicad http://www.kicad-pcb.org/
• gEDA http://www.gpleda.org/
14. Software – Eagle CAD
Eagle CAD è un software CAD per la
stesura di schemi elettronici e sbroglio
dei circuiti. Non è Open Source ma
offre una versione free per
applicazioni non commerciali.
• Disponibile per Linux, Mac e
Windows
• Librerie estese per parti e
componenti
• Supporto per ULC (User Language
Programs) e script
• Funzioni di ERC (Electrical Rule
Check) e DRC (Design Rule
Check)
15. Software – KiCad
KiCad è una suite open source di
software EDA per il disegno di schemi
elettrici e circuiti stampati (PCB).
Dispone di un ambiente di sviluppo
integrato (IDE) con editor di
schematici, sbroglio circuitale del
PCB e visualizzatore di file Gerber.
KiCad è organizzato in cinque parti
principali:
• Supporto multipiattaforma
(wxWidgets)
• Librerie estese
• Ambiente integrato
16. Software – gEDA
La lettera ‘g’ iniziale evidenzia il fatto
che la suite è rilasciato sotto licenza
GPL. Il primo rilascio è datato aprile
1998 ed è tuttora un progetto
attivissimo e supportato dalla
comunità.
• Ngspice, simulatore SPICE
• GnuCap, un moderno software di
simulazione dei circuiti
• gwave e GTKWave, visualizzatori
di segnali analogici e digitali
• Icarus Verilog, un simulatore
Verilog
18. Che cos’è una Tool Chain?
In ambito software, una toolchain è l’insieme dei programmi
(tools) usati nello sviluppo di un prodotto. I tool possono essere
utilizzati in catena, in modo tale che l’output di ciascun tool
rappresenti l’input per il successivo. Il termine è comunque
utilizzato in maniera più estesa per riferirsi, più in generale, a
qualunque insieme di tool di sviluppo collegati tra loro.
19. Che cos’è una Tool Chain?
• Gli strumenti di sviluppo disponibili in ambiente GNU/Linux
sono costituiti da una toolchain nativa.
• Tale toolchain viene eseguita sulla workstation e genera
codice per ‘quella’ workstation, di solito x86
20. Che cos’è una Tool Chain?
• Per lo sviluppo di sistemi embedded, la disponibilità e l’utilizzo
di una toolchain nativa è impossibile in molti casi e comunque
ben poco interessante in quanto:
• Il target dispone usualmente di un quantitativo limitato e a volte alquanto ristretto di
storage e/o memoria
• Il target è molto lento comparato alla tua workstation
• Potresti non voler installare tutti I tool di sviluppo sulla scheda target
• Perciò sono utilizzate, generalmente, delle cross-compiling
toolchain. Eseguite sulla tua workstation permettono di
generare codice per il tuo target.
21. Che cos’è una Tool Chain?
Source code
Compilation
machine
Cross-‐‑compiling
Native toolchain
toolchain
x86
Execution
x86 binary
ARM binary
machines
x86
ARM
22. Microprocessori con Tool Chain free
Esistono diversi microcontrollori con tool chain free. Tra questi
figurano:
• Atmel AVRMega e AVRTiny (il cuore della piattaforma Arduino)
• Atmel AVR32 (che include un kernel Linux)
• Texas Instruments MSP430
• Axis 100LX, utilizzata nella Foxboard
• ARM7 e oltre. A partire da ARM9 è incluso un kernel Linux.
23. Microprocessori con Tool Chain free
A proposito di tool chain, ecco alcuni link interessanti:
• Atmel AVRMega e AVRTiny: AVR Libs, AVRDUDE, AVaRICE
• Atmel AVR32: The AVR32 Linux project
• Texas Instruments MSP430: MSPGCC
• Axis LX100: FOXLX Linux environments
• ARM7: GNUARM
• Elinux: toolchains wiki
25. Vantaggi per gli sviluppatori
• Innovazione e valore aggiunto
• Qualità del software
• Controllo
• Flessibilità
• Scelta
• Semplicità di sviluppo
• Supporto e risorse sempre disponibili
• Costo
• Meno pensieri sulle licenze
26. Vantaggi per le aziende
• Controllo, innovazione, costo, time to market
• Investimenti a lungo termine sicuri
• Basta costi proibitivi
• Semplicità di gestione del software
• Massima riutilizzabilità del codice
• Supporto e risorse sempre disponibili
• Costi di apprendimento
27. Vantaggi per l’utente finale
• Effettiva proprietà dei dati grazie al FOSS e ai formati aperti
• Privacy e sicurezza
• Elevato grado di personalizzazione
• Qualità
• Costo
29. Arduino
Arduino è un framework open source
che permette la protipazione rapida
nonché l’apprendimento rapido dei
principi fondamentali dell’elettronica
e della programmazione.
• Le board possono essere
acquistate preassemblate oppure
costruite
• Ambiente di sviluppo integrato
• Codice in C/C++ con API estese
basate su Wiring
• Multipiattaforma
30. Raspberry PI
Il Raspberry PI è un single-board
computer sviluppato nel Regno
Unito dalla Raspberry Pi Foundation.
Il lancio al pubblico è avvenuto alla
fine del mese di febbraio 2012.
• 700 MHz ARM11
• 256 o 512 MB (condivisi con GPU)
• Connettore RCA, HDMI
• SD, MMC, SDIO card slot
• Ethernet 10/100
• 2x13 header pins per GPIO, SPI,
I2C, UART, +3.3V, +5V
31. Fox Board
La FOX Board G20 è un micro sistema Linux made in Italy ideato a
realizzato da Acme Systems srl. Si tratta di una scheda di ridotte
dimensioni con Linux preinstallato e funzionante.
• ARM9 @ 400 MHz
• 256KB di memoria FLASH
per il bootloader
• Fino a 16GB su microSD
• Ethernet 10/100
• 2 porte seriali (3.3V)
• RTClock
• GPIO
32. Fox Board
2xUSB 2.0 +5V DC
Host ports Power In
GPIO
(12Mbps)
Serial
Ethernet
10/100 port
4D oLed
display
connector GPIO
placement
Serial
I2C
A/D
User
defined
switch
Serial
DATAFLASH
+5V DC
CPU
Power In
RAM
miniUSB
client port
User Debug port
defined LED
microSD socket
Power LED
34. Alcuni link utili
• Hack a Day http://www.hackaday.com
• Make http://blog.makezine.com
• Instructables http://www.instructables.com
35. Risorse
Alcuni link utili a strumenti, dispositivi e argomenti trattati in
questo talk
• Confronto tra software EDA opensource
http://en.wikipedia.org/wiki/Comparison_of_Free_EDA_software
• Arduino
http://arduino.cc
• Atmel AVR
http://www.atmel.com/avr
37. Le^ure consigliate
Embedded Linux Primer, Second Edition, Prentice Hall
Christopher Hallinan
Building Embedded Linux System, O’Reilly
Karim Yaghmour, Jon Masters, Gilad Ben.Yossef and Philippe Gerum
Embedded Linux System Design and Development
P.Raghavan, A. Lad, S. Neelakandan, Auerbach