历史上的今天
返回首页

历史上的今天

今天是:2025年07月04日(星期五)

正在发生

2020年07月04日 | mini2440裸机试炼之——看门狗中断和复位操作

2020-07-04 来源:eefocus

看门狗的工作原理:

设本系统程序完整执行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常执行时,定时器就不会溢出,若因为干扰等原因使系统不能在Tp时刻改动定时器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以又一次执行,从而起到监控的作用。


看门狗具有两个功能:

1、当做常规时钟,能够产生中断;


2、当看门狗定时器使用,当计数器WTCNT为0时,产生复位;


看门狗的功能方框图:

我程序中PCLK为50MHz,预分频值=77,时钟除数因子选128,


时钟周期t_watchdog=1/[PCLK/(预分频值+1)/时钟除数因子]


=1/[50*1000000/(77+1)/128]=0.0002


t_watchdog表示的是看门狗计数计时器WTCNT每降低1所用的时间,WTCNT又相当于一个节拍的作用,当WTCNT为0时,假设看门狗控制寄存器WTCON[0]开启复位功能,则复位;假设看门狗控制寄存器WTCON[0] 禁止复位,开启中断,则中断操作,并数据(WTDAT)寄存器又一次赋值到计数(WTCNT)寄存器内,循环中断操作(这里的中断就类似RTC的闹钟中断)。


所谓的喂狗:就是使WTCNT在为0之前又一次赋值,不使之发生中断或者复位。


引用赵老师的一段话:


s3c2440的看门狗定时器不仅能够引起系统复位,还能够引起一般的中断,因此s3c2440的看门狗定时器能够当作一般的定时器使用。


看门狗中断结果:

每四秒一个中断,LED点亮并串口提示


看门狗复位结果:

AXD调试执行到看门狗计数器rWTCNT为零时,进入复位,CPU停止工作,也就不产生中断。


复位关闭axd后,u-boot串口初始化提示(没能及时在第一次蜂鸣器响按下按键停止autoboot):

复位关闭axd后,u-boot串口初始化提示(及时在第一次蜂鸣器响按下按键停止autoboot):

这里就是复位到用uboot初始化开发板的时候,可是不明确为什么必需要在第一次蜂鸣器就按下按键才干进到uboot


附:

硬件环境:J-link v8、mini2440、J-link转接板、串口转USB线


软件环境:windows7(32位)、开发板uboot(NandFlash)、J-link驱动(J-Link ARM V4.10i)、SecureCRT、ADS1.2


 


代码块


//====================================================================

//  实现功能:

//           看门狗中断和复位操作

//       当WTCON[0] 开启复位功能;                实现复位

//       当WTCON[0] 禁止复位,WTCON[2]开启中断;  实现中断

//                                                   by:梁惠涌

//====================================================================

#include "2440addr.h" 

#include "def.h"

#include "2440lib.h"

 

static U8 led_flag=0;

/**************************************************************

                   看门狗初始化函数

**************************************************************/

void watchdog_init(){

    rWTCON=((77<<8)|(1<<5)|(3<<3)|(1<<2)); //预分频值=77;看门狗定时器使能;时钟除数因子=128 ;看门狗中断使能;

    //时钟周期t_watchdog=1/[PCLK/(预分频值+1)/时钟除数因子]=1/[50*1000000/(77+1)/128]=0.0002

    //t_watchdog表示的是看门狗计数计时器WTCNT每降低1所用的时间

    rWTDAT=20000; //WTDAT看门狗数据寄存器,看门狗定时器重载的计数值  

    rWTCNT=20000; //WTCNT看门狗计数寄存器,看门狗定时器当前计数值

}

 

/**************************************************************

                        看门狗中断函数

**************************************************************/

void __irq watchdog_isr(){

    rSUBSRCPND |=1<<13; //清除次级中断挂起状态

    rSRCPND|=0x1<<9;    //清除中断挂起状态

    rINTPND|=0x1<<9;

   

   //中断LED点亮 

    led_flag++;

    Uart_Printf("n    -----看门狗中断,点亮LED %dn",led_flag);

    rGPBCON=0x015400;

    switch(led_flag){

    case 1: rGPBDAT=0xe<<5 ;break;

    case 2: rGPBDAT=0xd<<5 ;break;

    case 3: rGPBDAT=0xb<<5 ;break;

    case 4: rGPBDAT=0x7<<5 ;break;

    }

    if(led_flag==4) led_flag=0;  

    

    rSUBSRCPND &=(~0x1<<13);

    rSRCPND &=(~0x1<<9);   //开中断

    rINTPND &=(~0x1<<9);

}

 

/**************************************************************

                       看门狗子函数  

**************************************************************/    

void watchdog(){

    

    watchdog_init(); //初始化看门狗寄存器

    

    //选择是否开启复位

    //rWTCON |= (1<<0);//开启复位

    rWTCON |= (0<<0);//禁止复位

    

    rINTSUBMSK &=~(1<<13);//开看门狗次级中断  

    rINTMSK &=~(1<<9);    //开看门狗中断    

    pISR_WDT_AC97=(unsigned)watchdog_isr;

    

    while(1){

    } 

}


推荐阅读

史海拾趣

General Electronic Devices公司的发展小趣事
提供稳定的直流电压。
Forge Europa Ltd公司的发展小趣事

随着技术实力的不断增强,Forge Europa Ltd公司开始将目光投向国际市场。公司积极参与国际展会,与全球客户建立联系,并通过优化供应链管理,确保产品能够迅速响应国际市场需求。在欧洲市场,Forge Europa凭借其高品质的产品和专业的服务,迅速赢得了众多知名客户的青睐。同时,公司还不断拓展北美、亚洲等新兴市场,逐步建立起覆盖全球的销售网络。

Hmc Inc公司的发展小趣事

“Future Memory Labs”公司自成立之初,就将持续创新视为企业发展的核心动力。在HMC技术的研发和应用过程中,Future Memory Labs不断投入资源,进行技术迭代和产品升级。同时,该公司还积极构建HMC技术生态,与上下游企业建立紧密的合作关系,共同推动HMC技术的普及和应用。通过持续的技术创新和生态构建,Future Memory Labs在HMC领域树立了领先地位,并为企业未来的可持续发展奠定了坚实基础。

请注意,以上故事均为虚构,旨在展示电子行业中类似HMC技术公司可能的发展路径和策略。

APEM公司的发展小趣事

为了进一步拓展北美市场,APEM在1991年收购了位于美国波士顿的American Switch Corp.,并成立了子公司APEM COMPONENTS Inc.。这一收购使APEM得以在北美市场建立稳固的地位,为其全球扩张提供了有力支持。

台湾奇力(Chip)公司的发展小趣事

奇力公司的成功离不开与奇美集团的紧密合作。奇美集团是台湾知名的面板生产厂家,拥有强大的技术实力和市场份额。奇力公司作为奇美集团的子公司,得到了奇美集团在技术、资金和市场等方面的全力支持。通过与奇美集团的紧密合作,奇力公司得以快速发展,并在LED芯片市场上取得了显著的成绩。

Adaptive Networks Inc公司的发展小趣事

奇力公司一直致力于环保和社会责任。在生产过程中,奇力公司采用环保材料和工艺,减少对环境的影响。同时,奇力公司还积极参与社会公益活动,回馈社会。这种环保和社会责任的理念也赢得了客户和社会的认可和支持。

以上五个故事分别从不同角度展现了台湾奇力(Chip)公司的发展过程。这些故事不仅体现了奇力公司的技术实力和市场策略,也展现了其持续创新、绿色环保和社会责任的企业形象。

问答坊 | AI 解惑

我买的开发板的资料

我买的开发板的资料…

查看全部问答>

面向未来的IC设计方案

面向未来的IC设计方案随着集成电路制造业的飞速发展,传统的设计方法越来越受到严峻的挑战。每年设计技术的进步大约滞后制造技术20%。在器件的特征线宽进入深亚微米以后,这个矛盾显得越发的突出。主要表现在系统的集成度越来越高,使得单个芯片的 ...…

查看全部问答>

ucf from to 约束

FROM....TO....约束关于from to 的约束是一个比较实用,也比较好用的约束。 尤其在跨时钟域处理中的应用,特别有效。 举例: 设计中有两个时钟,一个是PLL的输入,一个是PLL的输出,当设计中有数据在该两个时钟域中传递时, 又没有用到fifo隔离, ...…

查看全部问答>

请问为什么.out文件无法下载到板子上?

在workbench3.0中建立了一个downloadable Kernel Module Project(一个简单的hello world程序),在vxworks6.x simulator里面运行通过了,也显示了hello world。可是连接8548板子后,选择连接vxworks6.x target server却去下载不进去,显示错误:Po ...…

查看全部问答>

【求助】“阻塞(pend)”与“挂起(suspend)”的区别?

这两个词的英文意思差不多,看孔祥营书也没搞明白这两种任务状态的区别。 google的结果不尽相同。有说阻塞是位于主存,挂起位于外存;有说阻塞占用CPU,挂起不占用CPU…… 书上说:挂起(suspend)状态主要用于调试,不会约束状态转换,仅仅约束 ...…

查看全部问答>

由于PPP没搞出来,刚刚被老板训了,心情很不好,散分!

由于PPP没搞出来,刚刚被老板训了,不过还是要感谢CDSN里帮助过的我人,要不然或者我现在都被老板开了!呵呵!…

查看全部问答>

LoadImage返回失败

CString str = \"D:\\\\zxh\\\\111\\\\res\\\\sa.bmp\"; HBITMAP bim = (HBITMAP)LoadImage(AfxGetInstanceHandle(), str, IMAGE_BITMAP, 0,0,0); if(bim == NULL) {    DWORD errno = GetLastError();    return; } 总 ...…

查看全部问答>

新手对C语言控制定时中断的疑问

请问各位大虾们 我是刚接触单片机的 我想问下,如果我想用C语言精确地控制时间(定时中断) 具体用C语言该怎样实现呢?…

查看全部问答>

求《高频电路》

求《高频电路》清华大学通信教研组1980年的…

查看全部问答>

STM32的DFU文件生成方详解

最近好象很多人都在问关于DFU文件的使用问题,正好我们刚研究过,给大家讲讲我们的用法。第一步,准备好要转换的文件,bmp和wav格式,ST原版的DEMO就是这两种格式,后缀改为.bin(也可不改,只是选文件类型过滤选ALL Files(*.*)).第二步 ...…

查看全部问答>