Definizione di sistema embedded

Transcript

Definizione di sistema embedded
Linux Day 2009
Linux nei sistemi
embedded: overview e
alcuni casi reali
Pordenone, 2009-24-10
www.dave.eu
[email protected]
Agenda
Cenni su Dave Srl
Introduzione ai sistemi embedded
Classificazione dei processori
Definizione di sistema embedded
La sfide dei sistemi embedded
Linux Embedded
Definizione
Vantaggi & svantaggi
Modello di sviluppo
Linux su ARM
Alcuni esempi di sistemi embedded “reali
LIVE!
Un sistema ARM Cortex-A8 con distribuzione Angstrom
2
Chi siamo
DAVE S.r.L. via Forniz 2 , 33080 Porcia
Tel: 0434.921215 - fax 0434.1994030
E-mail: [email protected]
Web: http://www.dave.eu
Fondata nel 1998 con 20 m/y di esperienza
Oggi: 15 persone con >100 m/y di esperienza
3
Classificazione (opinabile) dei processori
General purpose: Intel/AMD x86, PowerPC, SPARC, ..
Software generico
S.O. complessi (Unix, Linux, Windows NT ecc.)
Applicazioni disparate (da office automation a simulazioni di sistemi biologici)
Processori Embedded: ARM, x86 (Geode LX, Atom), SuperH, MIPS, PowerPC
S.O. estremamente ridotto, spesso real-time
Supporto funzionalita' DSP
Applicazioni mirate: telefonia cellulare, elettronica di consumo, controllo industriale
Microcontrollori
Il costo ridotto e' l'obiettivo fondamentale
Parallelismo ridotto (tipicamente 8 bit)
Volumi di produzione enormi
Applicazioni: automobili, termostati, telecomandi ecc.
Performances/prices/volumes pyramid
PC
“SMART COMPUTING MACHINES”
MICROCONTROLLERS
Definizione di sistema embedded
Molte definizioni in letteratura; nessuna universalmente riconosciuta. Wikipedia propone:
Con il termine sistema embedded (sistema incapsulato, dedicato) si identificano
genericamente dei sistemi elettronici a microprocessore progettati appositamente per
una determinata applicazione, spesso con una piattaforma hardware ad hoc, integrati
nel sistema che controllano e in grado di gestirne tutte o parte delle funzionalità.
Differenze rispetto ad un sistema PC classico:
Componenti architetturali
Frequenze di lavoro (potenza di calcolo) tipicamente di molto inferiori
Tagli di memoria notevolmente inferiori
Dispositivi di I/O spesso piu' limitati o addirittura assenti
Molte architetture non x86 (ARM, PowerPC, MIPS, SH-4 ecc.) profondamente
incompatibili tra loro
Diversa endianness
Diverso set di istruzioni
Diversa organizzazione della memoria
Design di una piattaforma embedded
Target semplici, sfide impegnative...
Progettare un sistema che abbia le risorse minime e indispensabili (processore, PSU,
memorie) da consentire:
…che il sistema parta perfettamente il 100% delle volte…
…nel più breve tempo possibile….
…garantendo la continuità del servizio...
…con bassi consumi.
Il sistema, se interrotto per qualche motivo, deve ripartire in qualsiasi condizione
Il sistema deve essere gestito da un sistema operativo (talvolta real time)
Gli ingombri devono essere ridotti
I consumi devono rispettare determinati limiti
I costi di produzione devono essere più bassi possibile
Il sistema deve lavorare nel range di temperatura esteso (-40/+85°C)
Il sw di sistema deve poter essere aggiornato
Esempi di sistemi embedded
Sportelli Bancomat e apparecchi POS
Telefoni cellulari.
Sistemi di telecomunicazioni, apparati di networking
Sistemi di automazione casalinghi come termostati, condizionatori,
allarmi, ...
Sistemi di monitoraggio ambientale
Sistemi HVAC (Heating, Ventilation and Air Conditioning)
Sistemi HACCP (Hazard Analysys and Critical Control Points)
Distributori di bevande
Apparecchiature medicali
Centraline di controllo per automotive
Media player/console portatili e non
Digital set top box
Modulo CPU (advertising mode ON..)
Cuore di un sistema
embedded, fornisce tutte le
risorse di base del sistema,
consentendo a chi sviluppa il
prodotto di concentrarsi
esclusivamente su di esso
Cosa intendiamo per Linux Embedded
Sistema embedded basato su:
Kernel Linux, opportunamente configurato per svolgere lo scopo per cui è
stato progettato
Root file system ridotto (a volte read-only)
Esclusione di tutti i sottosistemi/funzionalità non necessari (es: stack TCP/IP,
PCI, swapping, ..)
Sistema di sviluppo composto da tool GNU/Linux
Utilizzo di distribuzioni “particolari”
Completamente custom
Embedded-oriented
Commerciali
Componenti sw principali del sistema Linux Embedded
Applicazioni e interfaccia utente
File System
Scheduler
Gestione memoria
Kernel Linux
Boot Loader
Driver
Embedded Linux: vantaggi (molti)
Codice libero (sia del kernel che di moltissime librerie/applicazioni)
Affidabilità dovuta all'enorme comunità di sviluppatori/utilizzatori
Enorme quantità di software disponibile, in buona parte rilasciato con licenza
GPL/LGPL
Modularità (filosofia UNIX)
Possibilità di entrare in contatto diretto con gli autori del software (mailing list,
forum, ..)
Portabilità del codice (POSIX)
Possibilità di debuggare tutto o parte del codice applicativo sull'host
Numerosissime architetture supportate, tra cui anche quelle prive di MMU (μCLinux)
Supporto di moltissimi protocolli di comunicazione standard
Possibilità di utilizzare tool di sviluppo competamente liberi (tool commerciali molto
costosi)
Toolchain (GCC, binutils, ..)
Strumenti di build (make, autotools, ..)
Embedded Linux: svantaggi (pochi)
In certi ambiti, può essere un po' troppo pesante rispetto alle risorse hardware
effettivamente a disposizione
Di per se, non è adatto all'hard real time (se non con opportune estensioni)
Disallineamenti tra le versioni fornite dai vendor del silicio e il kernel mainstream
Paradossalmente, l'ampia libertà di scelta (strumenti, applicazioni, librerie) è di
ostacolo a chi si avvicina per la prima volta
Supporto di alcune soluzioni tipiche del mondo desktop (es: Java) non ancora
ottimale
Modello di sviluppo
Network services:
Nfs (Root file system)
Dhcpd
Boot Loader
Tftpd
Cross-Compiler, Debugger,
Libraries, Linker
Target Linux Kernel
Serial Terminal
Serial port driver
JTAG/BDM
Debug interface
HOST
TARGET
Alcune problematiche (sw) tipiche
Compilazione nativa o cross-compilazione?
Ottenere la (cross-)toolchain
Build da scratch (moooolto laborioso...)
Acquisto di una toolchain commerciale (es: Codesourcery)
Utilizzo toolchain preconfezionata (es: ELDK)
Ottenere il root file system
Build da scratch (come sopra..)
Utilizzo di tool per la creazione del root file system
Customizzazione di root file system preconfezionati
Deploy del file system
Read/Write o Read-only?
Scelta del tipo di file-system
Aree di storage di dimensione limitata
Shrink “estremo”
Utilizzo di più device/partizioni
Hot topic: tool per la creazione del RFS
Rispetto al passato, sono aumentate le alternative disponibili
Utilizzo di tool forniti dal silicon vendor (es: LTIB di Freescale)
Utilizzo di tool open source
Buildroot
OpenEmbedded
Arago
Cross Linux From Scratch
Emdebian
Scratchbox
Handheld Mojo (Ubuntu ARM)
ARM/RootfsFromScratch (script creato dall'Ubuntu mobile team)
Funzionamento tipico di un tool per creare RFS
Download
sorgenti
Internet
Motore
Configurabile
✔ Cross-compilazione di tutti i pacchetti
✔ Confezionamento del RFS
✔
HOST
Embedded file systems
Un breve elenco...
AXFS
CramFS
JFFS2
LogFS
NFS
PRAMFS
RomFS
SquashFS
UBIFS
YAFFS2
Un esempio: OPIE su ARM11 (Qong)
Trends 1/3
Trends 2/3
Esistono molti distributori di sistemi
Linux commerciali (Montavista,
WindRiver, ..)
MontaVista's power management
guru, Kevin Hilman, said, "No one
puts kernel.org Linux in a finished
product. Period."
È prevista una crescita della
percentuale di diffusione dei sistemi
Linux non commerciali
Trends 3/3
Sistemi embedded basati su architettura X86
Forte interesse legato all'introduzione di Atom (piattaforma Menlow) da parte di Intel
Prestazioni molto elevate
Semplicità di sviluppo sw
Possono davvero essere considerati dei sistemi embedded?
Presenza del BIOS
Consumi più elevati rispetto ad altre architetture emergenti
Carenza di interfacce native
Obiettivo: avvicinare più possibile questi sistemi al mondo embedded
Integrazione di interfacce specifiche
Ricerca di alternative al BIOS (es: OpenFirmware)
Architettura ARM 1/2
Microprocessori RISC a 32 bit (75% del mercato mondiale)
ARM Ltd licenzia (costi: TOP SECRET...) ad altre aziende la possibilità di costruire
CPU basate su core ARM
Produttori di CPU ARM: Freescale, Texas Instruments, Cirrus Logic, Samsung,
Qualcomm, Samsung, Marvell...
Caratteristiche:
Architettura load/store
Set istruzioni ortogonali
Opcode a lunghezza fissa
Maggior parte delle istruzioni eseguite in un ciclo di clock
Esecuzione condizionata molto efficiente
Indirizzamento ad indice molto potente
Evoluzioni
Thumb e Thumb-2 (set di istruzioni di lunghezza ridotta)
Jazelle (ottimizzazione per l'esecuzione del bytecode java)
VFP (Vectored Floating Point, coprocessore matematico in virgola mobile)
Architettura ARM 2/2
Il nuovo core Cortex-A8
Architettura ARMv7 (600 Mhz – 1 Ghz), superscalare (pipeline a 13 stadi)
Cache di secondo livello
NEON: acceleratore Advanced SIMD per applicazioni multimediali
Thumb-2EE/JazelleRCT: evoluzione di Jazelle
Costruttori
Texas Instruments: OMAP35xx/AM35xx
Freescale: i.MX51x
Qualcomm: Snapdragon
Applicazioni
Sharp PC-Z1
Beagleboard
OpenPandora
Il modulo CPU Lizard...
Il futuro: Cortex-A9...
Distro Linux per ARM
Emdebian Crush: An ultimately small, cross-built, Debian (solo per ARM!)
Ubuntu:disponibile da Feisty Fawn a Karmic Koala, da ARMv5 a ARMv7
Alla pagina http://releases.ubuntu.com/releases/9.10/ si trova l'immagine per
l'architettura i.MX515...
Distribuzioni disponibili
Embedded Gentoo
Angstrom (Beagleboard, Pandora Handheld,...)
Poky (Multiplatform)
Mamona (Alternativa a Maemo)
OpenMoko (NeoFrerunner, ARM9)
Maemo (Smartphone Nokia, ARM9, ARM11, Cortex-A8)
OpenWrt
Applicazione tipica
NATIVE
PERIPHERALS
PERIPHERALS
ON BUS
CPU
LCD
(w/ Touch Screen)
RESOURCES
Extended Temperature Range (-40/+85°C)
Resistenza alle sollecitazioni meccaniche
Replacement di sistemi PC-like low-end
Networking
Consumi ridotti
Gestione di bus particolari
Automotive System
VIDEO
VIDEO
VIDEO
DECODER
VIDEO
DECODER
DECODER
DECODER
TFT
(800 X 600)
USB1
TOUCH
USB2
USB3
SDRAM
NOR
LAN
CPU
ARM920T
200MHz
I/O
RTC+WD
Wi-Fi
on PCMCIA
IDE
HACCP System
SDRAM
TFT or STN
(320 X 240)
USB2
NOR
NAND
EXT.
UARTS
USB1
CPU
200MHz
LAN
RTC+WD
I/O
DIG. INPUTS & RELAIS
MoDem
GSM/GPRS
Self-service Kiosk & POS
SDRAM
TFT or STN
(320 X 240)
USB2
NOR
128M NAND
USB1
EP9315
USB3
200MHz
LAN
EXT.
UARTS
EXT.
UARTS
PCMCIA
RAM
RTC
WD
IDE
I/O DIG. INPUTS & RELAIS
Beryl
Based on Zefeer DZQ CPU module
SDRAM: 64MB
Flash NOR: 32 MB
Flash NAND: up to 128MB
Form Factor: (210mm x 165mm)
1MBit Static Ram battery powered
M41ST87 Supervisor with Unique
Electronic Serial Number
RTC, Watchdog and Antitamper on board
Analog and Digital Input
RS485 (optoinsulated) serial port
8 x RS232 and 2 x RS485
USB Host and USB Device
10/100 Mbit Ethernet
2 x 20 lines expansion bus
PCMCIA slot
Industrial Operative Temperature
Range
Datalogger for Telecontrols
RAM
SDRAM
24 x 2
characters
RS232
RTC
WD
RS485
NOR
64-1024M NAND
CPU
200MHz
LAN
12 analog input 4-20 mA
5 digital optoinsulated input
4 analog output 12bit 0-2Vdc
8 digital output (OC)
MoDem
GSM/GPRS
Amethyst
Cirrus Logic EP9302 180MHz
SDRAM: 16MB expandable up to 64MB
Flash NOR: 4MB expandable up to 64MB
Flash NAND: up to 128MB
Small Form Factor (124mm x 92mm)
512 KB Static Ram battery powered
M41ST87 Supervisor with Unique
Electronic Serial Number
RTC, Watchdog and Antitamper on board
Analog and Digital Input
RS232 and RS485 (optoinsulated) serial
ports
USB Host and USB Device
2 x 30 lines expansion bus
FPGA on board
Multimedia Card slot
Industrial Operative Temperature
Range
HVAC system
RS232
RTC
WD
RAM DDR2
128 MB NOR
1024M NAND
ARM
Cortex-A8
4x digital output - Relays
2x analog output
4x Ethernet
2x USB
500MHz
6x analog input – PT1000 probe
RS485
SD/MMC
Digital Signage
HDMI
USB1
(1200 X 800)
USB2
256 MB
DDR2
Flash
2x LAN
Cortex-A8
500MHz
Digital I/O
RTC+WD
2x UART
SD
LIVE!
Beagleboard con distribuzione Angstrom