mengtian
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2005-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1682回复:5

大虾请进:9054中断怎么回事?

楼主#
更多 发布于:2004-09-25 17:03
用driverworks编写的9054驱动,当INTCSR[8]和INTCSR[11]同时置1时,装驱动的时候就死机,系统没响应。那么本地中断产生后,怎样才能进入中断服务程序。我的理解是将INTCSR[8]和INTCSR[11]同时置1,本地中断产生后触发pci中断,进入中断程序。但为什么死机呢?
mengtian
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2005-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-29 21:56
怎么给分哪?

最简单化,让lint一直为高(示波器测量了),使能pci和lint中断后马上进入到中断服务程序,inta中断波形是对的,有低电平的过程。
清本地中断怎么清,向intcsr[15]写1吗,还是读intcsr一次就可以
wkq清秋枫叶
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2008-08-07
  • 粉丝1
  • 关注0
  • 积分53分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-29 09:13
果然如此,我猜想可能就是由于中断过于频繁导致死机。对于软件的事情我不清楚,不过你可以先用示波器看一下你的中断信号是否正常。在硬件中断信号正常之后再查软件的问题,记住,一定要将问题隔离开,这样才能查找问题并解决问题。
   我想提醒一点(也许你已注意到),PCI中断是电平方式,你必须在中断响应程序中让LOCAL_INT和PCI_INT(INTA#)变成高电平。
   希望我的回答能对你有所帮助,不过解决问题最终要靠你自己的反复摸索。
mengtian
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2005-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-28 15:22
谢谢回复,附件里有我的程序:pciwdmdevice.cpp,我做的一个通讯卡,卡上有一个16c554,通过16c554触发本地中断。现在调试的结果是,INTCSR[8]和INTCSR[11]同时置1,会不断的触发中断,导致电脑死记,若只置INTCSR[11]为1,及使lint脚为高电平,INTCSR[15]就查询到为1。
附件名称/大小 下载次数 最后更新
2004-09-28_PciwdmDevice.cpp (37KB)  12
wkq清秋枫叶
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2008-08-07
  • 粉丝1
  • 关注0
  • 积分53分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-27 21:35
凭你现在的叙述我很难判断原因所在。
由于PCI中断是共享的,你可以看一下你的9054中断响应程序是否正确,尤其开始时是否过滤了非9054中断。
mengtian
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2005-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-25 17:17
帮帮忙,会高分奉送
游客

返回顶部