查看: 737|回复: 0

【ClassA20类库分析】9.WatchDog类的使用

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-11-21 09:21:38 | 显示全部楼层 |阅读模式
    分享到:
    WatchDog大家比较熟悉了,主要用于系统崩溃后的自动复位或主动复位的一种方式,在无人职守的系统中必不可少。但是一般的人机交互的系统中,它默认是被关闭的,要使用之前就要先打开它,下面就来看看它的使用方法。在使用之前,请先在https://github.com/tjCFeng/ClassA20下载ClassA20类库。
       
    特别要注意一下,要使用WatchDog,需要先打开OSC24M的时钟源,因为WatchDog就是靠它来计算时间的。好在系统默认已经是打开的不用重复操作,当然也可以手动指定一下。
       
    WatchDog指定了复位时间间隔,从0.5秒到16秒,可以根据自己的需要来设定。在这个间隔时间之内喂狗就能保证系统继续运行,否则会强制复位。
       
    看看它的类定义:

       
    因为只有一个看门狗,所以它也是一个单例的类。它的属性也不多,只有指定间隔时间和是否强制复位,至于方法嘛,只有启动、停止和喂狗三个,可以在任何时候调用。
       
    由于需要持续的执行喂狗操作,看门狗在有操作系统的使用,最好用线程来完成。线程中是一个循环,根据自己指定的间隔时间来等待,超时后喂狗,然后继续等待。

       
    free pascal中使用线程最好是以类的方式来实现。直接调用CreateThread之类的API也能够正常运行,但是这样和操作系统太过紧密,大大降低了可移植性,这是不推荐的。在使用线程类之前,要在uses中引用pthreads单元。
       
    实验起来,当没有启动线程的时候,到了看门口的设定时间,系统被强制重启了,如果打开了线程,则系统没有影响继续运行。这个效果照不出来,所以就不上图片了。
       
    到此为止,Allwinner最最基本的东西已经讲的差不多了,下一节讲述一下TWI也就是IIC的操作。TWI的用处很多,所以下一节准备正式制作一个实用程序,并当作现阶段ClassA20类库分析的一个结尾,后面再添加内容时再随时补充进来。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 12:15 , Processed in 0.125992 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.