lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:986回复:2

io 端口的访问 ― luo 大侠及其他大侠帮忙

楼主#
更多 发布于:2002-01-25 17:11
请教各位大侠,在对 io 端口读写的时候,有没有加锁(lock)、开锁(unlock)之说? 如果有,能找到相关书籍或资料吗?

我所遇到问题如下: 用 9052 实现从 pci 转 isa , 仅仅使用了 io 资源。 在对 io 端口进行读写的时候,发现出现数据丢失的情况。往端口写 1、0、1 的时候(分三次写),如果时间间隔较长,则数据均正常;但如果间隔很短(均为手工操作),第三次的 1 就可能写不过去。已经折腾了一周了,还是没明白。今天用 plx 厂家提供的 plxmon 程序写端口,好像不存在这个问题。而且在 ice 中可观测到调试信息:  
 locking 。。。
 send irp 。。。
 unlocking。。。
 
我怀疑跟操作系统的调度有关,但是又没法确认。请各位大侠帮帮忙!我在 win98 下操作,vxd 格式。 plxmon 用的是 wdm 格式。


[编辑 -  1/25/02 作者: lvwj]
www.bjjcz.com
lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-01-28 17:42
我已经找到问题的原因了。我在每次写操作之后均进行了两次读操作。如果将读操作注释掉而单独进行写操作,就不会出现上述问题。
问题基本上可认定为 读操作占用了太多的系统开销,系统来不及响应。但是,为什么读操作会占用那么大的系统开销?

我是在 win98 下写的 vxd, ring3 的应用程序通过 deviceiocontrol 通知 vxd 去 read/write io port。

原来的插卡在 仿真 dos 下,访问 isa 槽时,也没有存在端口访问延迟的现象。isa 槽是通过主板上的 bridge 转接的。我使用 9052 的 isa 方式进行转接,问什么会出现这种现象呢?请大家帮帮忙。

感谢 littleSW。
www.bjjcz.com
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-01-26 18:20
对io端口的读写时,并没有硬性规定必须加锁后才能访问。

如果你需要,可是使用VTOOLSD中的KEvent类设置互斥。

当然98DDK也有相应的函数。

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
游客

返回顶部