Software libero nei sistemi embedded
-
Upload
daniele-costarella -
Category
Technology
-
view
1.306 -
download
3
Embed Size (px)
description
Transcript of Software libero nei sistemi embedded

Software libero nei sistemi embedded
Linux Day 2012 – 29 ottobre 2012 Università degli Studi di Salerno
Daniele Costarella

Introduzione

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

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

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.

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.

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

Open Source Hardware: esempi

Open Source Hardware: esempi

Open Hardware Imaging: Cameras

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

Hardware Design Tools

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/

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)

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

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

Strumenti software

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.

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

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.

Che cos’è una Tool Chain?
Native toolchain Cross-‐‑compiling toolchain
Source code
x86 binary ARM binary
ARM x86
x86
Compilation machine
Execution machines

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.

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

Vantaggi?

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

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

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

Alcuni esempi

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

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

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

Fox Board
GPIO Serial I2C A/D
Debug port
RAM
CPU
Serial DATAFLASH
microSD socket
miniUSB client port
+5V DC Power In
2xUSB 2.0 Host ports (12Mbps)
+5V DC Power In
Ethernet 10/100 port
4D oLed display connector placement
User defined switch
Power LED User
defined LED
GPIO Serial

Conclusioni

Alcuni link utili
• Hack a Day http://www.hackaday.com
• Make http://blog.makezine.com
• Instructables http://www.instructables.com

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

Componenti ele^ronici
Alcuni rivenditori locali e internazionali:
• Farnell http://it.farnell.com
• Mouser http://it.mouser.com
• Digikey http://www.digikey.it
• RS http://it.rs-online.com
• SparkFun http://www.sparkfun.com
• RobotItaly http://www.robot-italy.com
• Futura Elettronica http://www.futuranet.it

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

Grazie per l’a^enzione
Daniele Costarella <www.danielecostarella.com>