wanghb369
驱动牛犊
驱动牛犊
  • 注册日期2003-02-25
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:894回复:4

有关中断次数问题,各大侠帮忙

楼主#
更多 发布于:2003-04-27 15:52
我是一low手,有2k DDK做一pci采集卡的驱动(s3933),发现大量丢数,dma中断次数为 3000次/秒。不知是驱动的问题,还是中断太快,而无法达到,请各路大虾指点。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-04-27 22:19
3000次/秒,不快不快。
wanghb369
驱动牛犊
驱动牛犊
  • 注册日期2003-02-25
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-28 11:36
请教arthurtu:
我的硬件结构是:s5933外接以1k深度的fifo.当fifo 半满时,发出一邮箱中断,
通知驱动设置dma 传输。dma 传输结束后,产生dma中断。
顶层应用程序为:

for(count=0;count<5000 ;count++) //重复5000次。
{
////////////////////////////////////////////////////////////////
//设置并等待邮箱中断
////////////////////////////////////////////////////////////////

BOOL bSuccess =
DeviceIoControl(hWHBATMT, IOCTL_WHB_INT,  //给驱动提供irp,驱动利用该irp设置邮箱中断。
NULL, 0,
NULL,0,
&bR, NULL);
////////////////////////////////////////////////////////////////
//读取数据
////////////////////////////////////////////////////////////////
 
DWORD TxdBytes;
if( !ReadFile( hWHBATMT, inbuffer, sizeof(inbuffer), &TxdBytes, NULL))
//给驱动提供irp,和用户态的memory 的地址和长度。
//驱动程序将用户态的memory转换后,得到dma 的首地址和传输长度,
//并写入s5933的地址register 和 计数register中,以发起一dam传输.
{
printf(\"XXX  Could not read from device...\\n\");
}
else
{
printf(\"Read From Device Succeed,number is ...\\n\",TxdBytes);
}
savefile(count,inbuffer);
}
我怀疑是由于,邮箱中断的设置和dma中断的设置都是由应用程序发起,
中断设置的速度太慢,而硬件中断来的太快,从而丢掉了一些硬件中断。
我这种工作方式太差,请指教,能否提供一个更好的方法。


 
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2003-04-28 14:02
你的意思是邮箱中断立刻产生了,在你设置DMA之前?
可以先设置好DMA(做好准备),再设置邮箱中断。在邮箱中断的ISR中起始DMA传输。
等有数据了,你再在user mode来设置DMA传输,当然来不及了。
wanghb369
驱动牛犊
驱动牛犊
  • 注册日期2003-02-25
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-28 14:16
有道理.谢谢arthurtu ,我试试,有问题在请教
游客

返回顶部