• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : LINUX2.6.36下中断组不能产生中断,请问什么原因?平台MINI6410 复制链接 | 浏览器收藏 | 打印
ljw
级别: 新手上路
UID: 36606
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
综合积分: 50 分
注册时间: 2011-01-18
最后登录: 2017-09-13
楼主  发表于: 2011-03-07 11:04

 LINUX2.6.36下中断组不能产生中断,请问什么原因?平台MINI6410

struct button_irq_desc    
{
    int irq;                    //中断号
    int pin;                   //引脚
    int pin_setting;        //引脚配置
    char *name;             //按键名称
};

static struct button_irq_desc button_irqs[] =
{
    ...........
    {IRQ_EINT(  9),  S3C64XX_GPN( 9),  S3C_GPIO_SFN(2),  "KEY7"},//GPN9

    {IRQ_EINT_GROUP(4,11),  S3C64XX_GPF(11),  S3C_GPIO_SFN(3),  "KEY19"},    //GPF1,CAM IY6
    {IRQ_EINT_GROUP(4,12),  S3C64XX_GPF(12),  S3C_GPIO_SFN(3),  "KEY20"},    //GPF1,CAM IY7
...........
};
ret = request_irq(button_irqs.irq, buttons_interrupt, IRQF_DISABLED, button_irqs.name, (void *)i);

你好,请问我再你们的LINUX2.6.28上面采用如上的方式注册中断组没有问题,可以正常产生中断,但是在2.6.36下面就不能产生中断,而在2.6.36下使用如IRQ_EINT(16),IRQ_EINT(18)等这样的非中断组可以正常产生中断,请问这个是什么问题?你们有碰到过吗?平台为MINI6410
[ 此帖被ljw在2011-03-07 11:10重新编辑 ]
ljw
级别: 新手上路
UID: 36606
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
综合积分: 50 分
注册时间: 2011-01-18
最后登录: 2017-09-13
1楼  发表于: 2011-03-07 11:05

 回 楼主(ljw) 的帖子

另外,其他组的中断组我也尝试了,一样的,只要是中断组的都没法产生
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
2楼  发表于: 2011-03-07 11:26
没有遇到过,我们使用的按键驱动很正常。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
ljw
级别: 新手上路
UID: 36606
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
综合积分: 50 分
注册时间: 2011-01-18
最后登录: 2017-09-13
3楼  发表于: 2011-03-07 11:37
引用第2楼mindee于2011-03-07 11:26发表的  :
没有遇到过,我们使用的按键驱动很正常。

恩 按键驱动都没问题,因为按键驱动使用的是那种非中断组的中断,非中断组的中断都没有问题,但是一用到中断组的中断就没法注册成功了。坛里哪位大侠碰到过帮忙看看哈,谢谢哦
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
4楼  发表于: 2011-03-07 11:43
是注册失败还是注册后不能产生中断?
ljw
级别: 新手上路
UID: 36606
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
综合积分: 50 分
注册时间: 2011-01-18
最后登录: 2017-09-13
5楼  发表于: 2011-03-07 13:42
引用第4楼911gt3于2011-03-07 11:43发表的  :
是注册失败还是注册后不能产生中断?

是中断注册失败,还没到产生中断那一步,驱动可以正常加载,我的 中断注册是在OPEN函数里面的,当应用程序调用的时候出了问题,
我现在打印下调用出错返回的值,等下你看看
我的情况和网上这个人的一样:http://linux.chinaunix.net/bbs/thread-1175835-1-1.html
目前网络上我看到有3个人都是这样的,但没有看到解决方案
static int buttons_open(struct inode *inode, struct file *file)
{
        int i;
        int ret;

        for(i = 0; i < KEY_COUNT; i++)
        {
            //设置6个IO口为中断触发方式
            //s3c2410_gpio_cfgpin(button_irqs.pin, button_irqs.pin_setting);//modify 6
            s3c_gpio_cfgpin(button_irqs.pin, button_irqs.pin_setting);
        s3c_gpio_setpull(button_irqs.pin, S3C_GPIO_PULL_UP);

            //设置中断下降沿为有效触发
            set_irq_type(button_irqs.irq, IRQ_TYPE_EDGE_FALLING);
        
            //申请中断(类型为快速中断,中断服务时屏蔽所有外部中断?)
            ret = request_irq(button_irqs.irq, buttons_interrupt, IRQF_DISABLED, button_irqs.name, (void *)i);

            if(ret)
            {
                    break;
            }

            //初始化6个按键的状态为抬起
            key_status = KEY_UP;

            //初始化并设置6个去抖定时器
            setup_timer(&key_timers, buttons_timer, i);
        }

        if(ret)
        {
            //中断申请失败处理
            i--;

            for(; i >= 0; i--)
            {
                    //释放已注册成功的中断
                    disable_irq(button_irqs.irq);
                    free_irq(button_irqs.irq, (void *)i);
            }

            return -EBUSY;
        }

        return 0;
}
[ 此帖被ljw在2011-03-07 14:04重新编辑 ]
ljw
级别: 新手上路
UID: 36606
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
综合积分: 50 分
注册时间: 2011-01-18
最后登录: 2017-09-13
6楼  发表于: 2011-03-07 14:21
找到了原因,原来是在2.6.36的这个目录下arch\arm\mach-s3c64xx,只有irq-eint.c的中断定义和实现,没有irq-eint-group.c,而在2.6.28中有irq-eint-group的实现。不过定义后,最后的这个arch_initcall(s3c64xx_init_irq_eint_group);,不知道怎么去初始化了
级别: 新手上路
UID: 26391
精华: 0
发帖: 17
金钱: 85 两
威望: 17 点
综合积分: 34 分
注册时间: 2010-08-08
最后登录: 2011-07-04
7楼  发表于: 2011-03-15 14:28
遇到了同样的问题 我想问下 解决了吗?
级别: 侠客
UID: 48220
精华: 0
发帖: 76
金钱: 380 两
威望: 76 点
综合积分: 152 分
注册时间: 2011-05-29
最后登录: 2013-08-20
8楼  发表于: 2011-06-06 21:34
我也遇到一样的问题,唉,这个bsp太不完整了
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
9楼  发表于: 2011-06-07 14:08
这个 eint-group 很重要吗?
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go