作为飞凌嵌入式经典开发平台三星S3C6410系列开发板,广泛应用于各个领域,下面就在在这个平台上实现看门狗功能的方法做一个讨论。
本次讨论的看门狗功能的实现功能只限于飞凌嵌入式的S3C6410BSP基础上进行改动,其他的BSP原理相同,但具体操作不保证完全一致。
看门狗实际是一个定时器,内部有个计数器,每当时钟信号到来时,计数器寄存器减一。如果减到0,则重新启动系统;如果在减到0之前,系统又设置计数器为一个较大的值,则系统不会重启。系统正常时,就不会重启;当系统发生故障时,不能设置计数寄存器,系统重新启动。
1 在SOC下的timer中有系统看门狗的实现,但必须定义ENABLE_WATCH_DOG才能启用该功能
如下目录,盘符按实际设置:E:\WINCE600\PLATFORM\COMMON\SRC\SOC\S3C6410_SEC_V1\OAL\INC\S3C6410_BASE_REGS.H 和E:\WINCE600\PLATFORM\SMDK6410\SRC\INC\BSP_CFG.H中定义
#define ENABLE_WATCH_DOG 1
定义时注意编译开关的限制 这样做系统按他的方式启动看门狗,也可以不定义,自己加入程序
2.在watchdog.c中有相应的对看门狗寄存器的设置
3.以上必须在平台(6410)\SRC\OAL\LALLIB\INIT.C 的设置下才有效,否则,看门狗被系统屏蔽(MASK),对寄存器的设置无效
具体如下:
4.各个系统怎样设置,以各应用定义时间,飞凌嵌入式默认设置为MASK该功能
5.重新编译系统,烧写镜像,可以在看门狗启动部分输出信息,查看。
以上为看门狗的具体实现方法,当然,完成一个应用系统,这些功能是不够的,需要对看门狗功能的加强和完善,注意保证我们的应用程序的正常运行,才能完成我们的预期功能。