Top Banner
.NET Micro Framework Sviluppo di soluzioni embedded moderne con .NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.
18

Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

May 02, 2015

Download

Documents

Maura Mora
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

.NET Micro Framework

Sviluppo di soluzioni embedded moderne con .NET Micro Framework

Lorenzo Maiorfi – Innovactive Engineering s.r.l.

Page 2: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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)

Principali intenti di .NET (MF)

Page 3: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

1. Lo sviluppatore scrive codice utilizzando linguaggi di alto livello (C#/VB.NET)

2. Il compilatore genera uno o più assembly

3. Il bytecode degli assembly così generati viene scritto sulla memoria Flash del dispositivo mediante l’IDE o con un apposito tool (MFDeploy)

4. Il device al reset esegue il «TinyBooter» che a sua volta carica la «TinyCLR»

5. La TinyCLR carica gli assembly ed esegue il metodo «entry-point» utente

Sviluppare firmware per .NET MF

Page 4: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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)

Page 5: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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

Punti di forza del .NET MF

Page 6: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

Struttura del .NET MFApplicazione e Librerie UtenteLayer Applicazione

LibrerieLayer Librerie .NET WPF Comms …

CLR

Layer Runtime

ExecEngine

TypeSystem

Garbage

Coll.Interop

PAL Timers RAM I/O

HAL Drivers oppure OS Facilities

Processore e PerifericheLayer Hardware

«P

OR

TIN

Page 7: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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.

Base Class Libraries

Page 8: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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

Page 9: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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» #1

Page 10: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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» #2

Page 11: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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» #3

Page 12: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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

Applicazioni «Real-World» #4

Page 13: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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

Punti deboli …

Page 14: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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)

…ma risolvibili !

Page 15: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

DEMO «Internet-of-Things»

DigitalINPUTs

DigitalOUTPUTs

AnalogINPUTs

AnalogOUTPUTs

HTTP TCP/IP

.NET MFBOARDBrowser

(PC, SmartPhone, Tablet)

Server WEB

Page 16: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

LIVE «Internet-of-Things» Access Point WiFi con SSID

«maiorfi_sopra» (è aperto!) http://192.168.1.50/demoiot

Page 17: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

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»

Page 18: Sviluppo di soluzioni embedded moderne con.NET Micro Framework Lorenzo Maiorfi – Innovactive Engineering s.r.l.

Online Resourceswww.TinyCLR.ITtwitter: @tinyclr

innovactive.itmountaineer-boards.comtinyclr.comnetduino.comloveelectronics.co.uksytechdesigns.com