免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2895 | 回复: 2
打印 上一主题 下一主题

请大家帮帮忙:关于申请中断号失败问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-29 21:54 |只看该作者 |倒序浏览
平台:AT91SAM9260. 按键中断驱动.无论如何,申请中断号,都返回-22.
int __init keyirq_init(void)
{
    int rc;
    set_irq_type( AT91SAM9260_ID_PIOB, IRQT_FALLING);
    rc = request_irq( AT91SAM9260_ID_PIOB, key1_irq_fun, SA_INTERRUPT, "key2345irq", NULL);
    if(rc){
        printk(" <1>keyirq 1 irq not registered, Error:%d\n", rc);
        return -1;
    }
......
}
按键使用的是PB5管脚,根据手册和linux-2.6.19内核代码,AT91SAM9260_ID_PIOB为内核中声明的中断号。
不知道为何总是申请失败?
请各位帮帮忙吧,已经好几天时间了!

论坛徽章:
0
2 [报告]
发表于 2008-05-30 13:09 |只看该作者
端口初始化为中断了吗?

论坛徽章:
0
3 [报告]
发表于 2008-05-30 14:11 |只看该作者

大侠,请多指教。

"端口初始化为中断了吗?"
大侠,请问您所说的“初始化为中断”应该怎么做呢?
我只是对相应的寄存器进行了设置,可是仍然不行:
#define IO_BASE     AT91_IO_P2V(0xFFFFF800)   物理地址转换为虚拟地址对应 AT91SAM9260_ID_PIOC的基地址

#define PIO_PER     (IO_BASE+0x00)                                                    PIO enable register
#define PIO_ODR     (IO_BASE+0x14)                                                    Output disable register
#define PIO_CODR    (IO_BASE+0x34)                                                   clear output data register
#define PIO_IER     (IO_BASE+0x40)                                                    interrupt enable register
#define PIO_OWDR    (IO_BASE+0xA4)                                                    output write disable register

#define enb (0x1 << 5)

__raw_writel (enb, PIO_PER);
__raw_writel (enb, PIO_ODR);
__raw_writel (enb, PIO_CODR);
__raw_writel (enb, PIO_IER);
__raw_writel (enb, PIO_OWDR);
这样初始化IO后,仍然不行。
请问您所指的什么?不好意思,我刚做驱动不久,水平有限,望多多指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP