历史上的今天
返回首页

历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2019年10月17日 | S3C2410看门狗watchdog寄存器介绍与使用

2019-10-17 来源:51hei

看门狗应用实验 

1、实验目的 

    了解watchdog 的作用 

    掌握S3C2410 的watchdog 定时器的使用方法 

2、实验内容 

     实现看门狗复位 

     编程实现看门狗喂狗 

3、实验设备 

    S3C2410 开发板 

    ADS1.2 集成开发环境,JTAG 调试器、串口连接线 

4、实验原理 

4.1 看门狗功能简述 

    嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗 (watchdog )电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 

4.2 看门狗的工作原理 

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

4.3S3C2410 的看门狗 

    S3C2410 的看门狗定时器有两个功能: 

     作为常规时钟,并且可以产生中断; 

     作为看门狗定时器使用,当时钟计数减为0  (超时)时,它将产生一个128 个时钟 

        周期(PCLK )的复位信号。 

    主要特性如下: 

     通用的中断方式的16bit 定时器。 

     当计数器减到0          (发生溢出),产生128 个PCLK 周期的复位信号。 

    下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分频产生适合的看门狗时钟。 


    看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器。看门狗的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分 频器分频。预分频比例因子的分频值,都可以由看门狗控制器(WTCON )决定,预分频值 的有效范围从0 到256-1。分频因子可以选择16、32、64 或者128。 

看门狗定时器记数值的计算公式如下: 

        t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ] 

    实验中PCLK=50MHz;prescaler =WTCON[15:8]=100;clock division factor=128 

        t_watchdog= 0.00025856 

        看门狗的定时周期为T=WTCH ×t_watchdog 

    调试环境下的看门狗 

    当S3C2410 用嵌入式ICE 调试的时候,看门狗定时器的复位功能不能启动,看门狗定时器能从CPU 内核信号判断出当前CPU 是否处于调试状态,如果看门狗定时器确定当前模 式是调试模式,尽管看门狗能产生溢出信号,但是仍然不会产生复位信号。 


5、S3C2410 相关寄存器 

    WTCON――看门狗定时器控制寄存器 

    看门狗控制寄存器能够禁止或者允许看门狗时钟,从四个不同的时钟源中挑选时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出。如果用户想要使用看门狗作为普 通时钟,应该中断使能,禁止看门狗定时器复位。 

    WTDAT――看门狗定时器数据寄存器 

    WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中。 

    WTCNT――看门狗定时器计数寄存器 

    WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT )的值不能自动装载到看门狗计数寄存器(WTCNT )中, 所以看门狗被允许之前应高初始化看门狗计数寄存器的值。 

6、看门狗应用编程实现 

    由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗的功能,只需要对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON )、 看门狗数据寄存器(WTDAT )、看门狗计数寄存器(WTCNT )的操作。 

     设计流程如下: 

      设置看门狗中断操作,包括全局中断和看门狗中断的使能,看门狗中断向量的定义。 

      对看门狗控制寄存器(WTCON )的设置,包括设置预分频比例因子、分频器的分 


          频值、中断使能和复位使能等。 

      对看门狗数据寄存器(WTDAT )和看门狗技术寄存器(WTCNT )的设置。 

      启动看门狗定时器。 

6.1 主功能函数 

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

     Function name: Main 

     Parameter     : void 

     Description   : 主功能函数 

     Return           : void 

     Argument       : void 

     Autor & date : 

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

     int Main(void) 

     { 

          SetClockDivider(1, 1);//FLCK:HCLK:PCLK=1:2:4 

          SetSysFclk(DFT_FCLK_VAL);//Fout=200MHZ 

          Port_Init(); 

          Uart_Select(0); 

          Uart_Init(0, UART_BAUD); 

          Uart_Printf("watchdog test is beginningn"); 

          watchdog_test(); 

     } 

6.2  看门狗测试程序 

     void watchdog_test(void) 

     { 

       //initialize interrupt registers 

       ClearPending(BIT_WDT); 

       //建立WatchDog 中断 

       pISR_WDT=(unsigned)watchdog_int; 

       //Prescaler value=100、clock division factor=128 

       //t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.00025856 

       //disable watchdog 

                                                                                                      4 

----------------------- Page 5-----------------------

        rWTCON=((100<<8)|(3<<3)); 

        //看门狗时钟周期T=WTCNT*t_watchdog=4S 

        //看门狗喂狗 

        rWTDAT=15000; 

        rWTCNT=15000; 

        rWTCON|=((1<<5)|(1<<2));//enable Watchdog timer ang watchdog interrupt 

        rWTCON|=((1<<5)|(1<<2)|1);//watchdog   复位,时间间隔为4S。 

        //rWTCON|=(1<<5)|(1<<2);//每4S watchdog     一次中断。 

        //设置watchdog 为IRQ 中断模式 

        rINTMOD&=0xFFFFFDFF; 

        //开中断 

        EnableIrq(BIT_WDT); 

        while(f_ucSencondNo<11); 

       } 

6.3  看门狗中断服务程序 

     /****   watchdog_init  ****/ 

     void __irq watchdog_int(void) 

      { 

        //清除中断 

        ClearPending(BIT_WDT); 

        f_ucSencondNo++; 

        if(f_ucSencondNo<11) 

        Uart_Printf("%ds",f_ucSencondNo); 

        else 

        { 

          //mask watchdog timer interrupt 

          DisableIrq(BIT_WDT); 

          Uart_Printf("watch dog is okn"); 

        } 

     } 

7、实验过程 

     运行该程序后,将会在一段时间后自动产生一个复位信号,自动启动开发板。 


推荐阅读

史海拾趣

CAMBION公司的发展小趣事

在技术创新的基础上,CAMBION公司积极拓展市场。公司通过与各大电子设备制造商建立合作关系,将其产品广泛应用于智能手机、平板电脑、笔记本电脑等领域。同时,CAMBION还注重品牌建设,通过参加国际电子展、发布技术白皮书等方式提升品牌知名度和影响力。这些努力使得CAMBION的产品在市场上获得了良好的口碑和认可。

Ememory Technology Inc公司的发展小趣事

在2022年,eMemory宣布加入英特尔晶圆代工服务加速器(Intel Foundry Services Accelerator)计划。这一合作标志着eMemory的技术得到了国际半导体巨头的认可。通过这一计划,eMemory为使用英特尔晶圆代工服务的客户提供全球领先的安全IP解决方案,进一步提升了其产品在全球市场的竞争力。

台湾丰宾(CapXon)公司的发展小趣事

CapXon公司一直高度重视品质管理,建立了完善的质量管理体系和检测机制。公司严格把控原材料采购、生产过程、成品检验等各个环节,确保产品的品质符合国际标准和客户要求。同时,CapXon还不断优化生产流程,提高生产效率,降低生产成本,为客户提供更具竞争力的价格和服务。

Continental Industries公司的发展小趣事

面对电子行业日益激烈的竞争和不断变化的市场需求,Continental Industries积极应对挑战。公司加强了对市场趋势的研究和分析,不断调整产品结构和市场策略。同时,公司还加大了对新技术和新材料的研发力度,努力提升产品的竞争力和附加值。

Delphi Connection Systems公司的发展小趣事

随着市场的不断发展,Delphi Connection Systems公司意识到单靠自身的力量难以在激烈的市场竞争中立足。于是,公司积极寻求与其他企业的战略合作,通过资源共享、优势互补,共同开拓市场。公司与一家知名的汽车制造商建立了战略合作关系,为其提供高质量的连接器产品,从而成功进入了汽车电子行业市场。

Artesyn Embedded Technologies公司的发展小趣事

随着5G技术的商用化,电子行业迎来了新的发展机遇。Artesyn Embedded Technologies敏锐地把握住了这一机遇,积极研发适应5G时代需求的电源和嵌入式计算解决方案。公司推出的新产品不仅满足了5G设备对高效、稳定电源的需求,也为公司在5G时代的发展奠定了坚实的基础。

问答坊 | AI 解惑

求助:寻找RF芯片

想找一颗接收为ASK, 工作频率在300-900Mhz,工作电压在2.5-5V,占用带宽小于25khz的芯片,请不吝赐教。…

查看全部问答>

深入理解SD卡原理和其内部结构总结

在其他地方看到个深入理解SD卡原理和其内部结构总结,很不错,拿来与大家分享下!…

查看全部问答>

万年历

  基于51单片机设计的万年历,含源程序…

查看全部问答>

PXA270核心板方案:

PXA270核心板方案:   CPU:PXA270   SDRAM:128M   FLASH:32M   接口:USB、SDCARD、SERIAL等   LCD+TOUCH:3.5‘   支持WIFI 方案可提供:SCH + PCB + BOOM + WINCE ...…

查看全部问答>

Makefile语法小问题

嵌入式U-boot的Makefile中有这么一句 smdk2410_config        :        unconfig         @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 课本解释 $(@:_config= ...…

查看全部问答>

【原创】求助:为什么我对SegmentA进行擦除和写以后,再重新启动就没反应了。

想用information memory代替外接EEPROM的。 我是按照书上的例子对SegmentA进行擦除和写的,并且读出来的数确实是我写进去的。就是一断电再上电就没反应了,我怀疑是我把其他的段也擦除了? pFlash=(char *)_AddSegA; //指向SegmentA FCTL1=FWK ...…

查看全部问答>

关于LM3S8962

有没有谁8962的开发板已经用的不想用了,可以给我用用?我还没有完整的一套,我只有一个大的板子和一根USB数据线,谢谢啊…

查看全部问答>

如何测试或者计算出动态电阻的等效值?

类似于一个带开关的电阻,测得电流信号呈方波的形式。怎么来测得它的一个固定的等效电阻,或者用计算的方法怎么来计算?…

查看全部问答>

MC9S12XS128英文版资料

希望资料对各位有所帮助。…

查看全部问答>

AECQ认证机构有哪些?如何联系?

请教各位,AECQ100 101等的认证机构有哪几家呀?如何联系? 找了好久,始终没找到,谢谢各位!…

查看全部问答>