求助:上位机通过驱动与PCIE板卡通信的问题

tt44tt44 2016-12-29 06:53:47
具体操作流程是:板卡端完成一定行动后修改一个寄存器的值,上位机通过DeviceIoControl用驱动程序读该寄存器的值,获知板卡完成该活动后进行下一步操作。

由于对实时性要求较高,我在上位机通过循环持续调用DeviceIoControl,问题就来了,经常会出现函数运行时间很长并且读取到的值出问题的情况,而且是随机性的,并不存在周期性。我将调用DeviceIoControl语句的频率降低以后,该问题出现频率明显变小,出现这种情况是因为什么问题?是因为语句运行太频繁吗?有什么解决方法吗?
...全文
890 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
neunap 2017-01-03
  • 打赏
  • 举报
回复
引用 2 楼 tt44tt44 的回复:
[quote=引用 1 楼 neunap 的回复:] 我理解上位机的DeviceIoControl运行很长时间一定是卡在PCIE驱动里,可能是驱动里面的操作和PCIE设备本身的逻辑处理共用某些共通的资源,比如总线,而这个资源是不可以同时使用的。这时可能是PCIE正在占用资源,所以驱动抢不动就会卡到那里。单次占用的时间都比较短,两边频率都较高时可能出现问题的可能性比较大。
那如果是驱动的问题,是不是这个问题就无法从根本上解决了?[/quote] 如果能定位到是驱动的问题,就要看驱动是怎么来的了,如果有源码就可以修改。如果是编译好的,那就很难改内部的东西了,但是如果有硬件手册也可以考虑自己开发驱动。
tt44tt44 2016-12-30
  • 打赏
  • 举报
回复
引用 1 楼 neunap 的回复:
我理解上位机的DeviceIoControl运行很长时间一定是卡在PCIE驱动里,可能是驱动里面的操作和PCIE设备本身的逻辑处理共用某些共通的资源,比如总线,而这个资源是不可以同时使用的。这时可能是PCIE正在占用资源,所以驱动抢不动就会卡到那里。单次占用的时间都比较短,两边频率都较高时可能出现问题的可能性比较大。
那如果是驱动的问题,是不是这个问题就无法从根本上解决了?
neunap 2016-12-30
  • 打赏
  • 举报
回复
我理解上位机的DeviceIoControl运行很长时间一定是卡在PCIE驱动里,可能是驱动里面的操作和PCIE设备本身的逻辑处理共用某些共通的资源,比如总线,而这个资源是不可以同时使用的。这时可能是PCIE正在占用资源,所以驱动抢不动就会卡到那里。单次占用的时间都比较短,两边频率都较高时可能出现问题的可能性比较大。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧