Driver Module Framework

驱动程序模块框架
授权协议 MIT
开发语言 C/C++
所属分类 其他开源、 硬件驱动/工具
软件类型 开源软件
地区 不详
投 递 者 容寒
操作系统 Windows
开源组织 微软
适用人群 未知
 软件概览

为了方便开发人员为 Windows 编写驱动程序,微软发布了一个开源框架驱动程序模块框架(DMF)。这个新框架允许开发者编写简单和结构化的 Windows 驱动程序框架(WDF)、驱动程序并在驱动程序之间共享代码。

在为 Surface 设备驱动程序时,Microsoft Devices 团队开发了此框架供内部使用。微软现在将其作为开源发布,以帮助其他 OEM 以最高的效率和可维护性,开发和维护高质量的驱动程序。

微软解释了传统 WDF 与这款新的基于 DMF 的 WDF 驱动程序之间的一些主要差异。

这些差异在于:设备上下文(以绿色显示)独立存在于每个模块和客户端驱动程序特定的代码中。每个较小的设备上下文仅包含该模块所需的元素。没有模块可以访问另一个模块的设备上下文;WDF 回调(以红色显示)现在在每个模块和客户端特定代码中独立存在。 WDF 调用客户端驱动程序。DMF 拦截调用并将其调度到实例化模块树中的每个模块;每个模块按其认为合适的方式处理每个回调。最后,DMF 将回调调度到客户端驱动程序的回调。

最后,请注意箭头。箭头专门显示模块和客户端特定代码之间的流程。在此示例中,特定于客户端的代码只能与三个模块通信:ACPI,Button和 Stream。它无法与 GPIO,FIFO,列表或线程通信。 ACPI 无法与 FIFO 等进行通信。即使不查看源代码,我们也很清楚数据如何在此驱动程序中流动。

  • 在Linux设备驱动开发使用platform平台驱动模型过程中,在定义且初始化好platform_driver结构体变量以后,我们需要向 Linux 内核注册一个 platform 驱动。下面介绍两种方法。 方法一: /** * 在驱动入口函数里面调用platform_driver_register函数,platform_driver_register函数 * 原型如下所示: */ int pla

  • 1、module_platform_driver:这是一个宏,位于kernel根目录下include/linux/platform_device.h,其展开如下:      #define module_platform_driver(__platform_driver) \     module_driver(__platform_driver, platform_driver_register

  •         在linux内核源码中,我们经常看到module_platform_driver 与 module_init这两个宏定义,有时候在这个驱动中用module_platform_driver,有时候用module_init,那这两个宏定义之间有什么差异吗?还是说可以随便用呢?这就需要我们旭跟踪代码,来看看这两个宏定义到底什么东西?        首先,介绍下module_init,mo

  •         在Linux设备驱动开发使用platform平台驱动模型过程中,在定义且初始化好platform_driver结构体变量以后,我们需要向 Linux 内核注册一个platform 驱动,Linux kernel中有两种方法,源码:include/linux/platform_device.h 方式一: /* * use a macro to avoid include chain

  • 参考源码:x3399_nougat_industry 驱动路径:kernel\drivers\leds\leds-gpio.c ​ static struct platform_driver gpio_led_driver = { .probe = gpio_led_probe, .remove = gpio_led_remove, .shutdown = gpio_led_shutdo

  • 函数 module_platform_driver(xxx); 该函数定义在include/linux/platform_device.h文件中:  #define module_platform_driver(__platform_driver) \          module_driver(__platform_driver

  • 1、module_platform_driver:这是一个宏,位于kernel根目录下include/linux/platform_device.h,其展开如下:      #define module_platform_driver(__platform_driver) \     module_driver(__platform_driver, platform_driver_register

  • 该函数实际是一个宏,它在include/linux/platform_device.h中定义如下: #define module_platform_driver(__platform_driver) \ module_driver(__platform_driver, platform_driver_register, \ platform_driver_unregister) 其中的mo

  • #include <linux/platform_device.h> static struct platform_driver flexcan_driver = { .driver = { .name = DRV_NAME, .pm = &flexcan_pm_ops, .of_match_table = flexcan_of_match, }, .probe = flexc

  • 该宏是用来定义驱动的入口函数 使用方法: include <linux/platform_device.h> static struct platform_driver power_supply_driver ={ .driver = { .name = "power-supply", .owner = THIS_MODULE, .

  • 作者 : YiLi Xie    yili.xie@gmail.com 日期 : 2010-1-25 欢迎转载,请注明出处     Platform Device and Drivers 从<linux/platform_device.h>我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚

  • 转自:http://hi.baidu.com/yopklnqbrsampsr/item/0de01ac7ea05960fac092fcb   这篇文章是笔者在学习Linux环境下模块和驱动程序编程时的个人总结,其中很多内容来自于参考文献。当前,这篇东西只是前三周的小结,后续进行一些练习后将进行更新,^_^。如果文中有错误之处,敬请指正,谢谢。jixu_yang@yahoo.com.cn 1 pro

  • 1. MODULE_DEVICE_TABLE (usb, skel_table); 该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pcim

  • #define platform_driver_register(drv) \     __platform_driver_register(drv, THIS_MODULE) int __platform_driver_register(struct platform_driver *drv,                 struct module *owner) {     drv->dr

  • /**  * module_pci_driver() - Helper macro for registering a PCI driver  * @__pci_driver: pci_driver struct  *  * Helper macro for PCI drivers which do not do anything special in module  * init/exit. T

  • 转载地址:http://blog.csdn.net/ufo714/article/details/8595021    设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定。 以一个USB设备为例,有两种情形: (1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱动程序是否与其相匹配,如果匹配就将两者邦定。这就是platform_driver

 相关资料
  • 错误[org.jboss.as.controller.management-Operation](ServerService线程池--31)JBAS014613:Operation(“add”)失败-地址:([(“subsystem”=>“Datasources”),(“jdbc-driver”=>“PostgresJdbcDriver”)])-失败描述:“JBAS010441:无法加载驱动程序[

  • fmu 源代码: drivers/px4fmu 说明 该模块负责驱动输出以及读取输入引脚。对于没有单独IO芯片的飞控板(例如Pixracer),它使用主通道。在具有IO芯片(例如Pixhawk)的飞控板上,它使用辅助通道,px4io驱动程序使用主通道。 它通过监听actuator_controls主题,实现混控以及PWM输出。此外,它还进行RC输入解析并自动选择解析方法。支持的方法有: PPM S

  • 我想配置数据源为db2在我的野蝇服务器(Wildfly.8.0.0-最终和8.1.0以及。),并运行到一些问题,这样做。 我的研究告诉我这是一个两步的过程 将驱动程序作为模块安装在%JBOSS_HOME%/modules/com/ibm/main目录中 将数据源子系统配置为在连接设置中包含此模块作为驱动程序 到目前为止,我已经在以下结构下安装了模块,module.xml如下:

  • 本文向大家介绍什么是驱动模块?相关面试题,主要包含被问及什么是驱动模块?时的应答技巧和注意事项,需要的朋友参考一下 驱动模块大多数称为是“主程序”,它接受测试数据并将数据传递到被测试模块,单元测试一个函数单元时,被测单元本身是不能独立运行的,需要为其传送数据,为此写驱动。 驱动模块主要完成以下内容: 1.接受测试输入 2.对输入进行判断 3.将输入传递给被测试单元,驱动被测单元执行 4.接受被测单

  • 概述 双直流电机驱动模块通过板载RJ25端口,可以在恒定电流下驱动两个直流电机。该电机驱动模块所用 IC 是一种高效的、低散热的 MOSFET,并且含有过流保护功能。本模块接口是红色色标,代表输入电压值是6到12V,需要连接到主板上带有红色标识接口。 技术规格 工作电压:6-12V DC 单通道持续输出电流:1 A 单通道峰值输出电流:2 A 电机通道:2 电机类型: 直流电机 模块尺寸:56 x

  • 任何人都可以帮助我将MongoDB驱动程序配置为JBoss中连接池的核心模块。请参阅我在阅读几篇文章后尝试的以下步骤。 EAP_HOME/modules/com/mongodb/main/ 创建了一个目录,并复制了 mongodb-driver-3.4.0-rc1.jar(rc1 版本,因为稳定版 3.3.0 不包含 MongoClientFactory.class)并创建了模块.xml文件,如下

  • 概 述 步进电机驱动模块是用来精确驱动双极步进电机的。当有脉冲输入,步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。它可以用在3D打印、数控、Makeblock音乐机器人以及精确动作控制等方面。本模块贴有红色色标,我们需要使用RJ25连接线连接到主控板上带有红色标识的接口。 技术规格` 驱动电压: 6V-12V DC 最大电流: 1.35A 尺寸: 51 x 24 x 18mm

  • 概述 支持双通道直流编码器电机,编码电机包括了MCU和电机驱动芯片。MCU 内置 PID 算法,实现对电机速度和方向的精确控制。电机的 PID 参数可以通过 Makeblock 官方网站上提供的软件进行控制,以便在不同环境下都能达到最佳工作状态。该模块旨在轻松,快速,准确地控制电机。 如果你想更好地使用这个模块,例如自平衡车。您需要调整PID和一些参数,这就要求用户有相关的基础。该模块还可以应用于