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
Documenti analoghi
Embedded Linux
• Target CPUs basate su:
• ARM, x86, PowerPC e MIPS
• Quali applicazioni?
• Monitoraggio e controllo;
• Controllori e microcontrollori industriali;
• Palmari, e dispositivi cellulari;
• On-board co...