IoT HoloLens Surface Hub Windows Desktop Windows Phone Xbox ONE CORE OS ONE APP PLATFORM ONE STORE...
-
Upload
scott-french -
Category
Documents
-
view
241 -
download
2
Transcript of IoT HoloLens Surface Hub Windows Desktop Windows Phone Xbox ONE CORE OS ONE APP PLATFORM ONE STORE...
The journey to one Windows…
IoTHoloLens
Surface Hub
Windows Desktop
Windows Phone
Xbox
ONE CORE OSONE APP PLATFORMONE STOREWindows 10
on a full range of devices…
Windows 10
Phone Small Tablet
2-in-1s(Tablet or Laptop)
Desktops & All-in-OnesPhablet Large Tablet
Classic Laptop
XboxIoT
Surface Hub
Holographic
tuned to each form factor…
One Core OSBase OS
App and Device platform
Runtimes and frameworks
Windows for …
Form factor–appropriateshell experience
Device-specific scenario support
Windows for phones
Familiar mobile shell
Rich telephony
Windows phone app compatibility
Windows for PCs
Familiar desktop shell
Broad hardware ecosystem
Windows desktop application compatibility
Windows on Xbox
10’ shell experience
Shared gaming experiences
Xbox Onegame and app compatibility
One App Platform
…with one app platform
Multiple device families
Commonstore and dev center
Common APIsand SDK
Commontoolset
Adaptive user interface Natural
user inputs
HoloLensXbox
Surface Hub
MobileDevices
+IoT
PC
One Device Platform
…and one device platform
Multiple device families
Commonhardwaredev center
Common DDIsand WDK
Commontoolset
Commondevelopment hardware Common
validationsuite
HoloLensXbox
Surface Hub
MobileDevices
+IoT
PC
Windows universal device platformDevelop to a single API/DDISame API for Desktop, Tablet, Phone, IoT
Build once for all Windows editionsOne binary per instruction set, not per device family
Runs on all Windows devicesPhone, Tablet, Desktop, Server, IoT
z
Universal Driver
Windows apps definedApps built on the Windows universal app platform are called Windows appsIn contrast with Windows desktop applications that run on PCs only
Windows app Windows desktop application
Runs on all Windows device families Runs on PCs only
Can access WinRT, COM, and subset of Win32 APIs
Can access WinRT, COM, and Win32 APIs
Has strong app identity (static and dynamic) Raw EXEs and processes
Declarative APPX manifest Opaque binaries
Self-contained APPX package Loose files or MSI
Isolated per-user/per-app storage (local and roaming)
Shared user profile
Participate in app resource management and PLM
Process-level lifecycle
Apps and driversNeither Windows apps nor Windows desktop applications can…• Directly access physical hardware resources• Directly access IP blocks on silicon• Respond to Windows I/O calls (e.g., ReadFile, WriteFile)• Integrate into device tree, device manager, etc• Adapt new hardware to established APIs (e.g., winsock, DirectX)• Respond to full range of power state changes• Directly interact with the internals of the kernel
To do any of these, you need a Windows driver
Windows drivers definedA Windows driver is an executable (.sys) that exports a DriverEntry functionSets up dispatch table for OS to invoke I/O, power, PnP, routines
Windows defines technology specific APIs (for ISVs) and DDIs (for IHVs)Winsock/NDIS, DirectX/WDDM, etc
Windows ships with in-box class drivers where hardware standardization no longer warrants 3rd party drivers
Some DDIs defined as miniport drivers that replace generic driver-isms with domain-specific entry points
Windows Driver Framework (WDF) simplifies both user-mode (UMDF) and kernel-mode (KMDF) drivers
Windows architecture
ntoskrnl.exe (Kernel)
Object Management
MemoryManagement
InterprocessCommunicati
on
ProcessManagement
Dispatcher (kernel)Kernel-mode Driver
I/O Manager
Kernel-mode DriverKernel-mode Driver
Kernel-mode DriverKernel-mode Driver
User-mode DriverKernel-mode Driver
Kernel-mode DriverSCM-based Service
Kernel-mode DriverKernel-mode Driver
Windows appKernel-mode Driver
Kernel-mode DriverWindows desktopapplication (PC
only)
User mode
Kernel mode
Windows ABIs, APIs, & DDIsAn Application Programming Interface (API) is a set of specific entry points for use by applications
An Device Driver Interface (DDI) is a set of specific entry points for use by drivers
An Application Binary Interface (ABI) is a set of rules for invoking code across independently deployed modules (drivers or applications)Both APIs and DDIs conform to an ABI
Windows
Windows driver
Windows app
Windows DDI
Windows API
The Windows DDIThe Windows universal device platform defines a single DDI that spans all Windows 10 device families
Kernel-mode drivers are implicitly scoped to a single DDI specification
User-mode drivers have access to both the DDI and API surface of Windows
• User-mode DDI is common across device families
• User-mode API is distinctly partitioned for user-mode drivers, Windows apps, and Windows desktop applications
The Windows APIThe Windows API has three distinct patterns that define the ABI rules for functions, interfaces, and classesAPI Type Win32 COM WinRT
Abstraction Functions Interfaces Classes
Definition C header file (text)
IDL file (text) WINMD file (binary)
Callable from C/C++ Yes Yes Yes
Callable from CLR (C#, VB, etc)
Yes (manual) Yes (manual) Yes (automatic)
Callable from Javascript No No Yes
The Windows APIWinRT APIsWin32/COM APIs
WinRT MethodsWindows apps
Windows desktop
applications,system code
windowsapp.lib
onecoreuap.libWindows universal system code onecoreuap.lib
kernel32.lib, advapi32.lib, etc.
WinRT Methods
WinRT Methods
Developing Windows universal driversVisual Studio provides an IDE, build tools, and the Windows SDK• Visual Studio Community Edition available for free at http://visualstudio.com
• All you need to write Windows apps and Windows desktop applications
Driver development requires the Windows Driver Kit (WDK) which adds tools, headers, and libs to the SDK• Available for free at https://msdn.microsoft.com/en-us/windows/hardware/
Driver projects can target Desktop, Phone, or Universal• The former two ease transition from existing codebases that have
dependencies on desktop and/or phone-specific APIs
• The latter produces drivers that can be deployed on all Windows 10 devices
WDF implements the best practices for driver development• WDF contains non-trivial code due to asynchrony and complex state machines
In Windows 8.1, WDF was only available as an opaque binary• Cannot easily debug interactions between your code, WDF, and Windows• Cannot easily understand how WDF is implemented
With Windows 10, we are now making WDF source codeavailable on GitHub
Windows Driver Framework
Windows Driver Framework and GitHub
WDF code available on GitHub https://www.github.com/Microsoft/windows-driver-frameworks
Private symbols available through Microsoft symbol server• Debugger automatically finds the right symbol
Source code available to debugger through source server • Debugger automatically finds the right source file• No Need to copy source code manually to local machine
Windows hardware dev boards
Windows now supports both x86 and ARM-based development boards for both commercial and enthusiast developers
Easy physical access to I/O to support device prototyping and pre-production development
Supports multiple device family OS editions based on instruction set compatibility
Retail availability from multiple electronics suppliers
Sharks Cove & MinnowBoard MAX
Sharks Cove• Intel ® Atom™ Processor Z3735G, 2M Cache, 4
Core, 1.33GHz up to 1.88GHz• Supports Connected Standby• 32-bit UEFI firmware• Headers for Camera, MIPI Display, USB, I2C,
SDIO, UART, GPIO, UART-to-USB for debug
MinnowBoard MAX• Intel® Atom™ E3800 processor• 64-bit & 32-bit UEFI firmware • Can also be used as an UEFI Development Kit• PWM capable GPIO (2 pins of 8 total GPIO)• Open Hardware Platform (Gerbers & Layout)
Both boards support Windows 10
Raspberry Pi 2Bringing the power of Windows to the Maker community
Hardware specs:• Broadcom 2836 900MHz quad-core ARM
Cortex-A7 CPU
• 1GB LPDDR2 SDRAM
• MicroSD, Ethernet, USB, HDMI
• GPIO, I2C, I2S, SPI
Attend the session on Building Devices with Windows IoT to learn more
Build innovative solutions using Windows & Qualcomm Snapdragon
Hardware specs:• Qualcomm Snapdragon 410 (APQ8016)
• 1GB LPDDR3, 4GB eMMC
• MicroSD, WiFi 802.11a/b/g/n, BT4.1 + LE, GPS
• GPIO, I2C, I2S, SPI
Attend the session on Create Intelligent Devices with Snapdragon and Windows to learn more
Qualcomm DragonBoard™ 410C
Demo: Universal apps, drivers and dev boards
Windows for PCs
Sensor driver
Sensor app
Windows DDI
Windows API
Windows for IoT
Windows DDI
Windows API
Windows for Phones
Windows DDI
Windows API
Sharks Cove MinnowBoard Max Dragonboard
Device Imaging: Full Flash Update
All Windows 10 device families support imaging and manufacturing based on Full Flash Update (FFU)• Existing workflow/tools still supported (e.g., production media, WIM)
for PC
FFU image format is sector-based and describes all partitions on disk
FFU images created using Windows Imaging and Configuration Designer (WICD) or command-line tools (imageapp.exe)
FFU images flashed to up to 8 USB-tethered devices using ffutool.exe or directly to disk using WICD or dism.exe
FFU Device Imaging
OS-Package.cabOS-Package.cab
BSP Packages
OS-Package.cabOS-Package.cabOS Packages
Kernel-mode DriverKernel-mode DriverDriver Packages
CustomApp.appxCustomApp.appxCustomApp.appx
WICDor
IMAGEAPP
OEMInput.xml
FeatureManifest.xml
FeatureManifest.xml
OEMCustomization.xml
FeatureManifest.xml
FeatureManifest.xml
FeatureManifest.xml
FeatureManifest.xml
Device-Image.ffu
Device-Image.ffu
FFU Device Imaging
FFUTOOL
WICD or
DISM
Flash to up-to 8 tethered Windows devices
…
or
EFI Partition
Write directly to disk
Device-Image.ffu
Wrap upWindows 10 allows a single driver to span multiple device families (PCs, Phones, Tablets, IoT)
Driver development is made simpler with Windows Driver Framework, now available on GitHub
Windows 10 supports a range of x86 and ARM development boards
Windows 10 provides a single FFU-based toolchain to support imaging and manufacturing Windows devices
© 2015 Microsoft Corporation. All rights reserved.
(c) 2015 Microsoft Corporation. All rights reserved. This document is provided "as-is." Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it. This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes. Some information relates to pre-released product which may be substantially modified before it’s commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.