1、1福建农林大学金山学院 嵌入式系统原理及应用 课程设计报告设计题目 看门狗系统的 设计 专业年级 13 级电子科学与技术 姓 名 * 学 号 2成 绩 2016 年 6 月 28日看门狗系统的设计学号:136711069 姓名:江建淡摘要:在嵌入式应用中,CPU 必须可靠工作,系统由于种种原因,程序运行时会不按指定指令运行,导致死锁,系统无法运行下去,这时需能使系统复位即可使程序重新投入运行。看门狗(Watch Dog)技术就是实现崩溃系统的自动恢复,保证系统的稳定性。一、 课程设计目的 (1) 了解 WATCHDOG 的作用; (2) 掌握 WATCHDOG 的使用方法。二、课程设计内容 (
2、1)熟悉嵌入式开发环境的建立和使用(2)演绎看门狗的功能3三、设计内容看门狗 WDT 的基本原理:设某系统程序完整运行一周期的时间是 Tp,看门狗的定时周期为 Ti,TiTp,在程序运行一周后就重新设置定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在 Tp 时刻修改定时器的计数值,定时器将在 Ti 时刻溢出,引发系统复位,是系统得以重新运行,从而起到监控作用。看门狗定时器的组成框图它唯一的时钟源 MCLK,内部有 8 位预分频器(由WTCON15:8选择,最大 281)将 MCLK 首次分频,通过与分屏器分频的值称为预分频值,然后按照 16、32、64 和 12
3、8 的系数通过多路选择开关(MUX)进行二次分频,这次分频的值称为分频系数,在看门狗定时器的控制寄存器作用下(WTCON4:3)选择所需分频系数,得到 WTD 计数所需时钟,通过内部递减计数器(16 位)WTC 减法计数,当没有加以干预,计数到 0 时,产生中断输出或产生复位信号 RESET 使系统复位。 (如下看门狗定时器的组成框图)ARM7TDMI-S 是一个通用的 32 位微处理器,它可提供高性能和低功耗。ARM结构是基于精简指令集计算机(RISC)原理而设计的。指令集和相关的译码机制比复杂指令集计算机要简单得多。这样使用一个小的、廉价的处理器核就可实现很高的指令吞吐量和实时的中断响应。
4、使用了流水线技术,处理和存储系统的所有部分都可连续工作。通常在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出。4看门狗通过检查各应用任务是否在规定的时间内对其 “ 喂软狗”来确定各任务的运行状态,硬件看门狗通过检查软件看门狗是否在规定的时间内对其 “ 喂狗”来实现对监视器任务的监视通过微 处理器的定时器中断机制,为每个任务分配计时单元和运行标志系统具体的执行操作如下: (1 )系统中某任务空闲时,以小于 “ 喂软狗”设定的时间间隔为周期,周期性地 “ 喂软狗” (2 )在该任务执行时,预计执行所需的最长耗时,并用稍大于该最大耗时的时问间隔设置监视器中与 其对应的定时器参数
5、,同时中断周期性 “ 喂软狗”模块,启动监视器任务中的定时器倒计数当该任务正常执行完毕时,发送信号 “ 喂软狗” ,对定时器清零,复位该任务供下次使用,同时恢复周期性 “ 喂软狗”模块 (3 )当任务出现异常时,不能在设定的时间间隔内完成该任务,不能对软件看门狗及时清零,使得监 视器中相应的定时器溢出,监视器任务通过内核服务发送指令,把该任务的堆栈地址指到其起始地址,重启该任务,累计其复位次数,同时把该任务的计时器清零如果在设定的次数内不能够有效启动该任务,软件看门狗则延时喂内置硬件看门狗,内置看门狗计数器溢出,自动重启系统当系统主程序出现问题或者系统硬件出问题时,软件按看门狗也延迟 “ 喂狗
6、” ,重新启动系统,以确保系统长5时间稳定运行程序框图6四、 设计结果五、 设计体会与心得虽然在做这个课设的过程中遇到的问题比较多,但这也恰恰让我自己认识到自己的不足。通过对这次对嵌入式系统原理及应用的课程设计,让我更近一步地认识到看门狗的具体原理与实现该功能的流程。巩固了课本的知识也拓展了嵌入式的实践流程。同时这次实验让我明白不论是在做实验还是在今后的学习中,都应该有一种坚定不移不达目的不罢休的信念,只有这样才能达到自己的最终目标!成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目
7、标靠近,才会取得自己所要追求的成功。7参考文献【1】马维华,白延敏M 1 北京:邮电大学出版社, 2015.1。 【2】陈赜.嵌入式技术原理与应用.北京航空航天大学出版社 【3】周立功.ARM 嵌入式系统基础教程M.北京:北京航空航天大学出版社,20081程序附件/*Copyright (c)*/#ifndef _CONFIG_H #define _CONFIG_H/This segment should not be modified#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endiftypedef unsign
8、ed char uint8; /* defined for unsigned 8-bits integer variable 无符号 8 位整型变量 */typedef signed char int8; /* defined for signed 8-bits integer variable 有符号 8 位整型变量 */typedef unsigned short uint16; /* defined for unsigned 16-bits integer variable 无符号 16 位整型变量 */typedef signed short int16; /* defined for
9、 signed 16-bits integer variable 有符号 16 位整型变量 */typedef unsigned int uint32; /* defined for unsigned 32-bits integer variable 无符号 32 位整型变量 */typedef signed int int32; /* defined for signed 32-bits integer variable 有符号 32 位整型变量 */typedef float fp32; /* single precision floating point variable (32bits
10、) 单精度浮点数( 32 位长度) */2typedef double fp64; /* double precision floating point variable (64bits) 双精度浮点数( 64 位长度) */*/* ARM specital code */* ARM 的特殊代码 */*/This segment should not be modify/这一段无需改动#include “LPC2124.h“#include /*/*Application Program Configurations*/* 应用程序配置 */*/This segment could be mo
11、dified as needed./以下根据需要改动/*/*Configuration of the example */* 本例子的配置 */3/*/* System configuration .Fosc、Fcclk 、Fcco、Fpclk must be defined */* 系统设置, Fosc、Fcclk、Fcco、Fpclk 必须定义*/#define Fosc 11059200 /Crystal frequence,10MHz25MHz,should be the same as actual status. /应当与实际一至晶振频率,10MHz25MHz,应当与实际一至/#d
12、efine Fcclk (Fosc * 4) /System frequence,should be (132)multiples of Fosc,and should be equal or less than 60MHz. /系统频率,必须为 Fosc 的整数倍(132) ,且=60MHZ#define Fcco (Fcclk * 4) /CCO frequence,should be 2、4、8、16 multiples of Fcclk, ranged from 156MHz to 320MHz. /CCO 频率,必须为 Fcclk 的 2、4、8、16 倍,范围为156MHz320MHz#define Fpclk (Fcclk / 4) * 1 /VPB clock frequence , must be 1、2、4 multiples of (Fcclk / 4)./VPB 时钟频率,只能为(Fcclk / 4) 的 1、2、4 倍#include “target.h“ /This line may not be deleted 这一句不能删除#endif/*End Of File*/