下载搜学网app
查学校 查学区 查辅导 查饭桌 查询中考数据
logo 点击咨询

讯为itop4418开发板实现看门狗功能


讯为的itop4418开发板,提供了配套的android4.4的全部源码。在很多应用场景中,都需要实现看门狗(watch dog)功能,现将4418开发板的实现细节说明如下。

首先需要说明的是,看门狗的实现方式有两种:

(1)系统层看门狗:完全由系统驱动层实现,喂狗操作也由系统内核完成,此时的看门狗监控系统内核的运行状态,在内核发生异常时自动重启系统。

(2)系统层+应用层看门狗:系统层和应用层合作实现的看门狗,喂狗操作由应用层完成。在超过规定的时间没有喂狗时,系统将自动重启。

这两种方式的看门狗,实现方式基本是一样的,仅仅存在很小的差异。

  1. 步骤1:设定看门狗的超时时间

    首先找到看门狗功能对应的驱动文件,位于drivers/watchdog/nxp_wdt.c,用vi编辑器打开这个文件,找到其中的CONFIG_NXP_WATCHDOG_DEFAULT_TIME 宏定义,即为看门狗的超时时间,默认值为10秒,可自行设定为你需要设定的时间。

  2. 步骤2:linux 内核配置

    输入:make menuconfig 命令,打开内核配置界面,依次找到“Device Drivers”-》“Watchdog Timer Support”,如下图:

    menuconfig.jpg

    继续点击“回车”进入 watchdog的详情设置界面,


    menuconfig1.jpg

  3. 依次点选“WatchDog Timer Driver Core”、"NXP Watchdog"、"/sys/devices/platform/wdt/soft (sysfs interface)"共三个选项。完成后的界面如下图所示:

    menuconfig2.jpg

      这个时候就到了说明上述的两种看门狗的区别了。如果点选了“do keepalive using watchdog task for cpu reset in task hung state (NEW)”,就会启动内核喂狗进程,实现的是内核看门狗;不点选这一选项,系统就不会启动内核喂狗进程,由应用层喂狗。

    配置完成后,保存内核配置并退出,运行编译脚本生成新的系统镜像烧写到开发板。

  4. 验证看门狗功能是否有效

    新的镜像烧写完成后,启动开发板,在console下输入:ls /dev/watchdog,可以看到有看门狗的设备节点了(默认状态下,看门狗是关闭的)。

     然后使用adb或者手机助手工具上传附件里面的watchdog测试工具到开发板 上(我这里上传到了”/sdcard“目录下),然后 使用cp 命令拷贝watchdog 文件到“/data”目录下,并使用chmod命令赋予watchdog文件执行权限,接着就可以启动看门狗测试了。

   watchdog 会每隔一秒喂狗一次,如下图所示

menuconfig3.jpg

要测试看门狗是否有效,需要中断喂狗程序的执行,看是否重新启动。

 用“Ctrl+c”中断watchdog 的运行,过10 秒钟(默认10秒,如果修改过的话就等待修改过的时间),看门狗会复位系统,重新启动。如下图:


menuconfig4.jpg

后注:

   其实这个看门狗的实现并不是非常简单,如果研发的设备具有驱动层模块的话,完全可以与应用层的交互活动结合起来,自己实现一个看门狗功能,还能减少系统资源的开销。后续博文将介绍内核层编程实现看门狗给的方法。


评论