Scoprire il Micro Framework con C# (Raffaele Rialdi)

1,479 views

Published on

Il Micro Framework è una versione ultra-ridotta del Framework.NET per piccole CPU a 32 bit dove è lo stesso CLR a fungere da pseudo sistema operativo.
La chiave di svolta del Micro Framework è di poter utilizzare C# per scrivere applicazioni che girano su un hardware totalmente indipendente, di bassa potenza e dalle funzionalità molto elevate.
Basti solo pensare alla possibilità di pubblicare un servizio WCF, oppure chiamare un servizio WCF esterno, o ancora scrivere la UI con una mini versione di WPF (priva di xaml) o ancora accedere liberamente alle periferiche hardware senza bisogno di driver.
Il mondo delle periferiche è tutto sotto controllo: USB (client e host), RS232, Schede SD, monitor, CanBus, ZigBee, etc. etc.
Durante la sessione scopriremo quanto l'hardware non faccia più paura in questo mondo, e sia abbordabile da chiunque provenga della programmazione software.

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
1,479
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
9
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Scoprire il Micro Framework con C# (Raffaele Rialdi)

  1. 1. Raffaele Rialdi<br />Twitter: @raffaeler<br />Email:malta@vevy.com<br />Articoli e codice: http://www.iamraf.net<br />Blog:http://blogs.ugidotnet.org/raffaele<br />Profilo MVP:https://mvp.support.microsoft.com/profile/raffaele<br />Scoprire il Micro Frameworkcon C#<br />
  2. 2. Il mondo dei device<br />Ieri<br />PC  Full Windows<br />Apparati industriali  Windows Embedded / CE<br />PDA, Cellulari  Windows CE<br />Piccole schede  Micro Framework<br />Domani<br />PC  Full Windows<br />Apparati industriali  Windows Embedded / CE<br />PDA, Cellulari  Full Windows vNext (SoC)<br />Piccole schede  Micro Framework<br />
  3. 3. Caratteristiche dell'hardware<br />Circa 256K di RAM, 512K di ROM<br />WinCE è intorno ai 10MB RAM / 10MB ROM<br />CPU 32 bit tipicamente tra 27 e 100MHz<br />ARM 7 in poi, Analog Devices Blackfin, Renesas SH2/SH2A<br />Memory Management Unit non necessaria<br />… Porting Kit!<br />
  4. 4. Caratteristiche del MF<br />Nasce nel 2001 dal progetto "Smart Personal Object Technology" (SPOT) usata per gli orologi MSN<br />Codebase indipendente da CF o fx.net<br />Open source http://netmf.codeplex.com<br />Subset del full fx.net<br />Il runtime del CLR interpreta il codice IL<br />Pieno controllo delle periferiche hardware<br />Supportato da VS2010 (anche express)<br />Wizard, emulatore, esempi, help<br />Tool diagnostici e conversione font truetype<br />
  5. 5. Architettura<br />HTTP(S)<br />Managed Application<br />Application Services<br />SDK<br />SSL<br />DPWS<br />XML Parser<br />Advanced Graphics<br />Managed Libraries<br />Threading<br />Collections<br />Sockets<br />Reflection<br />USB client<br />I/O: USB, <br />UART, SPI, I2C<br />Basic<br />Graphics<br />Porting Kit (PK)<br />Security<br />File System<br />Touch Panel<br />Managed Run-Time<br />CLR, Interpreter, Executive, and Interop<br />PAL – Platform Abstraction Layer<br />approximately 40 functions<br />(preferred)HAL - Hardware Abstraction Layer<br />approximately 60 functions<br />(optional)Host OS<br />Hardware<br />
  6. 6. Ambiente di sviluppo<br />
  7. 7. Librerie – Supporto Base<br />Suddivise tra i namespace System.* e SPOT.*<br />ArrayList (unica collection), Hashtable, Queue, Stack<br />XmlWriter, XmlReader, XmlTextReader<br />Thread, Timer, AutoResetEvent, …<br />Reflection<br />IO: File, streams, SerialPort<br />Crypto API<br />GC, delegate, AppDomain, String, Uri, WeakReference, …<br />
  8. 8. Librerie - Hardware<br />Microsoft.SPOT.Hardware<br />Battery, PowerState, PowerEvent, SleepEvent<br />Cpu<br />I2CDevice<br />Port, InputPort, OutputPort, InterruptPort, TristatePort<br />SPI<br />Watchdog, WatchdogEvent<br />Microsoft.SPOT.Hardware.UsbClient<br />SDK Specifici dei produttori OEM. Per es. GHI Electronics:<br />CAN, PWM, RealtimeClock, OneWire<br />USB client (mouse, kbd, …), USB host (mouse, kbd, …)<br />…<br />
  9. 9. Librerie – User Interface<br />Implementa WPF! (versione super-ridotta)<br />Niente XAML o binding, solo API essenziali<br />Microsoft.SPOT.Presentation<br />Controlli<br />Border, Canvas, Image, ListBox, Panel, ScrollViewer, StackPanel, Text, …<br />No Button:http://www.nielsderdaele.be/post/2010/10/12/WPF-Based-Touch-Button-for-NET-Micro-Framework-41.aspx<br />Disegno<br />Brush, Color, Pen, ImageBrush, DrawingContext, …<br />Ellipse , Line, Polygon, Rectangle, Shape<br />Touch<br />Ink, Touch, TouchEvent, TouchPanel, InkCanvas<br />Event routing e input providers<br />
  10. 10. Librerie - Network<br />Network:<br />Socket<br />HttpWebRequest, HttpWebResponse and HttpListener<br />Esistono esempi di Webserver pronti all'uso<br />HTTP/1.1 compreso chunking e keep-alive<br />SSL con certificati X.509!<br />Transport:<br />802.11 [WiFi] supportato (necessita di supporto sdk OEM)<br />802.15.4 [ZigBee] implementato ma ancora non documentato<br />
  11. 11. Librerie - DPWS<br />Implementa WCF (Device Profile for Web Services)!<br />Può essere client o server<br />Implementa WS-Discovery<br />Generazione proxy con MFSvcUtil<br />Implementazione ridotta:<br />http://msdn.microsoft.com/en-us/library/ee435399.aspx<br />Solo Http binding<br />WSDL 1.1, SOAP 1.2, WS-Addressing, WS-MetadataExchange, WS-Transfer, WS-Discovery, WS-Eventing<br />
  12. 12. C# nel Micro Framework<br />Non implementati:<br />Generics<br />Linq<br />Workaround:http://blogs.oberon.ch/tamberg/2009-02-06/implementing-linq-on-the-dotnet-mf.html<br />Expression trees<br />anonymous types<br />partial classes<br />nullable types<br />tipi puntatori (e.g. IntPtr)<br />supporto limitato per unsafe code blocks<br />Solo unsafe/fixed in un numero di casi limitati e su array<br />custom attributes <br />
  13. 13. Real-world samples<br />http://www.tinyclr.com/ by GHI<br />http://www.netduino.com/projects/ by Netduino<br />Micro Framework sources (+ contributions) by NetMF team<br />http://netmf.codeplex.com/documentation<br />
  14. 14. Votate le feature perla prossima release!<br />http://netmf.codeplex.com/<br />Login via LiveId<br />Issue Tracker<br />Votate!<br />REST: http://netmf.codeplex.com/workitem/751<br />Generics: http://netmf.codeplex.com/workitem/750<br />Video Streaming: http://netmf.codeplex.com/workitem/749<br />Il team del Micro Framework legge tutte le richieste<br />È possibile collaborare al source tree ufficiale (direttamente sul TFS di codeplex)<br />
  15. 15. Domande ?<br />Uno grazie speciale a Lorenzo Tessiore e Zach Libby del team di Micro Framework per la disponibilità e i suggerimenti<br />

×