180 likes | 393 Views
.NET Micro Framework. Sviluppo di soluzioni embedded moderne con .NET Micro Framework. Lorenzo Maiorfi – Innovactive Engineering s.r.l. Principali intenti di .NET (MF). Virtualizzazione del «core» Un processore software (CLR) stack-based esegue bytecode espresso in linguaggio «CIL»
E N D
.NET Micro Framework Sviluppo di soluzioni embedded moderne con .NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.
Principali intenti di .NET (MF) • Virtualizzazione del «core» • Un processore software (CLR) stack-based esegue bytecode espresso in linguaggio «CIL» • Integrazione binaria tra moduli software • La CLR si occupa di threading, gestione della memoria, interazione con procedure «native»,ecc. • La CLR «consuma» delle unità eseguibili dette «assembly» • Un assembly è costituito da: • metadati (un db interno che descrive i «prototipi» di tutti i tipi e membri definiti nell’assembly) • bytecode CIL (la sequenza di istruzioni che costituisce il «corpo» di ciascun metodo (funzione) • manifest (esprime le dipendenze da altri assembly)
Sviluppare firmware per .NET MF • Lo sviluppatore scrive codice utilizzando linguaggi di alto livello (C#/VB.NET) • Il compilatore genera uno o più assembly • Il bytecode degli assembly così generati viene scritto sulla memoria Flash del dispositivo mediante l’IDE o con un apposito tool (MFDeploy) • Il device al reset esegue il «TinyBooter» che a sua volta carica la «TinyCLR» • La TinyCLR carica gli assembly ed esegue il metodo «entry-point» utente
DEMO «getting started» • Utilizziamo Netduino • Eseguiamo la scrittura, il test, il debug e il rilascio di un semplice firmware • Diamo uno sguardo al compilato “IL” • Esploriamo più nel dettaglio il modello di threading e l’interazione con il flusso di esecuzione del firmware nativo del microcontrollore (gestione interrupt)
Punti di forza del .NET MF • Produttività • Ambiente di sviluppo, compilatore, debugger ed emulatore costituiscono la toolchain più produttiva disponibile nel mercato embedded • Affidabilità • Runtime «managed», controllo completo su ogni «layer» dell’applicazione • Portabilità • Virtualmente portabile su tutti qualsiasi core, attualmente copre tutti i core ARM™ 32 bit • Supporto • Completamente «open», molte librerie di base, molte risorse community
Struttura del .NET MF Applicazione e Librerie Utente Layer Applicazione Librerie .NET WPF Comms … Layer Librerie CLR Exec Engine Type System Garbage Coll. Interop PAL Layer Runtime Timers RAM I/O «PORTING» HAL OS Drivers Facilities oppure Processore e Periferiche Layer Hardware
Base Class Libraries • Funzionalità di base • Tipi di base, XML, webservice, globalizzazione, crittografia, manipolazione testo, diagnostica, sicurezza • Funzionalità di sistema • Networking, file-system, user interface, threading • Gestione periferiche • USB (device/host), GPIO (con interrupt), I2C, SPI, UART, ADC, PWM, Watchdog, power • Componenti di terze parti • CAN, DAC, RTC, Glide (UI+Touch), SQLLite, ecc.
DEMO «Object Oriented Design» • Sperimentazione con un semplice ADC 12-bit con interfaccia SPI (Microchip MCP3201) • Sviluppo di un semplice driver “managed” • Aggiunta di nuove funzionalità tramite ereditarietà • Astrazione del modello di interazione con la periferica • Implementazione di un nuovo driver con lo stesso modello • Integrazione dei due componenti in un’applicazione completa
Applicazioni «Real-World» #1 • Controllo Accesso Impianti «Outdoor» • Identificazione mezzi RFID (short/long range) • ZigBee (mesh) • Integrazione con sistemi informativi di terze parti (AS/400, Windows, Unix) • Controllo barriere mezzi • Logging remoto attività sistema • Monitoraggio continuo parametri ambientali delle centraline
Applicazioni «Real-World» #2 • Banco prove motori ventilanti • Caratterizzazione flusso/potenza a norme CEI • Acquisizione continua di • Encoder velocità motori • Pressioni (in diversi punti del tubo Venturi) • Temperatura/umidità ambientali • Potenza DC e AC • Gestione motori induzione 220V/50Hz, 110V/60Hz, DC brushless con e senza controller integrato • Interfacciamento con software gestione prove «kiosk» (Windows 7+WPF+touch)
Applicazioni «Real-World» #3 • Terminali controllo produzione • Gestione ingressi digitali «conta-pezzi» industriali (24V, PLC) • Interfaccia utente con display Touch 4.3" Wide • Lettore RFID • Lettore Barcode • Supporto Ethernet/WiFi • Tastiera capacitiva con microcontrollore dedicato • Buzzer piezoelettrico • Controllo uscite digitali 24V e proporzionali (anche con controllo PID)
Applicazioni «Real-World» #4 • Banco cassa autonomo self-checkout • Gestisce tutta l’attività di check-out senza operatori, parallelizzando le fasi «lente» • 14 moduli (hardware+firmware) indipendenti • 8 Celle di carico • 2 Motori AC trifase con encoder assoluto SSI • 36 Barriere IR (30 singole,4 array da 32, 2 da 10) • 8 Motori DC (gestione portelli) con lock magnetico • 8 Lettori barcode integrati • 14 Nastri trasportatori/mototamburi • 20 strisce led «guida» multi-colore • Integrazione con software «front-end» kiosk
Punti deboli … • Performance • Non adatto ad applicazioni molto intensive sul piano computazionale • Controllo del timing • Non adatto ad applicazioni real-time • Non è un OS • Non esiste un supporto «di base» per processi, file-system, comunicazione, sicurezza, ecc. • Pochi porting • GHI Electronics (4), Secret Labs (2), Mountaineer Group (2), Sytech Designs, Love Electronics
…ma risolvibili ! • Performance • Interoperabilità codice «managed» / nativo • Controllo del timing • Utilizzo di schede multi-processore (come la Triumvirato: USBizi+MSP430+CPLD !!!) • Non è un OS • Molti servizi sono stati sviluppati nel tempo dai vendor come estensioni del framework • Pochi «porting» • Molti sono open (Netduino, Mountaineer Boards, GHI OSH) e lo stesso Porting Kit è completamente open (netmf.codeplex.com)
DEMO «Internet-of-Things» Server WEB Digital INPUTs HTTP TCP/IP Digital OUTPUTs Analog INPUTs .NET MF BOARD Browser (PC, SmartPhone, Tablet) Analog OUTPUTs
LIVE «Internet-of-Things» • Access Point WiFi con SSID «maiorfi_sopra» (è aperto!) • http://192.168.1.50/demoiot
Cosa serve per iniziare? • Visual Studio 2010 (anche in versione Express) • .NET Micro Framework SDK (4.2 QFE2) • Scheda .NET MF a scelta tra • Fez-Cerberus, Netduino, Fez-Panda II,Fez-Cerbuino Bee€<30 • Netduino+, Mountaineer,Fez-Hydra, ArgonR1, Nano€<100 • Fez-Spider, ChipworkX€120-250 • Moduli • con connettori standard «Gadgeteer» • in formato «shield» Arduino • da collegare con jumper-wires • «proto-boards»
Online Resources www.TinyCLR.IT twitter: @tinyclr innovactive.it mountaineer-boards.com tinyclr.com netduino.com loveelectronics.co.uk sytechdesigns.com