Úvod do platformy .NET Micro Framework

Download Report

Transcript Úvod do platformy .NET Micro Framework

Jan Kučera
.NET Micro Framework Core Team
Invent the future of small intelligent devices here.
Přehled technologií
Microsoft .NET Micro Framework
Wearable
Devices
Embedded
Controllers
Home
Appliances
Game
Devices
Automotive
Point of Sale
Devices
PDA
Cell Phones
Network
Managers
Industrial
Automation
.NET Framework
.NET Compact Framework
Automotive
POS
Windows Mobile
Windows XP Embedded
Windows Embedded CE
Přehled technologií
Microsoft .NET Micro Framework
Wearable
Sensors
Devices
Embedded
Controllers
Home
Actuators
Appliances
Game
Devices
Automotive
Point of Sale
Devices
PDA
Cell Phones
Network
Managers
Industrial
Automation
.NET Framework
.NET Compact Framework
.NET
Micro
Framework
Automotive
POS
Windows Mobile
Windows XP Embedded
Windows Embedded CE
Microsoft .NET Micro Framework
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
2007
představena první verze .NET Micro Frameworku – 2.0
uvolněn SP1
2009
.NET Micro Framework 4.0
přechod na open source
Vznik .NET Micro Frameworku
Základní architektura frameworku
Microsoft .NET Micro Framework
vývojář
aplikace
User Application & Libraries
Services
DPWS
XML
WPF
...
Libraries
Threading
Collections
Sockets
...
CLR
Execution
Engine
PAL
Type
System
Timers
HAL
Drivers
TinyBooter
MicroBooter
Microsoft
CLR
Garbage
Collector
RAM
nebo
Hardware
Managed
Interop
Native
I/O
Facilites
OS
výrobce hardware
firmware
Implementační rozdíly
Microsoft .NET Micro Framework
• Just-In-Time Compilation
• Ostatní
program vždy interpretován
• Paměť typu Flash
individuální bity lze změnit pouze z 1 na 0
omezená životnost
volání instrukcí časově hlídáno
řetězce interně uloženy jako UTF-8
value types emulovány prostředím
• 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í
Přehled assembly
Microsoft .NET Micro Framework
• Základní datové typy, matematika • Stream a resources
• Kalendář a formátování
• Vlákna
• Pole a kolekce
• Reflexe
mscorlib.dll
Microsoft.SPOT.Native.dll
System.dll
• Lowlevel přístup k síti (Socket)
Microsoft.SPOT.Net.dll
• Síťová rozhraní
System.Http.dll
• HTTP (klient i server)
System.Ftp.dll
• FTP (klient i server)
Microsoft.SPOT.Time.dll
• SNTP klient
System.IO.dll
System.Net.Security.dll
• SSL
Microsoft.SPOT.Net.Security.dll
MFDpws*.dll
MFWsStack.dll
• WSD
(XmlWriter)
• 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
Microsoft.SPOT.Graphics.dll
• Bitmapy, barvy, fonty Microsoft.SPOT.Ink.dll
Microsoft.SPOT.TinyCore.dll
• Uživatelské rozhraní
MFUpdate.dll
• Vzdálený update
Microsoft.SPOT.Hardware.*.dll
• Hardware
Microsoft.SPOT.Touch.dll
• Dotyk
Microsoft.SPOT.Update.dll
Microsoft.SPOT.Wireless.IEEE_802_15_4*.dll
Začínáme
Microsoft .NET Micro Framework
• Microsoft Visual Studio C# Express Edition
http://www.microsoft.com/express
• Microsoft .NET Micro Framework SDK
http://www.digi.com/
http://netmf.codeplex.com/releases
• Emulátor nebo pro více zábavy hardware
Digi Connect ME Digi JumpStart Kit
electronics
http://www.devicesolutions.net/
http://www.ghielectronics.com/
Tahoe-II Development Kit
EMX Development Board
http://www.netduino.com/
netduino mini
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 .NET Micro Framework
• 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
Práce se vstupy a výstupy
Práce se vstupy a výstupy
Microsoft .NET Micro Framework
• 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();
Práce se vstupy a výstupy
Microsoft .NET Micro Framework
• 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 .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);
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
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
- synchronní přenos pro více zařízení na jedné sběrnici
- dva signály (data, clock)
- zasílá 7-bitová, 8-bitová nebo řídící data
- zařízení vybírána adresou
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
Uživatelské rozhraní
Microsoft .NET Micro Framework
• Model založené na Windows Presentation Foundation
- XAML designer není k dispozici
UIElement
Control
Image
Content
Control
Text
Canvas
Border
ListBox
ListBoxItem
ScrollViewer
Window
Panel
Window
Manager
StackPanel
- náročnější práce s posuvníky
TextFlow
Shape
Ellipse
Line
Polygon
Rectangle
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
Generování fontů
Microsoft .NET Micro Framework
• 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
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ý
Architektura emulátorů
Microsoft .NET Micro Framework
• Emulovaná aplikace
Managed Application
• Hotové komponenty
Emulator
• Konfigurační engine
Emulator
Component
Emulator
Component
Custom Emulator
Components
• Konfigurace stávájících komponent
• Vytváření nových komponent
• Vytvoření uživatelského rozhraní
Configuration
Engine
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/
Web
http://www.netmf.com/
http://netmf.codeplex.com/
http://www.microframework.cz/
Blogy
http://blogs.msdn.com/b/netmfteam
Microsoft .NET Micro Framework White Paper