4551|9

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

调用 InterruptInitialize 绑定 逻辑中断和Event 引起死机? 请教原因! [复制链接]

我在做 PXA270 的SPI 驱动,在SPI_Init 进入初始化操作,
当进行到

dwSpiSysIntr = SYSINTR_NOP;
dwHwIntr = IRQ_SSP;
hSpiEvent = CreateEvent(null, false, falsE, null);
if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &dwHwIntr, sizeof(DWORD),
                                  &dwSpiSysIntr), sizeof(DWORD),NULL))
{
     RETAILMSG(1,(TEXT("Failed to request the SPI sysintr.\r\n"));
     dwSpiSysIntr = SYSINTR_UNDEFINED;
     return FALSE;
}
//dwSpiSysIntr 返回是 34
if(!InterruptInitialize(dwSpiSysIntr,hSpiEvent, NULL, 0 ))
{
    RETAILMSG(1,(TEXT("Failed to bind the SPI sysintr to the Event.\r\n"));
}

当运行到 InterruptInitialize 的时候直接死机, 如果dwHwIntr是一个不存在的IRQ号,则不会死机。
静态映射逻辑中断号,在这里还是死机。
请问是什么原因引起? 谢谢,刚入门做驱动,多谢大家指教。

最新回复

楼主,怎么不说原因呢? 我很想知道原因啊。  详情 回复 发表于 2009-2-24 17:01
点赞 关注

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
有趣。这个中断怎么会死机呢?不可理解,你在附近打印信息确定是这里吗?

这个是SPI中断。调用InterruptInitialize仅仅是使能中断,并且绑定线程句柄而已。

BSP已经帮我们处理好了中断的清理寄存器操作。不理解为什么会死机。难道是你的SPI中断不停的产生?
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我每次都不用KernelIoControl这个函数的,直接采用下面代码就搞定了。
if(!InterruptInitialize(IRQ_SSP,hSpiEvent, NULL, 0 ))
{
    RETAILMSG(1,(TEXT("Failed to bind the SPI sysintr to the Event.\r\n"));
}
不知道加上KernelIoControl会有什么好处。感觉功能上没什么影响!
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 wjf_zjut 的回复:
我每次都不用KernelIoControl这个函数的,直接采用下面代码就搞定了。
if(!InterruptInitialize(IRQ_SSP,hSpiEvent, NULL, 0 ))
{
    RETAILMSG(1,(TEXT("Failed to bind the SPI sysintr to the Event.\r\n"));
}
不知道加上KernelIoControl会有什么好处。感觉功能上没什么影响!


KernelIoControl和InterruptInitialize作用是不同的

KernelIoControl是申请系统中断。——一般用于动态申请中断,或者向内核发出命令,做一些动作。

InterruptInitialize是使能中断并绑定线程。

wjf_zjut 你是静态中断吧,所以不用KernelIoControl来动态申请了。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
当调用InterruptInitialize时,系统会调用OEMInterruptEnable函数,所以挂掉的话可能要查一查这个地方的代码有没有问题?
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
还可以看看这里OEMInterruptHandler这个函数有没有问题
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
关注下,我弄驱动也遇到过死机情况
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
现在我的也死机啊。哈哈,是串口。驱动,真是麻烦大了。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 5 楼 fan227 的回复:
还可以看看这里OEMInterruptHandler这个函数有没有问题

这函数要等实际中断发生了再会被调用
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
楼主,怎么不说原因呢?

我很想知道原因啊。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表