Jan Kučera .NET Micro Framework Core Team
Přehled technologií .NET Framework .NET Compact Framework Automotive Microsoft .NET Micro Framework Přehled technologií Wearable Devices Embedded Controllers Automotive PDA Cell Phones Home Appliances Game Devices Point of Sale Devices Network Managers Industrial Automation .NET Framework .NET Compact Framework Automotive POS Windows Mobile Windows XP Embedded Windows Embedded CE
Přehled technologií .NET Framework .NET Compact Framework .NET Micro Microsoft .NET Micro Framework Přehled technologií Sensors .NET Framework .NET Compact Framework Windows XP Embedded Windows Embedded CE Automotive POS Windows Mobile Wearable Devices Embedded Controllers PDA Cell Phones Home Appliances Game Point of Sale Network Managers Industrial Automation Actuators .NET Micro Framework .NET 3.5 – 96 MB, Compact – 12 MB 256KB ROM and 64KB RAM are the absolute minimum, but I would double both numbers for any meaningful application that justifies using .NET MF rather than standard C or else
Vznik .NET Micro Frameworku Microsoft .NET Micro Framework Vznik .NET Micro Frameworku 2000 Bill Mitchel zakládá Smart Personal Objects Team v Microsoft Research 2002 Bill Gates oficiálně představuje vizi Smart Personal Objects Technology 2003 Microsoft ohlašuje SPOT Watches a technologii DirectBand 2004 SPOT Watches v komerčním prodeji, spuštěna služba MSN Direct 2006 http://www.aboutnetmf.com/ první veřejná beta .NET Micro Frameworku The Smart Personal Objects Technology group (SPOT) was formed in order to make everyday objects smarter through software and services. 2007 představena první verze .NET Micro Frameworku – 2.0 uvolněn SP1 2009 .NET Micro Framework 4.0 přechod na open source
User Application & Libraries Microsoft .NET Micro Framework Základní architektura frameworku User Application & Libraries vývojář aplikace Services DPWS XML WPF ... Libraries Threading Collections Sockets ... Microsoft CLR CLR Managed Native Execution Engine Type System Garbage Collector Interop PAL Timers RAM I/O Common Language Runtime, Platform/Hardware Abstraction Layer. HAL 20-30 kB, STA/ISR, power tricks PAL +async comm, lists atp. HAL Drivers OS Facilites nebo výrobce hardware firmware TinyBooter MicroBooter Hardware
Just-In-Time Compilation Paměť typu Flash Microsoft .NET Micro Framework Implementační rozdíly Just-In-Time Compilation program vždy interpretován Paměť typu Flash individuální bity lze změnit pouze z 1 na 0 omezená životnost Garbage Collection non-incremental mark-and-sweep algoritmus metadata přímo na haldě Threading simulovaný přepínáním po 20 ms vlákna mohou být upřednostňována a přerušována Timers událost znovu obsloužena až po dokončení předchozího volání Ostatní volání instrukcí časově hlídáno řetězce interně uloženy jako UTF-8 value types emulovány prostředím
Základní datové typy, matematika Kalendář a formátování Pole a kolekce Microsoft .NET Micro Framework Přehled assembly Základní datové typy, matematika Kalendář a formátování Pole a kolekce Stream a resources Vlákna Reflexe mscorlib.dll Microsoft.SPOT.Native.dll System.dll Lowlevel přístup k síti (Socket) System.Net.Security.dll SSL Microsoft.SPOT.Net.dll Síťová rozhraní Microsoft.SPOT.Net.Security.dll System.Http.dll HTTP (klient i server) MFDpws*.dll MFWsStack.dll WSD (XmlWriter) System.Ftp.dll FTP (klient i server) Microsoft.SPOT.Time.dll SNTP klient System.IO.dll Souborový systém Microsoft.SPOT.IO.dll Média System.Xml.dll XmlReader System.Xml.Legacy.dll System.Security.dll Kryptografická primitiva Microsoft.SPOT.Security.PKCS11.dll This consists of approximately 70 classes representing about 420 methods, as opposed to the approximately 1450 classes and 22500 methods of the full .NET implementation. Microsoft.SPOT.Graphics.dll Bitmapy, barvy, fonty Microsoft.SPOT.Ink.dll Dotyk Microsoft.SPOT.TinyCore.dll Uživatelské rozhraní Microsoft.SPOT.Touch.dll MFUpdate.dll Vzdálený update Microsoft.SPOT.Update.dll Microsoft.SPOT.Hardware.*.dll Hardware Microsoft.SPOT.Wireless.IEEE_802_15_4*.dll
Microsoft .NET Micro Framework SDK http://netmf.codeplex.com/releases Začínáme Microsoft Visual Studio C# Express Edition http://www.microsoft.com/express Microsoft .NET Micro Framework SDK http://netmf.codeplex.com/releases Emulátor nebo pro více zábavy hardware http://www.digi.com/ Digi Connect ME Digi JumpStart Kit electronics http://www.devicesolutions.net/ http://www.ghielectronics.com/ http://www.netduino.com/ 2008 neither 2005 Express Edition supported Tahoe-II Development Kit EMX Development Board netduino mini
EMX Development System Microsoft .NET Micro Framework EMX Development System electronics Procesor NXP LPC2478 72 MHz Flash 4.5 MB SRAM 16 MB LCD 3.5" TFT 320×240 Napájení +5V 160 mA 4× UART 2× SPI 1× I2C 16× GPIO 6× PWM JTAG
Microsoft.SPOT.Hardware.OutputPort Microsoft .NET Micro Framework Práce se vstupy a výstupy Microsoft.SPOT.Hardware.OutputPort - k ovládání výstupních pinů - zapsaný stav lze číst Microsoft.SPOT.Hardware.InputPort - ke čtení vstupů - ochrana proti zákmitům - možná konfigurace pull-up nebo pull-down Microsoft.SPOT.Hardware.InterruptPort - událost při změně hodnoty vstupu - dva režimy přerušení Microsoft.SPOT.Hardware.TristatePort - pro použití jednoho pinu jako vstup i výstup - umožňují sdílení pinů mezi sebou
Microsoft.SPOT.Hardware.AnalogInput Microsoft .NET Micro Framework Práce se vstupy a výstupy Microsoft.SPOT.Hardware.AnalogInput - volitelná přesnost - lineární přepočet // Microsoft.SPOT.Hardware.dll AnalogInput analog = new AnalogInput ( Cpu.AnalogChannel.ANALOG_0, scale, offset, precisionInBits ); double hodnota = analog.Read();
Microsoft.SPOT.Hardware.PWM // Microsoft.SPOT.Hardware.PWM.dll Microsoft .NET Micro Framework Práce se vstupy a výstupy Microsoft.SPOT.Hardware.PWM - frekvence a střída / perioda a doba - synchronní spuštění a vypnutí - možnost inverze // Microsoft.SPOT.Hardware.PWM.dll PWM pwm1 = new PWM(Cpu.PWMChannel.PWM_0, frequency_Hz, dutyCycle, invert); PWM pwm2 = new PWM(Cpu.PWMChannel.PWM_1, period, duration, scale, invert); pwm1.Start(); pwm1.Stop(); PWM.Start(new [] { pwm1, pwm2 });
Microsoft.SPOT.Hardware.OneWire Microsoft .NET Micro Framework Práce se vstupy a výstupy Microsoft.SPOT.Hardware.OneWire - zatím jen zpřístupněný ovladač - nalezení zařízení na lince // Microsoft.SPOT.Hardware.OneWire.dll OutputPort wirePort = new OutputPort(Cpu.Pin.GPIO_Pin0, false); OneWire wire = new OneWire(wirePort); ArrayList serialNumbers = wire.FindAllDevices(); wire.ReadByte(); wire.WriteByte(b); wire.TouchReset(); wire.TouchBit(bit); wire.TouchByte(b);
System.Threading.Timer Microsoft .NET Micro Framework Časovače a vlákna System.Threading.Timer - opakované spouštění metody - nelze pozastavit, jen přenastavit - spuštěný Timer není důvodem k jeho uchování v paměti Microsoft.SPOT.ExtendedTimer - přednastavené intervaly a události - lze použít ke spouštění metod v absolutním čase - záznam o posledním spuštění Microsoft.SPOT.DispatcherTimer - pro grafický režim - používá události a lze pozastavovat System.Threading.Thread - standardní práce s vlákny – Start, Abort, Sleep, Suspend, Resume, Join - standardní synchronizace, lock (Monitor), ResetEvent
System.IO.Ports.SerialPort Microsoft .NET Micro Framework Práce se sériovým rozhraním System.IO.Ports.SerialPort - software i hardware flow control - základní metody Write and Read nebo práce se Streamem - přerušení při přijmu dat nebo chybě Microsoft.SPOT.Hardware.SPI - synchronní přenos pro více zařízení na jedné sběrnici - tři signály (data in, data out, clock) - 8-bitová i 16-bitová verze, i na stejném portu - chip select nutno přes GPIO Microsoft.SPOT.Hardware.I2CDevice - dva signály (data, clock) - zasílá 7-bitová, 8-bitová nebo řídící data - zařízení vybírána adresou
Microsoft.SPOT.ExtendedWeakReference Microsoft .NET Micro Framework Ukládání dat na paměť FLASH Microsoft.SPOT.ExtendedWeakReference - odkaz na objekt, zapsaný do stálé paměti (c_SurviveBoot, c_SurvivePowerDown) - lze uložit libovolný, serializovatelný typ objektu - data v paměti mohou mít různou důležitost (System, Critical, Important, NiceToHave, OkayToThrowAway) - jednotlivé objekty identifikovány typem a číslem - přesun do RAM jen jednou za běh programu Souborový systém - paměťová karta nebo vyhrazený kus FLASH - události při vložení nebo vyjmutí média - formátování média - práce se Streamy
Model založené na Windows Presentation Foundation Microsoft .NET Micro Framework Uživatelské rozhraní Model založené na Windows Presentation Foundation - XAML designer není k dispozici UIElement Control Content Control Border ListBox ListBoxItem ScrollViewer Window Image Panel Canvas Window Manager StackPanel Text TextFlow Shape Ellipse Line Polygon Rectangle - náročnější práce s posuvníky
Identifikace typem short Vlastní System.Resources.ResourceManager Microsoft .NET Micro Framework Práce s resources Identifikace typem short Vlastní System.Resources.ResourceManager Pomocná třída Microsoft.SPOT.ResourceUtility Automaticky generované metody - Resources.GetString(id) / GetBitmap(id) / GetFont(id) / GetBytes(id) Podpora základních formátů obrázku - BMP, GIF a JPEG - Bitmapy 1-bitové indexované; 24-, 32-, 48-bitové RGB; 16-bitové RGB 555 a 556 - BMP jako resource nejdou modifikovat přímo - Zobrazení na displej stejně velké bitmapy metodou Flush - Nelze vytvářet nové bitmapy určeného formátu - Nelze přistupovat na bitmapová data přímo
Fonty se přidávají jako resource Microsoft .NET Micro Framework Generování fontů Fonty se přidávají jako resource Speciální bitmapový formát Tiny Font (.tinyfnt) Na vytváření k dispozici příkazová řádka ...\Microsoft .NET Micro Framework\v4.2\Tools\TFConvert.exe AddFontToProcess "C:\\Fonts\\TrueType\\Kooten.ttf" SelectFont "WE:400,FN:Kootenay,IT:1" #import A, B, C ImportRange 65 67 SetAsDefaultCharacter 88 #use X as default Omezení: - Pouze skripty zleva doprava - Žádné znaky měnící se v závislosti na umístění v řetězci - 4-bajtové znaky (nejvyší 0xFFFD) - Vyhlazování hran
Nahrávání aplikací do zařízení v produkčním prostředí Microsoft .NET Micro Framework .NET Micro Framework Deploy Tool Nahrávání aplikací do zařízení v produkčním prostředí Zkoušení přeživších zařízení Vytváření obrazů s aplikacemi Správa klíču pro podepisování zařízení Low-level ladění Nahrávání firmware Lze použít i bez uživatelského rozhraní Programovatelný
Custom Emulator Components Microsoft .NET Micro Framework Architektura emulátorů Emulovaná aplikace Hotové komponenty Konfigurační engine Managed Application Emulator Emulator Component Custom Emulator Components Configuration Engine Konfigurace stávájících komponent Vytváření nových komponent Vytvoření uživatelského rozhraní
Embedded Programming with the Microsoft® .NET Micro Framework Literatura Embedded Programming with the Microsoft® .NET Micro Framework Donald Thompson, Rob S. Miles Expert .NET Micro Framework Jens Kühner Professional's Guide to .NET Micro Framework Application Development John R. Malin, Sean D. Liming http://www.annabooks.com/ Thermometer, Number parsing, HAL Debugging Web Blogy http://www.netmf.com/ http://netmf.codeplex.com/ http://www.microframework.cz/ http://blogs.msdn.com/b/netmfteam Microsoft .NET Micro Framework White Paper