Metti il .Net Framework nel Micro !
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Metti il .Net Framework nel Micro !

  • 561 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
561
On Slideshare
536
From Embeds
25
Number of Embeds
1

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 25

https://twitter.com 25

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Metti il .Net Framework nel micro ! Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
  • 2. Ringraziamo gli sponsor!
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Hardware
  • 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. DEMO
  • 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. … 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/