Windows CE 5.0:驱动程序---可插拔的编解码器要求

转载 2007年09月14日 17:35:00

Windows CE 5.0:驱动程序---可插拔的编解码器要求

加载设备驱动程序

 

发布日期: 11/8/2004 | 更新日期: 11/8/2004

OEMInit 执行时,应当启动以太网调试、串行调试或其他任何调试方法。下列位置存储了这些调试方法的资源信息:

启动加载程序中的启动参数。启动参数提供了以特定方式设置硬件的资源信息。

例如,以太网调试适配器的中断请求 (IRQ) 可以作为启动参数进行传递。

OAL 中的硬编码资源信息。

资源可由 OAL 发现。

另外,注册表可能包含该资源信息的副本。如果调试资源保持不变并且事先已知,则请在注册表中存储该资源信息的副本。这使设备管理器可以加载、执行然后启动 I/O 资源管理器,而后者会从注册表中读取这些可用资源。

OAL 可能需要配置和枚举总线(例如 PCI 总线)以操作用于调试服务的设备。例如,需要对 PCI 总线上用于以太网调试服务的以太网适配器的资源和中间桥进行配置,以使其正常工作。可以忽略其他设备,因为 PCI 总线驱动程序执行配置和枚举。

资源信息配置调试设备并初始化它们的关联服务。OAL 负责将该资源信息放在注册表项中并使其可供驱动程序访问。OAL 使用注册表 Helper 函数PCI_REG_INFO 结构(定义在 PCIReg.h 中)中填写设备的信息。然后,OS 用 IOCTL_HAL_INITREGISTRY 调用 KernelIoControl,以使要调用的 Helper 函数 PCIReg 填充注册表。如果调试资源在启动时可以选择,或者如果它们是通过总线枚举发现的,或者如果这两者都成立,则该方法是首选方法。

设备管理器从 HKEY_LOCAL_MACHINE/RootKey 中加载总线枚举器,其中 RootKey 是在 HKEY_LOCAL_MACHINE/Drivers key 下定义的值。如果 RootKey 值未定义,则默认为 Drivers。当前,Common.reg 将 RootKey 设置为等于 Drivers/BuiltIn。这意味着设备管理器在 HKEY_LOCAL_MACHINE/Drivers/BuiltIn 下寻找 Dll 值以加载总线枚举器。总线枚举器 BusEnum.dll 初始化相应的过程,以便在注册表中扫描要为 RootKey 的子项加载的其他总线和设备。

某些 RootKey 子项描述内置的或可能固定的 ISA 总线。所加载的 DLL 可能是 BusEnum.dll 或您选择的其他任何总线驱动程序。

RootKey 子项之一可能是 PCI。通常,列在 PCI 项下的 DLL 是 PCI 总线驱动程序(它由 BusEnum.dll 加载)。PCI 总线驱动程序的注册表条目包含 PCI 总线可用的资源。通常, HKEY_LOCAL_MACHINE/RootKey/PCI/Order 值被设置以便 PCI 总线驱动程序最后加载,这会使所有固定资源在 PCI 设备的灵活资源被配置之前得以分配。驱动程序注册表条目列在 PCI 项下,该项表示驻留在 PCI 总线上的设备。

下表显示了 PCI 总线驱动程序通过关联的物理设备使用或生成的值。

子项 类型 说明

MemBase

DWORD MULTI_SZ

内存映射 I/O 的基本地址。

MemLen

DWORD MULTI_SZ

相应于 Membase 的内存映射范围的长度。

IoBase

DWORD MULTI_SZ

端口映射 I/O 的基本地址。

IoLen

DWORD MULTI_SZ

相应于 IoBase 的端口映射范围的长度。

InterfaceType

DWORD MULTI_SZ

硬件接口类型。有关详细信息,请参阅 INTERFACE_TYPE

Irq

DWORD MULTI_SZ

可选。逻辑 IRQ 号。

SysIntr

DWORD MULTI_SZ

相应于 IRQ 的系统中断号。

SysIntr 值是由 OAL 指定的 Irq 的映射。某些总线驱动程序(例如,PCI 总线驱动程序)生成 IrqSysIntr 这两个值并将它们写入注册表。如果 BusEnum.dll 枚举注册表项,则需要在适当的注册表文件中设置 SysIntr 值。

某些总线驱动程序(例如,PCI 总线驱动程序)可能需要其他值。例如,PCI 总线驱动程序必须区分相同设备的实例。

下表显示了这些其他标识值。

子项 类型 说明

BusNumber

DWORD

设备的 PCI 总线号。

DeviceNumber

DWORD

总线上的设备的编号。

FunctionNumber

DWORD

标识该设备上实现的八个可能函数中的一个。

在枚举注册表之后,总线枚举器会加载所有内置设备的驱动程序和它在系统中识别的所有总线驱动程序。总线驱动程序随后会负责加载它们的总线上的设备的驱动程序。例如,PCMCIA 主机控制器驱动程序加载所有 PC 卡客户端设备的驱动程序。

设备特有注册表项驻留在适当的总线驱动程序注册表项中,而不是驻留在设备管理器中。总线驱动程序应当加载它们的客户端驱动程序,而您应当相应地更新总线驱动程序注册表条目。

另请参阅

ActivateDeviceEx | Bus Enumerator | PCI Bus Driver

 

相关文章推荐

如何在 Windows CE 5.0 中开发和测试设备驱动程序

发布日期 : 2005-3-31 | 更新日期 : 2005-3-31 Mike Hall Microsoft 适用于: Microsoft Windows CE version 5.0 摘...

Windows CE操作系统的触摸屏驱动程序模型

欢迎加入Wince技术讨论群QQ#326444254 本文介绍了Windows CE操作系统的触摸屏驱动程序模型,详细阐述嵌入式系统中电阻式触摸屏的Windows CE驱动程序的设计和实现方法。 ...

windows CE下的USB设备驱动程序分析 .

随着USB设备的不断增加,我们这些开发人员也就多了对USB设备进行驱动程序开发的工作。但是对于很多初学者来说,存在以下三个困难:      一是对WinCE的驱动程序结构了解得太少,没办法得心应手的...

Windows CE下驱动程序开发基础

研究的越多就越感觉自己懂的太少,其实在驱动开发方面我还是个菜鸟,我是想再次抛砖引玉,让做驱动有N年经验的人奉献一点出来,让大家减少一些研究驱动源码而又缺少注释所带来的痛苦。   我想即使读者看过微软...

Windows CE驱动程序分类

Windows CE嵌入式开发入门--基于Xscale架构 傅曦,陈黎等 人民邮电出版社   第九章  Windows CE BSP及驱动程序结构分析 9.1 Windows CE驱动程序结构...

如何开发Windows CE驱动程序

【IT168 专稿】本文将为读者详细介绍驱动程序的实现方法。我们首先介绍驱动程序的任务,并继续探讨缓冲区的处理、内存地址重建及调试域等。   1.驱动程序的任务   实际上,驱动程序的实现方法有多...

使用CETK测试驱动程序 (windows Embedded CE Test KIT)

使用CETK测试驱动程序             CETK 是微软提供的用于测试基于其 WINDOWS CE 平台开发的驱动程序的测试工具,对于开发稳定可靠的驱动程序很有帮助,所以现在很多大公...

Windows CE下驱动程序开发基础

我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单...

Linux设备驱动程序学习(15)-Linux设备模型(热插拔、mdev 与 firmware)

热插拔 有 2 个不同角度来看待热插拔:    从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。    从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、...

Linux设备驱动程序学习(15)-Linux设备模型(热插拔、mdev 与 firmware)

热插拔有 2 个不同角度来看待热插拔:   从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。   从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev 和...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)