IoT HoloLens Surface Hub Windows Desktop Windows Phone Xbox ONE CORE OS ONE APP PLATFORM ONE STORE...

33
Shenzhen 2015

Transcript of IoT HoloLens Surface Hub Windows Desktop Windows Phone Xbox ONE CORE OS ONE APP PLATFORM ONE STORE...

Shenzhen 2015

Windows 10Hardware Platform Overview

Don BoxDistinguished Engineer

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

DemoWriting a Windows universal driverwith Visual Studio and the WDK

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

DemoWDF sources on GitHub

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

DemoRunning a universal driver on hardware dev boards

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

DemoFFU imaging walkthrough

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.