完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1、在嵌入式产品中,为了方便Linux操作系统在异常情况下,能够自动复位,一般需要引入看门狗。看门狗其实就是在一定的时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,如果计数器溢出就会产生CPU产生一个复位信号使得系统重启--俗称被狗咬。如果在一定的时间内对看门狗及时喂狗,不产生复位信号。 2、正常的Linux开发板中,都会集成看门狗定时器:WDOG1 普通的看门狗,支持产生中断信号或者复位CPU。 相应的设备节点在对应的路径下为:/dev/watchdog0 /dev/watchdog1等。 3、看门狗应用编程实验代码如下: #include #include #include #define WDOG_DEV “/dev/watchdog” int main(int argc,char *argv[]) {undefined struct watchdog_info info; int timeout; int time; int fd; int op; /* 打开看门狗 */ fd = open(WDOG_DEV, O_RDWR); if (0 > fd) { fprintf(stderr, "open error: %s: %sn", WDOG_DEV, strerror(errno)); exit(EXIT_FAILURE); } /* 打开之后看门狗计时器会开启、先停止它 */ op = WDIOS_DISABLECARD; if (0 > ioctl(fd, WDIOC_SETOPTIONS, &op)) {undefined fprintf(stderr, "ioctl error: WDIOC_SETOPTIONS: %sn", strerror(errno)); close(fd); exit(EXIT_FAILURE); } timeout = atoi(argv[1]); if (1 > timeout) timeout = 1; /* 设置超时时间 */ printf("timeout: %dsn", timeout); if (0 > ioctl(fd, WDIOC_SETTIMEOUT, &timeout)) {undefined fprintf(stderr, "ioctl error: WDIOC_SETTIMEOUT: %sn", strerror(errno)); close(fd); exit(EXIT_FAILURE); } /* 开启看门狗计时器 */ op = WDIOS_ENABLECARD; if (0 > ioctl(fd, WDIOC_SETOPTIONS, &op)) {undefined fprintf(stderr, "ioctl error: WDIOC_SETOPTIONS: %sn", strerror(errno)); close(fd); exit(EXIT_FAILURE); } /* 喂狗 */ time = (timeout * 1000 - 100) * 1000;//喂狗时间设置 us 微秒、在超时时间到来前 100ms 喂狗 for ( ; ; ) {undefined usleep(time); ioctl(fd, WDIOC_KEEPALIVE, NULL); } } 总结:1、实例的代码很简单,利用参数传进来相应的超时时间,需要传入一个参数作为看门狗超时时间。2、Linux系统下都会有常用硬件的驱动节点,直接调用即可控制硬件。 |
|
|
|
只有小组成员才能发言,加入小组>>
3322 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9070 浏览 16 评论
4090 浏览 18 评论
1190浏览 3评论
613浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 11:53 , Processed in 1.035838 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号