Download presentation
Presentation is loading. Please wait.
1
请点击以下链接下载WinHEC的演讲材料 Download WinHEC presentations here:
2
访问 GPIO、I2C 和 UART 设备 Devin Wong 软件工程师
3
Windows 提供了简化的框架,从而通过低功 耗总线 (LPB) 与设备进行通信。
4
Tech Ready 15 12/5/2018 简介和议程 会议简介 现代设备和传感器使用低功耗总线(例如 GPIO、SPI、I2C、UART 等)的组合来彼此连接和交互。本次会议将介绍 Windows 为您提供的不同框架,从而在这些低功耗总线上编写传感器或设备客户端驱动程序。 会议议程 Windows 低功耗总线概述 通过 I2C 总线的加速度传感器驱动程序分步介绍 避免常见错误的最佳做法和提示 参考和行动号召 © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
5
Windows 低功耗总线体系 结构概述 12/5/2018 10:32 AM
© 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
6
Windows 上的低功耗总线 GPIO I2C、SPI UART 用作中断或用于通用 I/O 按钮、开关、指示灯、系统唤醒等
12/5/ :32 AM Windows 上的低功耗总线 GPIO 用作中断或用于通用 I/O 按钮、开关、指示灯、系统唤醒等 SPB、串行和其他总线的中断 I2C、SPI 简单外设总线 (SPB) = I2C,SPI I2C:100Kbps-3.4Mbps, SPI:高达 160Mbps 通常用于: 输入/HID 无线设备 传感器 电源管理 UART 高速 UART 高达 20Mbps 无 COM 端口 蓝牙 GPS © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
7
设备与低功耗总线的连接 系统芯片集 I2C 1 GPIO I2C 2 UART 加速计 氛围光传感器 触摸板 蓝牙无线 收发器
12/5/ :32 AM 设备与低功耗总线的连接 系统芯片集 I2C 1 GPIO I2C 2 UART 加速计 氛围光传感器 触摸板 蓝牙无线 收发器 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
8
资源中心将各部分连接在一起 资源中心 固件 ACPI I2C GPIO I2C UART IHV SoC 供应商 Microsoft 固件
12/5/ :32 AM 资源中心将各部分连接在一起 固件 ACPI I2C GPIO I2C UART 资源中心 IHV SoC 供应商 Microsoft 加速计 氛围光传感器 触摸板 蓝牙无线 收发器 固件 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
9
设备管理器表现形式 资源中心是将正确的控制器与 外设联系在一起的关键部分。
开发者、IT 管理员和爱好者 可以清楚地识别拓扑结构,并 像管理其他任何即插即用的设 备一样管理设备。
10
UMDF 类扩展驱动程序(例如传感器类扩展)
12/5/ :32 AM 典型的设备驱动程序体系结构 UMDF UMDF 类扩展驱动程序(例如传感器类扩展) 外围设备驱动程序 KMDF KMDF 类扩展总线驱动程序 KMDF 类扩展总线驱动程序 总线控制器驱动程序 总线控制器驱动程序 IHV 外设硬件 SoC 供应商 Microsoft © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
11
GPIO 类扩展驱动程序 (GpioClx.sys)
12/5/ :32 AM GPIO 框架 GPIO 组件 GPIO 控制器驱动程序:针对 GPIO 控制器管理特定于硬件的操作。驱动程序由 SoC 芯片合作伙伴提供。 GPIO 类扩展驱动程序:针对设备驱动程序提供与硬件无关的 GPIO 功能。由 Microsoft 提供。 GPIO 框架的优势 设备驱动程序可以将 GPIO 引脚用作 I/O 资源或中断。 框架将 GPIO 外设中断提取为普通中断,并帮助将它们路由到其各自的中断服务例程。 框架可管理在读取和写入时对硬件的 I/O 回调。 设备驱动程序 GPIO 类扩展驱动程序 (GpioClx.sys) GPIO 控制器驱动程序 物理硬件 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
12
SPB(I2C、SPI)框架 SPB 组件 设备驱动程序 SPB 框架扩展 (SpbCx.sys) I2C 或 SPI 控制器驱动程序
12/5/ :32 AM SPB(I2C、SPI)框架 SPB 组件 SPB 控制器驱动程序:管理 I2C 或 SPI 控制器特定于硬件的操作。驱动程序由 SoC 芯片合作伙伴提供。 SPB 框架扩展:从设备驱动程序提取特定于总线和特定于控制器的 I/O 处理。由 Microsoft 提供 SPB 设备驱动程序:驱动程序与连接到 I2C/SPI 的外设通信,由外设 IHV 或 Microsoft 提供。 SPB 框架的优势 单个设备驱动程序可以用于不同的总线类型(例如 I2C 和 SPI) 框架可扩展用于支持今后其他简单总线 框架可管理在读取和写入时对硬件的 I/O 请求 框架允许客户端驱动程序通过原子序列 IOCTL 执行复杂序列。由框架而不是每个客户端驱动程序处理 支持复杂的 I/O 请求,例如连接或控制器锁 控制器支持针对总线(例如可以同时读写数据的 SPI)的全双工 I/O 操作 设备驱动程序 SPB 框架扩展 (SpbCx.sys) I2C 或 SPI 控制器驱动程序 物理硬件 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
13
SPB 客户端驱动程序 - HID over I2C
Microsoft 通过 I2C 的外设类驱动 程序 超过 100 个硬件合作伙伴支持的 行业标准 常见外设包括触摸板、传感器、 HID 等 特性 支持任何 I2C 速度(建议 100K-1M) 需要带外中断机制(例如 GPIO 线) 支持从低功耗状态唤醒 驱动程序中支持可调试功能(ETW 和 WPP)
14
串行框架 – SerCX V2 串行组件 串行框架的优势
12/5/ :32 AM 串行框架 – SerCX V2 串行组件 串行控制器驱动程序:管理串行控制器 (UART) 特定于硬件的操作。驱动程序由 SoC 芯片合作伙伴提供。 串行框架扩展:从设备驱动程序提取特定于控制器的 I/O 处理。 由 Microsoft 提供 串行设备驱动程序:驱动程序与 UART 的外设通信,由外设 IHV 或 Microsoft 提供。 串行框架的优势 Windows 8.1 中提供了版本 2.0。简化控制器驱动程序创建、 诊断功能和电源管理 适用于 V1 和 V2 的标准化客户端驱动程序接口 为防止 FIFO 溢出所建议/支持的硬件流控制 设备驱动程序 串行框架扩展 (SerCx2.sys) 串行 (UART) 控制器 驱动程序 物理硬件 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
15
示例: 加速计示例驱动程序的下边缘以及它通过 I2C 和 GPIO 进行 通信的方式
12/5/ :32 AM 示例: 加速计示例驱动程序的下边缘以及它通过 I2C 和 GPIO 进行 通信的方式 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
16
示例:加速计传感器 ADXL345Acc 加速计 成功步骤: 简单的低功耗 3 轴加速计 UMDF V2.0 传感器驱动程序
12/5/ :32 AM 示例:加速计传感器 ADXL345Acc 加速计 简单的低功耗 3 轴加速计 UMDF V2.0 传感器驱动程序 成功步骤: 选择并设置您的开发环境 使驱动程序适应于您的硬件 安装驱动程序(通过即插即用) 使用提供的工具进行验证 UMDF V2 传感器类扩展 ADXL345Acc 驱动程序 (UMDF V2.0) SpbCx.sys GpioClx.sys I2C 控制器 驱动程序 GPIO 控制器 驱动程序 ADXL345Acc 外设 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
17
1. 设置环境 开发平台上的硬件功能 Sharkscove Minnowboard Max Qualcomm 参考板
Raspberry Pi 2 操作系统体系结构 X86 X86、X64 ARM 受支持的操作系统 SKU 桌面版、IOT 移动版、IOT IOT GPIO 功能 - 可用的 GPIO 线数 2 个专用 GPIO、 6 个分配的 V 3 个专用 3.3V 支持 40 个引脚 I2C 功能 (控制器数;最大速度) 5 个共享控制器 100Kbps - V 支持 (Bitbang) SPI 功能 (控制器数;最大速度) 不适用 2 个控制器 3.3V 支持 (低速 bitbang) UART 功能 - 最大波特率 2 个控制器, 1 个标头 3,686,400 3.3V 支持 (1Mbps)
18
2. 使驱动程序适应于硬件 目标 要执行的关键任务 资源列表 IO 目标 设备电源状态 (D0 – D3) IRQL DPC 和工作项
WinHEC 2015 12/5/ :32 AM 2. 使驱动程序适应于硬件 目标 从示例构建驱动程序并使它适应于特定硬件。 要执行的关键任务 设置设备对象/硬件 从驱动程序配置设备 启动设备活动 停止设备活动(待机) 断开硬件资源连接 资源列表 驱动程序应当用于与设备通信的硬件资源列表 IO 目标 用于将 IO 请求发送到另一个驱动程序的 WDF 对象 设备电源状态 (D0 – D3) D0 为供电状态。D1 – D3 为睡眠状态 IRQL DPC 和工作项 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
19
Visual Studio – I2C 加速计 代码示例
20
3. 安装驱动程序 目标 所需步骤 安全启动 测试签名 AutoACPI
WinHEC 2015 12/5/ :32 AM 3. 安装驱动程序 目标 在 ADXL345 加速计传感器上加载驱动程序。 所需步骤 禁用安全启动并打开测试签名(由 WDK 完成) 在 ACPI 中指定硬件资源 在已声明的资源上创建要匹配的 INF 安全启动 利用 UEFI 规范的安全启动功能防止在系统启动过程中加载恶意软件应用程序/操作系统。 测试签名 允许驱动程序开发者加载已经过测试签名的内核模式代码/驱动程序。 AutoACPI Windows 10 中的新增内容,支持开发者使用简单的软件结构更新 ACPI。它构建于 ACPIGen 之上,并减少了开发者进行学习所需的时间。 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
21
3. 安装驱动程序 在 ACPI 中指定硬件资源 Device(SPBA) { Name (_HID, "ADXL0345")
Name(_CRS, ResourceTemplate () { I2CSerialBus(0x53, ControllerInitiated, , AddressingMode7Bit, "\\_SB.I2C3", 0, ResourceConsumer) GpioInt(Edge, ActiveHigh, Exclusive, PullDown, 0, "\\_SB.GPO2") {0x17} }) } 硬件 ID:“ADXL0345”。ACPI.sys 将使用此信息 I2C3、Address 0x53、400kHz GPIO2、#17 上的边缘中断 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
22
3. 安装驱动程序 ACPI 生成框架 (ACPIGenFx)
Win10 中的新增内容 3. 安装驱动程序 ACPI 生成框架 (ACPIGenFx) var platform = Platforms.Createx86Platform( "PWIE", "EDK2", "PWIE", 1, "SSDT"); var sensor = platform.AddGenericDevice( 1); sensor.AddI2CSerialBus( SlaveAddress: 0x53, Mode: SlaveMode.ControllerInitiated, ConnectionSpeed: 400 * 1000, addressmode: AddressMode._7Bit, sensor.AddGPIOInterrupt( Type: InterruptType.Level, ActiveLevel: InterruptActiveLevel.ActiveHigh, Shared: SharingLevel.Exclusive, PinConfiguration: PinConfiguration.Down, DebounceTimeout: 0, PinNumber: 1, platform.WriteAsl(); 第 1 步:从 x86 默认平台开始 第 2 步:添加设备的 HWID 第 3 步:添加 I2C 串行总线资源 在 I2C 控制器 3 上寻址 0x53 400 KHz 时钟 第 4 步:添加 GPIO 中断线 GPIO 控制器 2 上的引脚 1 高电平有效,电平触发中断 为中断线启用下拉电阻器 无消除抖动功能 第 5 步:为 ACPI 表编写源代码 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
23
虽然 ASL 难以调试,但借助 ACPIGenFx,开发者会在运行时遇到更少的 bug。
C# 库,用于为基于 SoC 且少用硬件的平台生成 ACIP 固件表。 优点: 适合于软件开发者使用 – 设备、资源和依赖项均描述为 C# 对象。 Visual Studio 的 Intellisense 技术使编写代码更为容易 框架可识别 Windows 特定要求 通过平台的静态分析,可在构建时即发现错误。 示例和模板可用于快速入门 虽然 ASL 难以调试,但借助 ACPIGenFx,开发者会在运行时遇到更少的 bug。
24
3. 安装驱动程序 在已声明的资源上创建要匹配的 INF
[Version] Signature = "$Windows NT$" Class = Sensor ClassGuid= {5175D334-C B3BA-71FD53C9258D} Provider=%ManufacturerName% CatalogFile=ADXL345Acc.cat DriverVer= [Manufacturer] %ManufacturerName%=Standard,NT$ARCH$ [Standard.NT$ARCH$] %DeviceName%=MyDevice_Install, ACPI\ADXL0345 … [Strings] ManufacturerName="Me" DeviceName="ADXL345Acc Device" 第 1 步:为嵌入式设备设置设备安装类 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
25
3. 安装驱动程序 在已声明的资源上创建要匹配的 INF
[Version] Signature = "$Windows NT$" Class = Sensor ClassGuid= {5175D334-C B3BA-71FD53C9258D} Provider=%ManufacturerName% CatalogFile=ADXL345Acc.cat DriverVer= [Manufacturer] %ManufacturerName%=Standard,NT$ARCH$ [Standard.NT$ARCH$] %DeviceName%=MyDevice_Install, ACPI\ADXL0345 … [Strings] ManufacturerName="Me" DeviceName="ADXL345Acc Device" 第 2 步:设置硬件 ID 必须匹配 ACPI 表项中的值 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
26
3. 安装驱动程序 在已声明的资源上创建要匹配的 INF
[Version] Signature = "$Windows NT$" Class = Sensor ClassGuid= {5175D334-C B3BA-71FD53C9258D} Provider=%ManufacturerName% CatalogFile=ADXL345Acc.cat DriverVer= [Manufacturer] %ManufacturerName%=Standard,NT$ARCH$ [Standard.NT$ARCH$] %DeviceName%=MyDevice_Install, ACPI\ADXL0345 … [Strings] ManufacturerName="Me" DeviceName="ADXL345Acc Device" 第 3 步:设置制造商和设备名称 © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
27
学习内容回顾 到目前为止,我们已成功完成以下操作: 选择并设置开发环境 使驱动程序适应于您的设备 安装驱动程序(通过即插即用)
使用提供的工具进行验证
28
12/5/ :32 AM 避免常见错误的 最佳做法和提示 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
29
入门示例和工具 从相关的 MSDN 示例开始 使用这些测试工具进行验证
12/5/ :32 AM 入门示例和工具 从相关的 MSDN 示例开始 GPIO:SimDevice – 使用 GPIO 中断和 IO 资源的示例驱动程序 SPB: 用于 I2C 和 SPI 的 SpbTestTool 驱动程序和应用; I2C 上的 SpbAccelerometer 示例传感器驱动程序 UART: 用于电脑的 UART 控制器驱动程序; 蓝牙 UART 总线驱动程序示例 使用这些测试工具进行验证 用于 I2C 和 SPI 的 SpbTestTool 驱动程序和应用 – 验证资源是否在 ACPI 中 正确定义 MITT 和 HLK(仅限控制器测试) © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
30
SpbTestTool Windows 示例驱动程序支持以下开发 者方案:
打开 SPB 控制器的句柄,使用 KMDF 驱动程序中的 SPB 接口,并采用 GPIO 被动级别中断。 它实现了一组用于与外围设备通信的命令 来帮助调试。 参考: windowshardware/SpbTestTool- adda6d71#content 提示和技巧 您打算为其加载 SpbTestTool 驱动 程序的设备必须在 ACPI 中定义 (例如 CPI\HWID1234)。 有关完整示例,请 参阅源代码中的 spbtesttool.asl。
31
Windows通用应用和低功耗总线 提供对低级别 I2C、SPI 和 GPIO 设备的Windows 通用应用访问权限,来获取 IOT 方案和诊断功能。 Windows.Devices 命名空间中的 WinRT API 提 供对这些设备到Windows通用应用的方便访问。 首先适用于 Windows“Athens”(IoT) 操作系统 版本,之后也适用于其他版本。
32
WinRT API 详细信息 Windows.Devices.[GPIO|SPI|I2C]
API 遵循现有的“Windows.Devices”API 模式并提供对这些处 于共享或独占访问模式的总线的直接访问权限 可标识常见用例的示例 // Blink the LED 10 times. for (int i = 0; i < 10; ++i) { pin.Write(GpioPinValue.Low); await Task.Delay(200); pin.Write(GpioPinValue.High); }
33
Hardware Lab Kit 的内容 适用于 OEM 的提示和 技巧 设备测试 – IHV 控制器测试 – OEM
面向 SoC 供应商 QA 团队的 HLK 版本。 更简单的用户界面并 进行了优化 MSDN 提供无标头 版本(无用户界面/ 命令行) 更丰富的命令行选项 测试可以单独运行 无需 HLK 服务器 设备测试 – IHV 无需特定于 LPB 的评估 每个设备类都有其自己的要求和 HLK 中的相关评估来执行代码 控制器测试 – OEM 主要面向 SOC 芯片供应商 OEM 可以选择运行测试,但需要打开 底盘系统
34
多接口测试工具 (MITT) I2C SPI GPIO Microsoft 开发的用于验证硬件/软件的 测试工具
支持的总线:I2C、GPIO、UART、SPI 由 Microsoft 提供的固件和软件 为硬件开发者提供用于其他开发的框架 Diligent 和 JJG 技术所提供的测试工具 参考: cn/library/windows/hardware/dn %28v=vs.85%29.aspx Win10 中的新增内容 I2C SPI
35
疑难解答 INF 错误 主题:驱动程序未在硬件上正确加载 设计
有关设备安装的 SetupAPI 日志信息。 使用它对设备安装进行验证或疑难解答 文件名:SetupAPI.dev.log (在 %SystemRoot%\inf 中) 参考: zh-cn/library/windows/ hardware/ff547657(v=vs.85).aspx
36
疑难解答 I2C 可删除设备 ACPI 表必须标识未来可能“附加”的设备
设备在启动时出现?设置 _STA == 0x0F;否则设置 _STA == 0x00 设备在启动后删除/连接:平台触发 Platform 事件(GPIO 中断或 GPE 事件)。处理程序 (_Lxx/_Exx/_EVT) 必须: 为每个到达/消失的设备相应地更改 _STA 值。 使用 Notify() 运算符向操作系统发送 BUS CHECK 事件已发生的信号。将通知发送给表中 所有已更改设备的最低父级。 ACPI 将重新枚举已通知设备(例如 ALS)下的设备,相应地删除或添加 Windows 设备节点 Windows 将加载驱动程序或将设备添加 (ADD_DEVICE) 到已加载的驱动程序
37
疑难解答 WPP 跟踪 主题:如何调试驱动程序中的 加载和运行时错误 设计
跟踪 GUID (在 SensorsTrace.h 中) 传感器设备唯一 GUID (在 device.cpp 中) Traceview:配置和控制跟踪 会话并显示实时跟踪会话中的 格式化跟踪消息
38
代码 10,为什么? 演示: 调试 SPB 外设驱动程序中的问题
39
演示脚本 在 VS14 中加载加速计驱动程序 显示 .h 文件中的设备寄存器并在设备初始化期间发送自定义 I2C 命令 显示如何添加 IHV 端错误 ETW 日志记录 引发编程错误 在 VS 中加载转储(预记录) 显示相关跟踪
40
常见错误和最佳做法 HID I2C 具体错误: HID I2C 类驱动程序代码 10 – HID 或报告描述符中的错误
HID I2C 类驱动程序代码 28 – 设备无法执行 Set_power HID I2C 命令 在 HIDI2C 中启用 ETW/WPP 跟踪来调试具体问题 LPB 驱动程序最佳做法: 首先在开发板上测试外设 LPB 外设驱动程序应从 UMDF 开始(确保主版本为 2) 尝试将专用 GPIO 线用于外设 重置。这有助于“硬重置”阻 塞设备
41
行动号召 立即开始编写 LPB 外设驱动程序吧
参与 WinHEC 的传感器讨论和实验,将今天的学习内容付诸实践 参观传感器展位,查看我们的自定义传感器演示 查看 MSDN 上的示例和文档。向我们发送反馈/问题 运行 HLK 和验证工具
42
12/5/ :32 AM 详细信息 MSDN 参考 GPIO - SPB - UART - Spb 手册 - MITT - WPP 跟踪 - 其他支持方式 关于 MITT 或 HLK © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
43
实验 2:Sharks Cove 上的传感器驱动程序
3 号大宴会厅 8 号楼 12:30 硬件生命周期简介 13:40 Windows 驱动程序开发工具 15:00 Windows 驱动程序开发简介 16:10 通过 WDF 编写驱动程序 <第二天> 10:30 实验 1:驱动程序开发入门 11:30 午餐 访问 GPIO、I2C 和 UART 设备 实验 3:驱动程序测试和调试 驱动程序测试和调试 实验 2:Sharks Cove 上的传感器驱动程序 通过 Hardware Lab Kit 进行测试 驱动程序签名、分发、维护简介 实验 4:通过 Hardware Lab Kit 进行测试 17:20 <第三天> 09:00 10:10 WinHEC 2015 12/5/ :32 AM © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
44
Tech Ready 15 12/5/2018 请对本会议进行评价 您的反馈对我们至关重要! Please Complete an Evaluation. Your input is important! 请通过以下链接访问评价表: Access Evaluation Forms: 加入Windows硬件社区 扫一扫,通过微信关注WinHEC © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
45
关于预发布产品的某些信息可能在其商业发布之前被实质性地修改。对于此处提供的信息,微软不作出明示或默示的保证。
12/5/ :32 AM (c) 微软公司。版权所有。本文件按“现状”提供。本文件中呈现的信息和视图(包括URL和其他对互联网网站的引述)可能在未经通知的情况下变更。您承担对其进行使用的风险。本文件不向您提供对于任何微软产品之中的任何知识产权的任何法律权利。您可以复制并将本文件用于内部参考用途。 关于预发布产品的某些信息可能在其商业发布之前被实质性地修改。对于此处提供的信息,微软不作出明示或默示的保证。 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
46
附录
47
HID I2C 的 3 个最常见错误: 驱动程序未加载
问题:HIDI2C 驱动程序未在设备(I2C 外设)的设备管理器中加载,但 I2C 控制器驱动程序已加载 原因:主机或设备 ASL 代码无效。ASL 中的错误 表现为: HIDI2C 驱动程序将不会加载(INF 匹配失败 - 请参阅 setupapi.dev.log) HIDI2C 驱动程序加载时将出现错误代码 10。(稍后进行详细 讨论) OEM 必须确保突出显示的项是有效的 _HID(特定于供应商)和 _CID(固定为“PNP0C50”) I2C 控制器和设备特性是准确的 为该特定设备正确标识 HID 描述符地址 请特别注意以下事项 GPIO 中断正确标识并标记为 Exclusive、Level、ActiveLow 有关更多详情,请参阅 HID over I2C 规范中的第 13 节(示例部分)
48
HID I2C 的 3 个最常见错误: 驱动程序出现“代码 10”
原因:如果设备具有无效的 HID 描述符,则 HIDI2C 驱动程序加载时将出现错误代码 10。 主机是否从设备中检索到正确的 HID 描述符。如果 不是,请重点执行以下操作 验证 ASL 中的 HID 描述符地址项。 观察到设备的 I2C 通信来查看主机是否请求正确。 主机是否从设备中检索到对重置 (HIR) 的正确响应。 如果不是,请重点执行以下操作 验证 HID 描述符的字节偏移 16 和 18 中的项 验证设备是否正确响应 HIR 请求 (声明的 GPIO 中断 + 输入寄存器中的 0x00 0x00) <接下页> 字节 偏移 字段 值 (HEX) 备注 wHIDDescLength 00 18 已修复 2 bcdVersion 01 00 4 wReportDescLength TBD 设备 IHV 必须正确设置 6 wReportDescRegister 8 wInputRegister 10 wMaxInputLength 12 wOutputRegister 14 wMaxOutputLength 16 wCommandRegister 18 wDataRegister 20 RESERVED
49
HID I2C 的 3 个最常见错误: 驱动程序出现“代码 10”
SAMPLE ACCELEROMETER REPORT DESCRIPTOR ====================================== USAGE_PAGE (Sensors) USAGE (Motion:Accelerometer 3D) COLLECTION (Physical) A1 00 //<FEATURES> USAGE (Property:Connection Type) 0A 09 03 LOGICAL_MINIMUM (0) LOGICAL_MAXIMUM (255) 26 FF 00 REPORT_SIZE (16) REPORT_COUNT (1) FEATURE (Data,Var,Abs) B1 02 … //Shake Event Notification USAGE (Data:Motion Intensity) 0A 51 04 LOGICAL_MAXIMUM (64) REPORT_SIZE (8) INPUT (Data,Var,Abs) //</INPUT> END_COLLECTION C0 主机是否从设备中检索到正确的报告描述符并且 HIDPARSE 是否成功分析报告描述符。如果不是,请重点执行以下操作 如果未从设备中检索到报告描述符 确保枚举序列已在报告描述符检索之前完成所有步骤。 确保 HID 描述符中的字节偏移 4 和 6 是有效且正确的(尤其是长度)。 如果从设备中检索到报告描述符但仍然失败 验证 wReportDescLength 字段确保检索了整个报告描述符。 验证是否根据设备类驱动程序规范正确设置了 HID 报告格式。对 USB 等另一种总线进行测试来验证一致性。
50
HID I2C 的 3 个最常见错误 无输入报告 问题:HIDI2C 驱动程序在设备具有数据时未收到任何输入报告 原因:请按顺序检查以下内容
GPIO 线未由设备声明或未由主机驱动程序确认 输入报告格式错误(不符合报告描述符)并由操作系统的 HID 分析器丢弃 输入报告不符合该 HID 设备类的类驱动程序要求,因此未被利用
51
请对本会议进行评价 您的反馈对我们至关重要!
Tech Ready 15 12/5/2018 请对本会议进行评价 您的反馈对我们至关重要! 请通过以下链接访问评价表: © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
52
关于预发布产品的某些信息可能在其商业发布之前被实质性地修改。对于此处提供的信息,微软不作出明示或默示的保证。
12/5/ :32 AM (c) 微软公司。版权所有。本文件按“现状”提供。本文件中呈现的信息和视图(包括URL和其他对互联网网站的引述)可能在未经通知的情况下变更。您承担对其进行使用的风险。本文件不向您提供对于任何微软产品之中的任何知识产权的任何法律权利。您可以复制并将本文件用于内部参考用途。 关于预发布产品的某些信息可能在其商业发布之前被实质性地修改。对于此处提供的信息,微软不作出明示或默示的保证。 © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Similar presentations