Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: zyq8709   发起时间: 2011-08-28 11:58 上午   回复: 2

Print Search
帖子排序:    
   2011-08-28, 11:58 上午
zyq8709 离线,最后访问时间: 2019/8/6 21:05:02 zyq8709

发帖数前10位
注册: 2011-04-19
发 贴: 74
类似pci桥与usb控制器连接的驱动实现的问题?
Reply Quote
类似pci桥与usb控制器的连接有一些疑问:
1、如果给usb设备发送数据,应首先发到pci桥再通过pci总线发到usb控制器然后再通过usb总线发给usb设备。这里有个问题,在驱动程序中是将irp一直发到pci总线驱动的fdo上然后在让pci驱动传送,还是让irp发到usb控制器的fdo,然后通过usb控制器的fdo获得的pci配置空间信息直接IO到usb控制器上而不再让pci桥驱动处理?
2、还有一点就是,我在用devicetree观察PnP设备是发现,一般设备的pdo都是由堆栈下层设备的fdo创建,而且与fdo为同一个驱动对象,属于NextDevice关系,而非AttachedDevice关系。那这里就有一个问题了:如图的示例
USB设备 FDO
     |_____
           USB设备 PDO
               |____
                    USB Host FDO
                           |___
                               USB Host PDO
                                     |____
                                          PCI Bridge FDO
                                              |___
                                                  PCI Bridge PDO
此时如果设备发送一个IRP则向下传,但是USB设备的PDO StackSize为1且其无下层设备,那么最多IRP只可以传到此层,则USB设备的IRP就得不到有关的PCI信息了,无论是IRP_MN_START_DEVICE得不到有关的资源信息,还是IRP_MJ_WRITE也传不下去导致读写无法完成。例如USB设备插入运行产生IRP_MN_START_DEVICE,向下传送,到USB设备PDO,相当于USB Host FDO一层,本来应该再向下传获得PCI配置空间,然后让上层的USB设备得知,这样发送数据的话就会首先发送到相应的PCI总线位置上,然后再一步步转送。然而IRP_MN_START_DEVICE传不下去,USB设备也就得不到这些信息,那么也就不能传送数据了。但是事实上是解决了,请问各位老师windows到底是如何处理的?
多谢了!
IP 地址: 已记录   报告
   2011-09-07, 22:32 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 类似pci桥与usb控制器连接的驱动实现的问题?
Reply Quote

IRP的处理原则是一旦有驱动报告完成此IRP,那么便不再继续向下传递了。具体一个IRP的处理过程首先和这个IRP的种类有关系,当然也与每个驱动的内部代码的动态逻辑相关,要具体对待了

建议用内核调试实际看一下,!drvobj xxx 7 列出驱动的回调函数,然后对感兴趣的设置断点...


IP 地址: 已记录   报告
   2011-09-08, 08:50 上午
zyq8709 离线,最后访问时间: 2019/8/6 21:05:02 zyq8709

发帖数前10位
注册: 2011-04-19
发 贴: 74
Re: 类似pci桥与usb控制器连接的驱动实现的问题?
Reply Quote
多谢张老师的解答,我去做一下。
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: 类似pci桥与usb控制器连接的驱动实现的问题?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.