Sviluppo di soluzioni embedded moderne con .NET Micro Framework

In questo Talk verrà presentata una tra le più moderne e produttive piattaforme di sviluppo embedded attualmente esistenti: il .NET Micro Framework di Microsoft (.NETMF).

.NETMF è un’infrastruttura per microcontrollori a 32 bit i cui vantaggi principali consistono nel fornire una ricca API indipendente dall’hardware, un’efficiente controllo sulle periferiche del microcontrollore, una runtime che gestisce aspetti che vanno dal bootstrap al debug del firmware, un ambiente di sviluppo molto ricco di funzionalità anche nella sua versione free (Visual Studio), il supporto all'emulazione del dispositivo oltre, naturalmente, ad innumerevoli altri vantaggi intrinseci del Framework .NET, indipendentemente dal fatto che si parli della versione "Micro" (per microcontrollori), della versione "Compact" (per palmari e telefoni, ma utilizzato anche su XBOX) o della versione "maggiore" del framework, destinato allo sviluppo di software per personal computer.

Rilasciato nella sua prima versione nel 2002, il Framework .NET rappresenta l'interpretazione di Microsoft alla tendenza già consolidatasi negli anni precedenti con Java in merito alla "virtualizzazione" del microprocessore. L'obiettivo principale del progetto è infatti costituito dalla realizzazione di una "virtual machine" (così chiamata nel gergo Java), denominata "CLR" (Common Language Runtime), in grado di compilare o interpretare (a seconda delle implementazioni) codice scritto in un linguaggio indipendente dall'hardware , denominato IL (Intermediate Language), traducendolo "just-in-time" in istruzioni native per lo specifico microprocessore su cui si sta eseguendo l'applicazione.

I vantaggi della virtualizzazione sono numerosi ed evidenti, primi tra tutti quelli dell'indipendenza dall'hardware e della maggior possibilità di controllo su quanto viene eseguito, a fronte di un calo delle prestazioni assolutamente trascurabile. A tale proposito, sono invece numerosi i casi in cui è stato dimostrato che un'applicazione destinata ad essere eseguita dalla CLR (ossia "managed", come viene comunemente definita) può addirittura presentare performance superiori alla controparte "nativa", in quanto la possibilità da parte della runtime di ottimizzare l'esecuzione per lo specifico hardware su cui si sta eseguendo l'applicazione (tenendo conto ad es. della versione del sistema operativo, del numero di core/processori e della effettiva RAM a disposizione) permette di aumentare le prestazioni più di quanto esse non calino per gestire la compilazione "just-in-time" da parte dell'infrastruttura.

Nel mondo dei microcontrollori, in cui le architetture dominanti sono ben più numerose di quanto presente nel mondo del personal computer (in cui sostanzialmente troviamo x86, x64 e Itanium), i vantaggi derivanti dall'adozione di un framework basato su una runtime che virtualizzi l'hardware sono ancora più evidenti. Grazie al .NET Micro Framework possiamo infatti realizzare applicazioni che possono essere eseguite indistintamente su processori Atmel, NXP, Freescale, Analog Devices, ecc.

Aggiungo inoltre che grazie alle iniziative open .NET Gadgeteer e Netduino tale piattaforma sta assumento un ruolo assolutamente centrale anche come strumento didattico, oltre ovviamente come straordinaria piattaforma per la prototipazione da laboratorio.

Edizione 2012 nella track Workshop.

Video di presentazione