Linux看门狗管理及在DM8168芯片上的应用研究

时间:2024-09-20 09:46:27 来源:作文网 作者:管理员

引 言

随着智能终端及移动互联网的发展,Linux系统被应用到越来越多的嵌入式设备中,如移动通信基站、Android智能手机、智能手环等。不同领域的应用都对Android/Linux系统的可靠性及可用性有严格的要求。在嵌入式系统中,CPU必须可靠工作,即使因为某种错误或异常进入错误状态,系统应该可以自动复位,看门狗也可以在系统进入错误状态后的一段时间内重启复位,以实现系统自动从故障恢复。

1 看门狗的概✌念

看门狗是一个进行累加计数的定时器,在其启动后,如果在设定的时间间隔内对定时器清零,定时器就不会溢出,也不会产生复位信号;如果在设定的时间间隔内,没有对定时器清零,定时器就会溢出产生复位信号,从而实现系统重启。根据实现方式的不同,可以分为硬件看门狗和软件看门狗。硬件看门狗是利用定时器电路实现,其输出连接到电路的复位端,程Ⓐ序在设定间隔内对定时器清零。因此程序正常工作时,定时器不会溢出;如果程序出现故障,未能在设定间隔周期内执行清零操作,就使得看门狗定时器溢出,产生复位信号并重启系统。软件看门狗原理上同硬件看门狗一样,只是将硬件电路上的定时器用操作系统内部的软件定时器代替,这样可以简化硬件电路设计。但软件定时器在可靠性方面不如硬件定时器,在一些异常的情形下,比如处理器或操作系统内部发生故障时,会导致软件定时器不可用,也就无法检测到这些故障。

2 Linux系统对看门狗的支持

Linux内核从1.3.51版本开始提供硬件、软件看门狗的驱动支持。随着内核版本不断更新与发展,Linux内核对各种不同类型的硬件看门狗提供了广泛的支持。根据访问方式的不同,Linux系统下的设备驱动程序分为字符设备及块设备。看门狗在Linux系统下作为字符设备来处理,/dev/watchdog是一个主设备号为10、从设备号为130的字符设备节点。Linux系统下的硬件看门狗,必须有硬件电路支持,设备节点/dev/watchdog对应着真实的物理设备,不同类型的硬件看门狗设备由相应的硬件驱动管理。

3 Linux系统下看门狗的访问

前文提到,Linux系统将看门狗作为一个字符设备来管理。本节将以TI公司推出的高清视频处理芯片TMS320DM8168芯片为例,介绍Linux下访问及操作看门狗的逻辑层次。DM8168芯片将高清多通道系统的所有捕获▲、压缩、显示以及控制功能整合于同一芯片,芯片内部集成了硬件看门狗,外围连接电路如图1所示。硬件看门狗溢出同时产生复位及中断信号,复位信号会复位整个芯片,中断信号可以在捕获到中断事件后,在中断处理函数中增加一些额外的操作。

4 Linux系统下看门狗的管理

Linux启动过程依次为U-Boot、内核及文件系统,最后是应用程序启动。在Linux系统启动过程中,启用看门狗可以有效监测系统状态,若异常导致看门狗溢出,系统会自动复位以试修复问题,从而提高系统的可靠性及健壮性。本节以DM8168开发板为例,介绍Linux各个启动阶段看门狗的管理。

4.1 U-Boot启动阶段

开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot启动函数。U-Boot启动内核的过程如下:① 硬件设备初始化。② 加载U-Boot第二阶段代码到RAM 空间。③ 设置好堆栈,跳转到start_armboot函数入口。④ start armboot是U-Boot执行的第一个C语言函数。⑤ 初始化本阶段使用的硬件设备。⑥ 检测系统内存映射。⑦ 将内核从Flash读取到RAM 中。⑧ 设置内核启动参数,然后启动硬件看门狗,通过访问控制寄存器来实现。该阶段可以设置看门狗超时溢出时间为120s。以门狗,以方便用户调试U-Boot、设置内核相关参数等信息。⑩ 如果没有收到用户中断命令,U-£Boot会拷贝内核镜像并解压内核,开始启动内核调用。

4.2 内核启动阶段

在U-Boot加载了内核之后,系统就进入内核启动阶段,此时,看门狗的管理控制也要由内核来接管。内核启动主要包括内核自解压、注册及加载硬件驱动程序、Flash分区等。在内核启动时,内核程序会注册硬件看门狗的驱动程序,并执行probe探针函数,此时,内核接管U-Boot阶段的看门狗,即先关闭看门狗,然后再重新打开看门狗,并加载新的超时时长;

4.3 应用程序启动阶段

文件系统启动后,用户的应用进程也会开始启动。在这个阶段,通常会创建一个独立的守护进程,来接管看门狗。守护进程启动时,首先关闭内核阶段启动的看门狗,并重新启动看门狗设置超时时长,实现接管内核阶段看门狗的功能。在看门狗启动后,守护进程可以周期性地进行喂狗操作,并通过心跳的方式同用户进程通信,在收不到用户进程的心跳包消息时,即停止喂狗操作,这样看门狗会超时溢出导致系统重启,以进行故障修复。

5 DM8168看门狗的管理

除了前文提到的Linux系统下看门狗的基础管理,DM8168芯片的硬件看门狗外围输出引脚,可以同时支持Reset和Interrupt信号,功能更加强大。如果只是期望看门狗超时后能重启复位板卡,参考前节提到的方法,依次在Linux启动的各个阶段启用及管理看门狗即可,因为看门狗的溢出引脚直接连接电源及复位管理模块。

结 语

本文 ッ以TI公司的TMS320DM8168芯片为例,详细介绍了Linux系统从U-Boot启动、内核启动到文件系统加载及用户程序启动过程中看门狗的启用及管理,通过不同阶段管理看门狗,可以保证系统在任何一个可能出现问题的阶段,自动重启以修复故障,从而有效提高系统的可靠性。在嵌入式设备越来越普及的今天,设备自恢复功能会具有极大的竞争力。


热门排行: 教你如何写建议书