20楼#
发布于:2004-07-08 20:34
写个驱动和Dispaly通信
|
|
|
21楼#
发布于:2004-07-09 14:42
写一个普通的WDM驱动。在驱动中发IRP_MN_QUERY_INTERFACE请求给 显卡的miniport driver,获取i2c接口函数。因为我没有具体试过,所以这个驱动和显卡驱动之间是的关系以及怎样将它挂到显卡驱动上我也不太清楚。还是哪句话看文档和例子。实在不行可以写信给raul.wang,我曾和他讨论过这个问题,他应该搞过类似的东西。
|
|
|
22楼#
发布于:2004-07-10 13:09
测试可以的
|
|
|
23楼#
发布于:2004-08-21 15:35
显卡的的HwVidQueryInterface只响应自定义的GUID.显卡driver通过这个来确定是不是自己support的WDM。
|
|
24楼#
发布于:2004-08-21 16:48
HwVidQueryInterface响应标准的GUID和自定义的GUID。在DDK的头文件i2cgpio.h中含有I2C的GUID定义:GUID_I2C_INTERFACE。
[编辑 - 8/21/04 by leerom] |
|
|
25楼#
发布于:2004-08-22 15:51
哦,这么说显卡上的IC2也可以给显卡厂商以外的人用。
|
|
26楼#
发布于:2004-08-30 21:58
//写一个普通的WDM驱动。在驱动中发IRP_MN_QUERY_INTERFACE请求
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 给 显卡的miniport driver,获取i2c接口函数。因为我没有具体试 ~~~~~~~~~~~~~~~~~~~~~~~~~ 过,所以这个驱动和显卡驱动之间是的关系以及怎样将它挂到显卡驱动上我也不太清楚。还是哪句话看文档和例子。实在不行可以写信给raul.wang,我曾和他讨论过这个问题,他应该搞过类似的东西。 在普通得wdm驱动向显卡得miniport driver发送发Irp,能在详细 说一下吗? 我是个新手,恰好也在做同样功能得驱动程序。 有几个问题搞不清楚: 1。ddk中说显卡驱动包括两个部分 display driver 和 miniport driver,miniport上面有port driver 从ddk得结构图上看这两部分由操作系统管理。 我研究 了ati采集卡中获取i2c接口得代码,发现上面所说得irp是发给 一个Device。 我觉着这个Device 应该是port driver。问题是 我自己写得普通得WDM驱动怎么链接到这个设备栈上呢? 2。我已经写了一个Unknow类型得驱动,用IOCTL得OPEN去打开I2C接口,没有成功。我想问,是不是因为Unkonw这个类型不对,导致操作系统传来得pdo也不对。换成其他类型得话,操作系统传来得pdo应该 也不一样吧 |
|
27楼#
发布于:2004-08-30 22:37
参考ATI采集驱动的inf文件,它似乎将采集设备作为显卡的子设备来安装。可能这和设备的挂接有些关系,我没有仔细研究,感觉它似乎可以解决这个问题。希望你解决后把经验和大家分享。
|
|
|
28楼#
发布于:2004-08-31 09:30
请教如果我把我自己写的驱动的类型从Unknown改为Media,打个比方
那么,操作系统在AddDevice 时传进来的pdo就不同, 我再调用IoAttachDeviceToDeviceStack时挂接的设备栈也就不一样 pdo只是代表一个总线类型吗? pdo上面可能已经有设备栈了, IoAttachDeviceToDeviceStack只是挂接到最顶层而已 |
|
29楼#
发布于:2004-08-31 10:09
看看这份文档 http://www.microsoft.com/whdc/archive/i2c.mspx
它上面说应该在显卡的INF文件中列出要使用显卡I2C总线的设备,由PnP管理器来加载相应的驱动程序。应该不是用IOCTL来直接打开显卡。 |
|
|
30楼#
发布于:2004-08-31 14:00
是这样ati采集卡的例子中是写了一个Kernel Streaming Driver
我理解它里面用的I2C的原因是想通过I2C去控制显卡上的IC芯片。 可以理解为在显卡上集成了收音机,电视接收等芯片。这些芯片需要 用I2C去控制。 例子中涉及获取I2C接口的地方是I2CScript类,它只要求在Kernel Streaming Driver中给它一个PhysicalDeviceObject 例如在atixbar中 有下面一段代码: pCScript = ( CI2CScript *)new(( PVOID)&pPrivateData->CScript) \ CI2CScript( pConfigInfo->PhysicalDeviceObject, &nErrorCode); 这个pConfigInfo 是从psrb中获得的,PhysicalDeviceObject在 ddk中的描述是Points to the device object for the driver at the top of the driver stack when the class driver attaches to the driver stack. Drivers use this member when calling IoCallDriver to communicate with the driver stack. 指的是这个KS驱动加载到设备堆栈时的栈顶指针 这个设备栈的顶我觉得可能是控制显卡的操作系统提供的port driver 如果我们能打开这个系统提供的port driver,就有可能解决这个问题。 我的思路是这样,写一个WDM框架,提供四个命令接口 IOCTL_OPEN IOCTL_CLOSE IOCTL_I2CREAD IOCTL_I2CWRITE |
|
31楼#
发布于:2004-09-06 14:48
在Inf文件中list child device on I2C bus应该是连接方法之一。但是在VGA miniport driver的HwGetVideoChildDescriptor中enumerate I2C上的device应该更合理。
“Video cards that use the I2C bus under Windows MUST now use an INF file to list the devices on the bus.” 这句话是不是有点问题? |
|
32楼#
发布于:2004-10-30 21:46
大家好!我是写显示器内部程序的,我也再想解决这个问题的方法,应该是可以解决的。
为什么不是写一个MINIVDD DRIVER,而是写WDM DRIVER? 如果是WDM,怎么传递参数?是存在EXTENSION 里面吗?然后用IODEVICECONTROL 调用? |
|
33楼#
发布于:2004-11-05 15:47
以后的显示器差不多都要实现显卡和显示器的通讯,亦即DDC/CI,CEC功能。
DDC/CI, 显示器作为 I2C slave,接受显卡传送的命令处理,如亮度调节等 CEC,真正的双向通讯,显示器和显卡都可以作为I2C mastaer和slave。 |
|
34楼#
发布于:2005-06-15 16:01
在window XP的 DDK 的 video / perm3下有个I2C.h文件
里面定义了: VP_STATUS I2CBusAccess( PVOID DeviceObject, PI2CControl I2CControl, PVIDEO_I2C_CONTROL I2CCallbacks ) 其实就可以实现对I2C.bus的读写 可问题是如果另外再写一个WMD driver,如何得到正确的 DeviceObject参数呢,显然I2CControl是由我们自己填写的,I2CCallbacks设为NULL好了。怎么把自己写的driver和video miniport driver 连起来呢? 这样的思路又走得通吗??? |
|
35楼#
发布于:2007-03-17 11:29
肯定是可以的,最近简单研究了下,已经可以打开,关闭I2C了,数据发送还有写问题,有时间用示波器看看。
|
|
|
36楼#
发布于:2007-03-20 11:34
测试读写EDID都可以,并且测试读电视机的EDI等也没有问题;应用到其它I2C设备如HDMI,单片机等都没有问题,有需要这方面技术需求的可和我联系。
|
|
|
37楼#
发布于:2007-11-24 09:23
可否讲讲如何读写EDID
|
|
38楼#
发布于:2007-12-24 09:07
学习!
|
|
39楼#
发布于:2007-12-24 16:21
引用第37楼KMK于2007-11-24 09:23发表的 : 写个驱动和Dispaly通信就可以了, 具体参考EDID和NVM的协议 |
|
|