Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer

Pagina creata da Valeria Angelini
 
CONTINUA A LEGGERE
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
Metti il .Net Framework nel micro !
            Il mondo embedded secondo Microsoft

Paolo Patierno
Software Engineer
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
Ringraziamo gli sponsor!
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
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
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
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
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
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;
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
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»;
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
Architettura
               User Applications & Libraries

                                                                                managed
Libraries         .NET           WPF            COMM                 …
                                                                                  native

                 Execution        Type          Garbage                        Runtime per il
CLR               Engine         System         Collector
                                                                  Interop
                                                                               codice managed

                                                                               Astrazione
PAL                     Timers            RAM               I/O                dell’hardware

                                                                               Accesso diretto
HAL           Drivers             or             OS               Facilities
                                                                               all’hardware
~20 – 30 KB

                             Hardware
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
Compilazione ed Esecuzione
Assembler        C/C++                  .Net Framework    .Net Micro Framework
 Assembler
               Source code                 Source code         Source code
  Source

                                            Compiler            Compiler

                                             Microsoft           Microsoft
                                           Intermediate        Intermediate
                                             Language            Language
                                             Assembly            Assembly

                                           Just in Time
 Assembler       Compiler
                                            Compiler
                                                               Intermediate
 1:1           1:n                                                                  Managed
                                                                 Language
                                                                                 Environment
                                                                Interpreter
Machine Code   Machine Code               Machine Code

                            Computer Processor
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
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;
Metti il .Net Framework nel micro ! - Il mondo embedded secondo Microsoft Paolo Patierno Software Engineer
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
 {
 ...
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();
Hardware : Object Model
                                                                         OutputPort

                                              Object sull’heap
                                                                        +Write(bool)

                                           InputPort                     Native Code

                                          +bool Read()
         outPort

                                          Native Code

 Reference
 sullo stack

                   inPort
                                   Pin3       Pin2       Pin1    Pin0   Porta fisica

• Più che alla port, permettono di accedere al
  singolo pin all’interno di essa
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)
Base Class Library
               Array              Attribute         DateTime         Delegate          Enum         Exception
System
               Math              TimeSpan           TimeZone        Type        WeakReference       Hashtable

System.Globalization             CultureInfo          DaylightTime              DateTime/Number FormatInfo

                            ArrayList          Hashtable       System.Resources            ResourceManager
System.Collections
                            Queue                Stack         System.Diagnostics               Debugger

System.Xml           XmlReader          System.IO          Stream                               UTF8Encoding
                                                                            System.Text
System.Text.RegularExpressions                 Regex       Match                                StringBuilder
Base Class Library

                    WebRequest        WebResponse                HttpWebRequest          HttpWebResponse
System.Net
                       Dns               EndPoint                 IPEndPoint            Socket

System.Reflection         Assembly            FieldInfo         MethodInfo        PropertyInfo

                             Thread            Timer            Interlocked
System.Threading
                             AutoResetEvent               ManualResetEvent
SPOT Library e DPWS
Microsoft.SPOT                                         Microsoft.SPOT.Hardware

Microsoft.SPOT.Cryptography                             GPIO     UART       SPI   I2C      1WIRE   PWM

          RSA                         XTEA             Microsoft.SPOT.IO

Microsoft.SPOT.Presentation                                 Removable Media                VolumeInfo

   Controls            Media            Shapes
                                                       Microsoft.SPOT.Touch

Microsoft.SPOT.Input                                   Microsoft.SPOT.Net            FTP

Microsoft.SPOT.Messaging                               Microsoft.SPOT.Net.NetworkInformation

Microsoft.SPOT.Time                                        NetworkInterface             NetworkChange

       Dpws                      Ws.Services           Microsoft.SPOT.Net.Security
 Client       Device           Soap          Binding
                                                       Microsoft.SPOT.Wireless
     Discovery                    Transport
                                                       Microsoft.VisualBasic
Microsoft.SPOT.Cryptoki
                                                       Microsoft.SPOT.Update
Emulatore

                 Managed Application

                           Emulator

    Emulator    Emulator    Custom Emulator   Configuration
   Component   Component      Component          Engine

   •   Configurabile via XML;
   •   Utilizzo e configurazione di componenti esistenti;
   •   Possibilità di creare nuovi componenti;
   •   Sviluppare la UI dell’emulatore;
Hardware
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);
DEMO
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)
… 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/
Puoi anche leggere