2528|5

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

中断与事件绑定总报错!为何?interruptInitialize [复制链接]

各位仁兄好:
    我在Kernel\oal\intr.c中的Enabel Disable done中分别添加了对GPIO106、15、95、107的中断处理ISR
   
    1、我在驱动中用kernelIoControl动态申请了一个中断号,然后用interruptInitialize跟事件绑定
       if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR,&g_KeyIrq1,sizeof(UINT32),&g_KeySysIntr1,sizeof(UINT32),NULL))
        {
                RETAILMSG(1,(TEXT("KEYPAD::KernelIoControl Allocate SYSINTR fault!\r\n")));
                goto EXIT;
        }
        RETAILMSG(1,(TEXT("KEYPAD:: KernelIoControl :: g_KeySysIntr1 = %d\r\n"),g_KeySysIntr1));
        if(!InterruptInitialize(g_KeySysIntr1,g_KeyEvent1,0,0))
        {
                RETAILMSG(1,(TEXT("KEYPAD::InterruptInitialize1 fault!\r\n")));
                goto EXIT;
        }
       通过打印信息看,申请到的中断号为16 ,然后InterruptInitialize返回了一个NULL,
       打印出:KEYPAD::InterruptInitialize1 fault!

2、我又在Kernel\oal\intr.c中添加了
         OALIntrStaticTranslate(SYSINTR_KEYPAD1,IRQ_GPIOXX_2_KEY106);
        OALIntrStaticTranslate(SYSINTR_KEYPAD2,IRQ_GPIOXX_2_KEY15);
        OALIntrStaticTranslate(SYSINTR_KEYPAD3,IRQ_GPIOXX_2_KEY95);
        OALIntrStaticTranslate(SYSINTR_KEYPAD4,IRQ_GPIOXX_2_KEY107);
   并在SRC\INC\bsp_cfg.h中添加
#define SYSINTR_KEYPAD1      (SYSINTR_FIRMWARE+4)  //20
#define SYSINTR_KEYPAD2      (SYSINTR_FIRMWARE+7)  //23
#define SYSINTR_KEYPAD3      (SYSINTR_FIRMWARE+8)  //24
#define SYSINTR_KEYPAD4      (SYSINTR_FIRMWARE+9)  //25
然后在驱动中吧kernelIoControl部分去掉
直接将g_KeySysIntr1 = SYSINTR_KEYPAD1 ;
   RETAILMSG(1,(TEXT("KEYPAD:: KernelIoControl :: g_KeySysIntr1 = %d\r\n"),g_KeySysIntr1));
        if(!InterruptInitialize(g_KeySysIntr1,g_KeyEvent1,0,0))
        {
                RETAILMSG(1,(TEXT("KEYPAD::InterruptInitialize1 fault!\r\n")));
                goto EXIT;
        }
这下打印信息g_KeySysIntr1 = 20 ;
但是InterruptInitialize 依然没有成功,打印出:KEYPAD::InterruptInitialize1 fault!
(注:绑定的事件肯定是创建成功了)
请问:
InterruptInitialize总不成功是什么意思啊?人品问题?   

最新回复

找到了 我的IRQ值超过了IRQ_MAINSTONEII_GPIOXX_2_MAX .......  详情 回复 发表于 2009-12-1 17:17
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
BOOL InterruptInitialize(
  DWORD idInt,
  HANDLE hEvent,
  LPVOID pvData,
  DWORD cbData
);
Parameters
idInt
[in] Interrupt identifier to be associated with this interrupt service thread (IST).
hEvent
[in] Event to be signaled when the interrupt is triggered.
pvData
[in] This parameter can be used as a pointer to a block of data that is passed to OEMInterruptEnable. The block of data can be initialization data, scratch space, and so on.
cbData
[in] Size of data pointed to by pvData.
Return Values
TRUE indicates success; FALSE indicates failure.

 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
if (!InterruptInitialize(pPublicSpi->dwSpiSysIntr, pPublicSpi->hSpiEvent, NULL, 0))
        {
            RETAILMSG(SPI_INIT,(TEXT("[SPI] SPI Interrupt Initialization failed!!!\n")));
            bResult = FALSE;
            break;
        }
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
InterruptInitialize的第3个参数不要用成0看看!!!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
OEMInterruptEnable return FALSE with associated SYSINTR_xxx.

Please check your kernel code to ensure the OEMInterruptEnable return value.

Paul, Chao @ Techware
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 
找到了
我的IRQ值超过了IRQ_MAINSTONEII_GPIOXX_2_MAX
.......
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表