Download - Software libero nei sistemi embedded

Transcript
Page 1: Software libero nei sistemi embedded

Software  libero  nei  sistemi  embedded  

 

Linux Day 2012 – 29 ottobre 2012 Università degli Studi di Salerno

Daniele Costarella

Page 2: Software libero nei sistemi embedded

Introduzione

Page 3: Software libero nei sistemi embedded

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

Page 4: Software libero nei sistemi embedded

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

Page 5: Software libero nei sistemi embedded

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.

Page 6: Software libero nei sistemi embedded

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.

Page 7: Software libero nei sistemi embedded

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

Page 8: Software libero nei sistemi embedded

Open  Source  Hardware:  esempi

Page 9: Software libero nei sistemi embedded

Open  Source  Hardware:  esempi

Page 10: Software libero nei sistemi embedded

Open  Hardware  Imaging:  Cameras

Page 11: Software libero nei sistemi embedded

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

Page 12: Software libero nei sistemi embedded

Hardware  Design  Tools

Page 13: Software libero nei sistemi embedded

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/

Page 14: Software libero nei sistemi embedded

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)

Page 15: Software libero nei sistemi embedded

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

Page 16: Software libero nei sistemi embedded

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

Page 17: Software libero nei sistemi embedded

Strumenti  software

Page 18: Software libero nei sistemi embedded

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.

Page 19: Software libero nei sistemi embedded

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

Page 20: Software libero nei sistemi embedded

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.

Page 21: Software libero nei sistemi embedded

Che  cos’è  una  Tool  Chain?

Native  toolchain Cross-­‐‑compiling  toolchain

Source  code

x86  binary ARM  binary

ARM x86

x86

Compilation  machine

Execution  machines

Page 22: Software libero nei sistemi embedded

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.

Page 23: Software libero nei sistemi embedded

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

Page 24: Software libero nei sistemi embedded

Vantaggi?

Page 25: Software libero nei sistemi embedded

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

Page 26: Software libero nei sistemi embedded

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

Page 27: Software libero nei sistemi embedded

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

Page 28: Software libero nei sistemi embedded

Alcuni  esempi

Page 29: Software libero nei sistemi embedded

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

Page 30: Software libero nei sistemi embedded

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

Page 31: Software libero nei sistemi embedded

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

Page 32: Software libero nei sistemi embedded

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

Page 33: Software libero nei sistemi embedded

Conclusioni

Page 34: Software libero nei sistemi embedded

Alcuni  link  utili

•  Hack a Day http://www.hackaday.com

•  Make http://blog.makezine.com

•  Instructables http://www.instructables.com

Page 35: Software libero nei sistemi embedded

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

Page 36: Software libero nei sistemi embedded

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

Page 37: Software libero nei sistemi embedded

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

Page 38: Software libero nei sistemi embedded

Grazie  per  l’a^enzione

Daniele Costarella <www.danielecostarella.com>