OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3691|回复: 0

详解linux 看门狗驱动编写

[复制链接]

153

主题

310

帖子

0

精华

高级会员

Rank: 4

积分
673
金钱
673
注册时间
2019-3-26
在线时间
18 小时
发表于 2019-4-11 11:13:04 | 显示全部楼层 |阅读模式
  本篇文章主要介绍了详解linux看门狗驱动编写,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  看门狗是linux驱动的一个重要环节。某些特殊的设备,有时候需要放在一些环境恶劣的地方,比如电信设备。但是,任何软件都不可能100%没有bug。如何保证软件在遇到严重bug、死机的时候也能正常运行呢,那么看门狗就是有效的一种方法。看门狗一般要求用户定时喂狗,如果一段时间没有喂狗的话,那么系统就会自动重启。今天,我们就来看看这个看门狗驱动怎么编写?

  1、代码目录

  drivers/watchdog

  2、阅读目录下的Kconfig,可以找一个s3c模块macro

  configHAVE_S3C2410_WATCHDOGboolhelpThiswillincludewatchdogtimersupportforSamsungSoCs.Ifyouwanttoincludewatchdogsupportforanymachine,kindlyselectthisintherespectivemach-XXXX/Kconfigfile.configS3C2410_WATCHDOGtristate"S3C2410Watchdog"dependsonHAVE_S3C2410_WATCHDOG||COMPILE_TESTselectWATCHDOG_COREselectMFD_SYSCONifARCH_EXYNOShelpWatchdogtimerblockintheSamsungSoCs.Thiswillrebootthesystemwhenthetimerexpireswiththewatchdogenabled.Thedriverislimitedbythespeedofthesystem'sPCLKsignal,sowithreasonablyfastsystems(PCLKaround50-66MHz)thenwatchdogintervalsofoverapproximately20secondsareunavailable.ThedrivercanbebuiltasamodulebychoosingM,andwillbecalleds3c2410_wdt

  3、S3C2410_WATCHDOG主要依赖WATCHDOG_CORE,可以继续跟踪Makefile

  obj-$(CONFIG_S3C2410_WATCHDOG)+=s3c2410_wdt.o

  4、macro只依赖一个s3c2410_wdt.c文件,继续查看

  staticSIMPLE_DEV_PM_OPS(s3c2410wdt_pm_ops,s3c2410wdt_suspend,s3c2410wdt_resume);staticstructplatform_drivers3c2410wdt_driver={.probe=s3c2410wdt_probe,.remove=s3c2410wdt_remove,.shutdown=s3c2410wdt_shutdown,.id_table=s3c2410_wdt_ids,.driver={.name="s3c2410-wdt",.pm=&s3c2410wdt_pm_ops,.of_match_table=of_match_ptr(s3c2410_wdt_match),},};module_platform_driver(s3c2410wdt_driver);

  5、确认driver为platform类型,继续在probe函数中查找有用的code

  ret=watchdog_register_device(&wdt->wdt_device);if(ret){dev_err(dev,"cannotregisterwatchdog(%d)\n",ret);gotoerr_cpufreq;}

  6、网上继续查找,寻找到和watchdog有关的数据结构

  staticconststructwatchdog_infos3c2410_wdt_ident={.options=OPTIONS,.firmware_version=0,.identity="S3C2410Watchdog",};staticconststructwatchdog_opss3c2410wdt_ops={.owner=THIS_MODULE,.start=s3c2410wdt_start,.stop=s3c2410wdt_stop,.ping=s3c2410wdt_keepalive,.set_timeout=s3c2410wdt_set_heartbeat,.restart=s3c2410wdt_restart,};staticconststructwatchdog_devices3c2410_wdd={.info=&s3c2410_wdt_ident,.ops=&s3c2410wdt_ops,.timeout=S3C2410_WATCHDOG_DEFAULT_TIME,};

  7、找到设备注册函数、函数结构基本就算结束了,VPS云主机当然有中断的话,也可以确认一下

http://www.iis7.com/c/90/
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表