Your SlideShare is downloading. ×
0
Metti il .Net Framework nel micro !
Il mondo embedded secondo Microsoft
Paolo Patierno
Software Engineer
Ringraziamo gli sponsor!
Chi sono … contatti
• Blog (su DotNetCampania)
• http://dotnetcampania.org/blogs/paolopat/default.aspx
• Blog (su Embedded...
Agenda
• Perché e cos’è ? Ma soprattutto cosa non è !
• Internals : l’architettura
• IDE ed SDK
• Hardware Object Model
• ...
Perché ?
• Nel mondo, i sistemi embedded sono ormai diffusi
ovunque ma :
• Gli skill necessari per lo sviluppo sono elevat...
Cosa non è … cosa è …
• Non è ...
• Un sistema operativo tradizionale con un runtime
(virtual machine) di codice managed o...
OSHAL
PAL
CLR
Libraries
Architettura
.NET WPF COMM …
Execution
Engine
Type
System
Garbage
Collector
Interop
Timers RAM I/O...
Compilazione ed Esecuzione
Managed
Environment
Assembler
Source
Source code Source code Source code
Assembler Compiler
Com...
IDE, SDKs e Porting Kit
• Visual Studio 2010 e 2012;
• .Net Micro Framework SDK (fino alla 4.1 sul sito
Microsoft, dalla 4...
Hardware : Object Model
• Bit-Based Control
• Scrittura/Lettura di una porta e quindi della sequenza
di bit che ne costitu...
Hardware : Object Model
• Ogni Port è rappresentata attraverso l’istanza di
una classe
• OutputPort e InputPort rispettiva...
Hardware : Object Model
• Più che alla port, permettono di accedere al
singolo pin all’interno di essa
outPort
inPort
Outp...
BCL e SPOT
• Supporto per le classi principali del «fratello
maggiore» .Net Framework (es. collections,
threading, network...
Base Class Library
System
Array EnumDelegate ExceptionAttribute
Math
DateTime
TimeSpan TypeTimeZone WeakReference
System.C...
Base Class Library
System.Reflection Assembly FieldInfo MethodInfo PropertyInfo
System.Threading
Thread Timer Interlocked
...
SPOT Library e DPWS
Microsoft.SPOT
Microsoft.SPOT.Input
Microsoft.SPOT.Messaging
Microsoft.SPOT.Net
Microsoft.SPOT.Hardwar...
Emulatore
• Configurabile via XML;
• Utilizzo e configurazione di componenti esistenti;
• Possibilità di creare nuovi comp...
Hardware
Vantaggi/Svantaggi
• Costi hardware bassi (footprint RAM, CPU, …);
• Costi sviluppo bassi
• Time to market rapido (prototi...
DEMO
Qualche libro ...
• Expert .Net Micro Framework 2°
Edition - Jens Kuhner, Apress (2009)
• Embedded Programming with
the Mi...
… e risorse dal Web
• .Net Micro Framework Official Site
• http://www.netmf.com/
• .Net Micro Framework Codeplex
• http://...
Upcoming SlideShare
Loading in...5
×

Metti il .Net Framework nel Micro !

372

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
372
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Metti il .Net Framework nel Micro !"

  1. 1. Metti il .Net Framework nel micro ! Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
  2. 2. Ringraziamo gli sponsor!
  3. 3. Chi sono … contatti • Blog (su DotNetCampania) • http://dotnetcampania.org/blogs/paolopat/default.aspx • Blog (su Embedded101) • http://www.embedded101.com/Blogs/PaoloPatierno.aspx • Twitter • @ppatierno • Linkedin • http://it.linkedin.com/in/paolopatierno • Skype • paolopat80 • Email • paolo.patierno@gmail.com
  4. 4. Agenda • Perché e cos’è ? Ma soprattutto cosa non è ! • Internals : l’architettura • IDE ed SDK • Hardware Object Model • Base Class Library e SPOT Library • Hardware ed Emulatore • DEMO : sviluppo e deploy
  5. 5. Perché ? • Nel mondo, i sistemi embedded sono ormai diffusi ovunque ma : • Gli skill necessari per lo sviluppo sono elevati; • Il firmware è tipicamente sviluppato in C/C++; • I tool di sviluppo spesso non sono molto user friendly (Keil, Iar, AVR Studio, ...) rispetto Visual Studio ; • Il .Net Micro Framework si propone come strumento per lo sviluppo sui sistemi embedded, sfruttando un ambiente come Visual Studio ed un linguaggio come il C# (anche VB dalla 4.2). Il tutto ovviamente con codice managed;
  6. 6. Cosa non è … cosa è … • Non è ... • Un sistema operativo tradizionale con un runtime (virtual machine) di codice managed on top; • E’... • Un mix tra le funzionalità tradizionali di un sistema operativo (gestione risorse, controllo esecuzione, Input/Output, ...) e le funzionalità tradizionali di un runtime (GC, execution engine, interop, ...); • Bootable runtime, al reset il «TinyBooter» carica il «TinyCLR»;
  7. 7. OSHAL PAL CLR Libraries Architettura .NET WPF COMM … Execution Engine Type System Garbage Collector Interop Timers RAM I/O Drivers or Facilities User Applications & Libraries managed native Runtime per il codice managed Astrazione dell’hardware Accesso diretto all’hardware ~20 – 30 KB Hardware
  8. 8. Compilazione ed Esecuzione Managed Environment Assembler Source Source code Source code Source code Assembler Compiler Compiler Compiler Microsoft Intermediate Language Assembly Microsoft Intermediate Language Assembly Just in Time Compiler Machine Code Machine Code Machine Code Intermediate Language Interpreter Computer Processor 1 : 1 1 : n .Net Framework .Net Micro FrameworkC/C++Assembler
  9. 9. IDE, SDKs e Porting Kit • Visual Studio 2010 e 2012; • .Net Micro Framework SDK (fino alla 4.1 sul sito Microsoft, dalla 4.2 su CodePlex … è open source); • OEMs SDK (SecretLabs, GHI, …) • Ciascun OEM può customizzare alcune funzionalità ed esportarne delle altre • Porting Kit : permette di sviluppare la parte di basso livello (in C/C++ e Assembler) che si interfaccia con l’hardware : • Non c’è un IDE specifico (c’è un tentativo nella 4.2) e si può compilare con GCC (CodeSourcery), Keil MDK, ARM RVDS • Include lwIP come stack TCP/IP ed OpenSSL per le funzionalità di SSL/TLS;
  10. 10. Hardware : Object Model • Bit-Based Control • Scrittura/Lettura di una porta e quindi della sequenza di bit che ne costituiscono il contenuto avviene attraverso delle operazioni logiche AND e OR e con l’ausilio di opportune maschere #define PORTA 0x0000A000 // indirizzo PORTA ... ... DWORD* pPort = PORTA; *pPort |= 0x00000020; // setto ad 1 il bit 5 ... if (*pPort & 0x00000001) // verifico se il bit 0 vale 1 { ...
  11. 11. Hardware : Object Model • Ogni Port è rappresentata attraverso l’istanza di una classe • OutputPort e InputPort rispettivamente per rappresentare porte di output e di input; InterruptPort per la gestione delle interruzioni con un event handler; • Scrittura/Lettura attraverso i due metodi Write() e Read() OutputPort outPort = new OutputPort(Cpu.Pin.GPIO_Pin0, false); outPort.Write(true); ... InputPort inPort = new InputPort(Cpu.Pin.GPIO_Pin1, true, Port.ResistorMode.Disabled); bool value = inPort.Read();
  12. 12. Hardware : Object Model • Più che alla port, permettono di accedere al singolo pin all’interno di essa outPort inPort OutputPort +Write(bool) Native CodeInputPort +bool Read() Native Code Pin3 Pin2 Pin1 Pin0 Reference sullo stack Object sull’heap Porta fisica
  13. 13. BCL e SPOT • Supporto per le classi principali del «fratello maggiore» .Net Framework (es. collections, threading, networking, …); • Namespace Microsoft.SPOT con le classi per la gestione managed dell’hardware e supporto per i principali protocolli di comunicazione (es. SPI, I2C, 1-Wire, UART, …); • DPWS (Device Profile for Web Services) implementa un sottoinsieme delle specifiche dei Web Services (WS-*) ed aggiunge un meccanismo di ricerca dei devices che esponsono determinati servizi (discovery/probing)
  14. 14. Base Class Library System Array EnumDelegate ExceptionAttribute Math DateTime TimeSpan TypeTimeZone WeakReference System.Collections ArrayList System.Diagnostics Debugger System.Globalization CultureInfo DaylightTime System.IO Stream System.Text UTF8Encoding DateTime/Number FormatInfo System.Resources ResourceManagerHashtable Queue Stack System.Xml XmlReader StringBuilderSystem.Text.RegularExpressions Regex Match Hashtable
  15. 15. Base Class Library System.Reflection Assembly FieldInfo MethodInfo PropertyInfo System.Threading Thread Timer Interlocked AutoResetEvent ManualResetEvent System.Net WebRequest WebResponse HttpWebRequest HttpWebResponse Dns EndPoint IPEndPoint Socket
  16. 16. SPOT Library e DPWS Microsoft.SPOT Microsoft.SPOT.Input Microsoft.SPOT.Messaging Microsoft.SPOT.Net Microsoft.SPOT.Hardware GPIO UART SPI I2C Microsoft.SPOT.Presentation Controls Media Shapes Microsoft.SPOT.Touch Microsoft.SPOT.IO Removable Media VolumeInfo Microsoft.SPOT.Net.NetworkInformation NetworkInterface NetworkChange Microsoft.SPOT.Wireless Dpws Client Device Ws.Services Soap Binding Discovery Transport Microsoft.SPOT.Time 1WIRE PWM Microsoft.SPOT.Cryptoki Microsoft.SPOT.Update Microsoft.SPOT.Net.Security Microsoft.VisualBasic FTP Microsoft.SPOT.Cryptography RSA XTEA
  17. 17. Emulatore • Configurabile via XML; • Utilizzo e configurazione di componenti esistenti; • Possibilità di creare nuovi componenti; • Sviluppare la UI dell’emulatore; Managed Application Emulator Emulator Component Emulator Component Custom Emulator Component Configuration Engine
  18. 18. Hardware
  19. 19. Vantaggi/Svantaggi • Costi hardware bassi (footprint RAM, CPU, …); • Costi sviluppo bassi • Time to market rapido (prototipizzazione); • Codice managed (indipendente dall’hardware); • Visual Studio e C#/ VB.Net per lo sviluppo; • Supporto debugging sul target via Visual Studio; • Sviluppo iniziale su PC attraverso l’emulatore; • No real time (latenza interrupt e GC); • Più consumo di risorse (Flash e RAM); • Meno performance (codice managed interpretato);
  20. 20. DEMO
  21. 21. Qualche libro ... • Expert .Net Micro Framework 2° Edition - Jens Kuhner, Apress (2009) • Embedded Programming with the Microsoft .Net Micro Framework – D.Thompson, R.S.Miles, Microsoft Press (2007)
  22. 22. … e risorse dal Web • .Net Micro Framework Official Site • http://www.netmf.com/ • .Net Micro Framework Codeplex • http://netmf.codeplex.com/ • .Net Gadgeteer • http://www.netmf.com/gadgeteer/ • TinyCLR.it • http://www.tinyclr.it/ • TinyCLR.com • http://tinyclr.com/ • Netduino • http://netduino.com/ • uPLibrary • http://uplibrary.codeplex.com/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×