主题 : linux2.6.12 +2440  看门狗 不进中断 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 64583
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2012-03-07
最后登录: 2017-09-13
楼主  发表于: 2012-03-07 09:56

 linux2.6.12 +2440  看门狗 不进中断

我现在遇到一个看门狗的问题,由于程序需要,timer不够用,所以想把2440的看门狗设置成定时器工作方式,更改的程序写在time.c内核节拍内,(2440用timer4做节拍),程序也注册了中断

初始化代码如下:

           __raw_writel(50, S3C2410_WTDAT);
    __raw_writel(50, S3C2410_WTCNT);
    wtcon = __raw_readl(S3C2410_WTCON);


    __raw_writel(wtcon | (1<<5)|(1<<2) | (100 << 8) | (3 << 3) , S3C2410_WTCON);  // 分频 使能中断 到时间后不复位系统(0<<0))

    Maskvalue = __raw_readl(S3C2410_INTSUBMSK );    //S3C2410_INTSUBMSK  S3C2410_INTMSK
    Maskvalue &= ~( 1<< 13);        
    __raw_writel(Maskvalue,S3C2410_INTSUBMSK );//清除wdt附加中断掩码

    Maskvalue = __raw_readl(S3C2410_INTMSK);    //S3C2410_INTSUBMSK  S3C2410_INTMSK
    Maskvalue &= ~( 1<< 9);        
    __raw_writel(Maskvalue,S3C2410_INTMSK);//清除AC97中断掩码

注册部分:
        setup_irq(IRQ_TIMER4, &s3c2410_timer_irq);  //操作系统节拍中断timer4
                setup_irq(IRQ_S3C2440_AC97,&s3c2410_wdttimer_irq); //看门狗

结构体没有复制,太多了,和timer4几乎一样的操作,但是就是不进中断。
可是把看门狗的复位功能使能:
__raw_writel(wtcon | (1<<5)|(1<<2) | (100 << 8) | (3 << 3) | 1 , S3C2410_WTCON);  // 分频 使能中断 到时间后不复位系统(1<<0))
就能按照设计时间定时复位,证明看门狗已经工作。

初始化代码是ads1.2调试好的,一模一样。怀疑是中断被注册了,或者被屏蔽了,可是代码都已经打开,不知道问题出在那里。

请各位帮助下。
描述:linux +2440  看门狗 不进中断
附件: 新建文本文档.txt (8 K) 下载次数:2