Piccoli dispositivi elettronici controllati da microprocessori sono sempre più diffusi ma:
Micro Framework si propone per lo sviluppo embedded come ha fatto VB6 per lo sviluppo delle vecchie applicazioni desktop:
MF è un .Net Runtime piccolo per processori embedded 32bit, economici e a basso consuno
Lo sviluppo embedded con Micro Framework avviene in modo consistente con lo sviluppo sulle le altre piattaforme applicative Microsoft.
Le piattaforme embedded di microsoft includono a questo punto:
La figura riportata di seguito illustra le 3 piattaforme ed il tipo di target applicativo che permettono di indirizzare.
Scendendo nel dettaglio del confronto delle piattaforme embedded possiamo notare alcuni aspetti interessanti:
Per una applicazione .Net Compact Framework Windows CE richiede almeno 10MB.
Windows XP Embedded ha requisiti di memoria 100 volte superiori.
Possiamo immaginare che un dispositivo Micro Framework può funzionare con hw che non richiede ricarica o sostituzione delle batterie per molto tempo.
Questa caratteristica lo rende adatto per l'elettronica su oggetti di largo consumo.
Vedremo che Micro framework offre funzionalità grafiche molto interessanti ma non dispone del motore directX, di applicazioni client come il browser, o per la gestione dei dati come SQLServer Compact Edition.
A livello di sistema, vedremo che Micro Framework implementa un multithreading di tipo cooperativo non realtime mentre windows CE permette un multithreading di tipo preemptive e supporta funzioni di tipo realtime.
La tabella illustrata di seguito mostra queste ed altri dettagli di differenziazione tra le 3 piattaforme embedded:
.NET Micro Framework
Windows CE
Windows XPe
Example Devices
Sensor Nodes, Aux displays, Health Monitoring, Remote Controls, Robotics
GPS Handhelds, PDAs,Automotive, Set Top Boxes
Thin Clients, ATMs, Kiosks
Features
Connected, Small, Wearable, Graphical UI
Connected, Graphical UI, Server, Browser, RAS, DirectX
PCclass performance,PC networking
Footprint
250-500KB managed codeFull featured
300KB+ without managed code12MB with managed code
40MB + Depending on features
Power
Very low power
Low power
Mains power
CPU
ARM7, ARM9, No MMU
X86, MIPS, SH4, ARM,with MMU
X86
Real-time
Not Real-time
Hard Real-time
Real-time capable through 3rd party extensions
Managed vs. Native Code
Managed via .NET Micro Framework,native code through interop only.
Supports both,managed code requires .NET Compact Framework
Supports both, managed coderequires .NET Framework
Micro Framework nasce nel 2001 con il nome di TinyCLR, all'interno del progetto Smart Personal Object Technology (SPOT).
La prima impementazione Micro Framework si vede nel 2004 con gli Smart Watches di MSN Direct.
Nel 2005 microsoft rilascia una implementazione Microsoft TV basata su Micro Framework insieme alle altre implementazioni, più sofisticate, basate su Windows CE.
Alla Microsoft Embedded Developer Conference (MEDC) del 2006 microsoft mostra il Sumo Robot Kit, una prima implementazione Micro Framework veramente sofisticata.
Con Windows Vista Sideshow, l'SDK 2.0 rilasciati a Febbraio 2007 e le schede per sviluppo HW proposte sul mercato da vari partner microsoft, micro framework diventa finalmente una piattaforma a disposizione di tutti.
Ecco alcuni punti chiave che caratterizzano Micro Framework:
Dal punto di vista funzionale Micro Framework si evidenzia per:
Questo significa che con Micro Framework è possible comporre controlli utilizzare colori, gradienti e trasparenze, utilizzare i pannelli di gestione del layout.
Questo significa inoltre che la programmazione delle interfacce Micro Framework avviene con lo stesso modello di programmazione utilizzato per le altre piattaforme microsoft.
Micro Framework permette di gestire dispositivi periferici tramite un insieme di protocolli standard ed utilizzati sul mercato come:
La interazione con questo tipo di dispositivi avviene sempre tramite codice managed, agendo sulle classi .Net che li rappresentano ed intercettando gli eventi da esse scatenati.
La tabella illustrata di seguito mostra alcuni esempi di device esterni, con quale protocollo e quali API Micro Framework permette di interagire con essi.
External device
Protocol to communicate
API to control
Bottoni
GPIO
Microsft.SPOT.Hardware.InterruptPort (o Port family e classi drivate in generale)
Potenziometri/Attuatori
GPIO(PWM non e' disponibile al momento)
Accelerometri
SPI o I2C(tipicamente)
Microsft.SPOT.Hardware.SPI e Microsft.SPOT.Hardware.I2CDevice
Outputs booleani (backlight, vibrator)
Microsoft.SPOT.hardware.Backlight o Microsoft.SPT.Hardware.OutputPort
Monochrome LCD
SPI o I2C o driver nativo(tipicamente)
Microsft.SPOT.Hardware.SPI e Microsft.SPOT.Hardware.I2Cdevice. LCD (display) API (LCD_BitBlt e LCD_BitBltEx)
OEM-specific (heart rate monitor, air pressure sensor, touch screen)
SPI o I2C o Seriale(Tipicamente, Dipende dal device)
Microsft.SPOT.Hardware.SPI, Microsft.SPOT.Hardware.I2Cdevice e Microsft.SPOT.Hardware.SerialPort
Battery monitoring
Battery API
Microsft.SPOT.Hardware.Battery e Battery and Charger HAL API
Flash memory
Microsoft.SPOT.ExtendedWeakReferences Microsoft.SPOT.Logging (solo per debug)
HAL FLASH API
Bluetooth
Seriale o SPI(dipende dal controllore, vedi Promi-SD o BlueCore)
Microsoft.SPOT.hardware.SerialPort o Microsoft.SPOT.Hardware.SPI
802.15.4
SPI (Tipicamente, vedi Ember or Chipcon CC2420)
Microsoft.SPOT.Hardware.SPI
EEPROM memory
Unsupported Legacy
n/a
Calibrated accurate time
Dell'apposito codice e' provvisto nel porting kit ma deve essere abilitato manualmente
L'esempio di codice illustrato di seguito mostra alcune istruzioni C# molto semplici per intercettare un evento proveniente da bottone (device esterno) collegato al sistema tramite il pin 12 di un bus GPIO.
Oltre che per le funzioni che implementa, che abbiamo visto essere molto interessanti, Micro Framework si differenzia dalle altre piattaforme per gli strumenti per lo sviluppatore.
Installando Visual Studio 2005 e l'SDK Micro Framework lo sviluppatore potrà disporre:
La figura illustrata di seguito mostra una applicazione Micro Framework nell'ambiente di sviluppo Visual Studio 2005 e l'emulatore di default, installato dall'SDK.
Il seguente schema illustra una architettura di massima del runtime microframewrok.
Questo permette di limitare gli sforzi necessari per portare Micro Framework verso nuove piattaforme, che consiste nel riscrivere un numero limitato di API nella HAL.
Il codice MSIL di Micro Framework è eseguito con un approccio di tipo interpretato.
Questo permette di minimizzare l'occupazione della memoria della applicazione in quanto, un approccio compilato, richiederebbe almeno di caricare in memoria 2 copie dei binari applicazione (il binario MSIL ed il codoce binario compilato)
Per esempio, Il type system serve per gestire la istanziazione delle classi, la esecuzione dei costruttori e garbace collection ed anche per realizzare le funzioni di reflection.
Micro Framework è stata implementata una versione completamente custom del garbage collector che, per massimizzarne l'efficienza in spazio, implementa un algoritmo di tipo Mark and sweep piuttosto che generazionale, come avviene per le altre implementazioni .Net.
Micro Framework è disponibile, come bootable runtime, sulle seguenti piattaforme hardware (Aprile 2007):
Come hosted runtime, Micro Framework è disponibile su piattaforme hardware come:
Il Porting di Micro Framework come bootable runtime può richiedere la riscrittura di 80-100 APIs.
Come hosted runtime, il porting si limita alla riscrittura di 20-40 APIs.
Di seguito illustro alcuni partner che vendono sul mercato kit di sviluppo per Micro Framework.
Un kit di sviluppo come quello illustrato in figura include generalmente una scheda su cui sono montati:
Per realizzare una applicazione Micro Framework sarà in generale necessario:
Le figure illustrate di seguito mostrano una applicazione molto semplice che ho utilizzato per esemplificare la realizzazione un computer di bordo per una automobile.
La immagine di destra mostra una versione dell'emulatore in cui ho aggiunto alcuni tasti (i.e. periferiche GPIO) per simulare il trip computer reale.
Ecco alcuni riferimenti dove ottenere maggiori informazioni sull'utilizzo Micro Framework:
Allego a questo post la presentazione "Introduzione a Micro Framework" (slides e registrazione) che illustrano alcuni dettagli aggiuntivi su Micro Framework ed i punti importanti della applicazione TripComputerSample.