xiaohaomei
驱动牛犊
驱动牛犊
  • 注册日期2004-10-09
  • 最后登录2005-08-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1412回复:6

为什么这个pci 设备的端口写操作失败?

楼主#
更多 发布于:2004-10-09 21:20
我有一网卡驱动模块加载后,设备并没有向预期的那样正常工作,后来跟踪调试,发现对该pci设备的端口进行写入控制信息操作时,写入操作并没有生效,端口的值始终为初始化时的零值。而且
源码中pci_enable_device()函数是成功返回的。

不知道有什么原因会导致对设备端口的写操作失败,请各路高手拔刀相助,在此先谢谢各位啦!!!
lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-13 09:59
你获得PCI端口范围之后,需要向系统注册该端口范围,并将其映射到虚拟地址上去!!!才能正确的访问!!!!
xiaohaomei
驱动牛犊
驱动牛犊
  • 注册日期2004-10-09
  • 最后登录2005-08-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-13 10:13
已经向系统注册该端口范围,并将其映射到虚拟地址上去了,而且这些步骤都是正确的。
lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-13 20:32
我觉得操作系统不太会出现异常现象。
如果操作端口的硬件过程都是正确的,很有可能是由于你的硬件设备本身比较特殊造成的。例如,我曾经设计的PowerPC8265的PCI卡,在访问寄存器时,读操作时地址应该右移2位,写操作时地址不变;还有可能是因为有些寄存器的读写有顺序要求!!!!
xiaohaomei
驱动牛犊
驱动牛犊
  • 注册日期2004-10-09
  • 最后登录2005-08-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-13 21:34
硬件环境是这样的:我有一块板卡,通过加载特定的驱动模块可以将板上的intel 21555 bridge模拟成虚拟局域网,以实现板卡和host之间通过PCI通信。该驱动模块通过中断方式实现双方连接的建立和数据传送。现在的问题是源代码中对中断寄存器进行写入操作,但相应的中断处理程序并没有相应。经过对整个系统流程的跟踪和考虑,我觉得可能是硬件的问题。
lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-18 15:51
建议不采用intel的桥芯片!!!!一般说来桥芯片应该是透明桥!!!我建议采用hint公司的芯片,hint公司被别人收购了!!!
ffdesign
驱动牛犊
驱动牛犊
  • 注册日期2003-02-14
  • 最后登录2005-05-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-09 09:02
你是怎么向系统注册该端口范围的,并将其映射到虚拟地址上去的,从你的表述来看主要出来不能对硬件进行操作!
游客

返回顶部