[發明專利]一種基于嵌入式系統的喂狗方法及裝置在審
| 申請號: | 201410045951.0 | 申請日: | 2014-02-08 |
| 公開(公告)號: | CN103885847A | 公開(公告)日: | 2014-06-25 |
| 發明(設計)人: | 凌興鋒;黃健安 | 申請(專利權)人: | 京信通信系統(中國)有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07 |
| 代理公司: | 北京同達信恒知識產權代理有限公司 11291 | 代理人: | 張愷寧 |
| 地址: | 510663 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 嵌入式 系統 方法 裝置 | ||
技術領域
本發明涉及計算機技術領域,尤其涉及一種基于嵌入式系統的喂狗方法及裝置。
背景技術
在嵌入式系統中,為了使系統在異常情況下能自動恢復,一般都會引入看門狗電路;看門狗電路其實就是一個計數器,當看門狗啟動后,計數器開始自動計數,經過一定時間計數器溢出就會對微處理器產生一個復位信號使系統重啟,當系統正常運行時,需要在看門狗允許的時間間隔內對看門狗計數器清零,也即喂狗,不讓復位信號產生。
看門狗分為硬件看門狗和軟件看門狗,硬件看門狗是采用一個獨立的定時器電路作為看門狗電路,應用程序在執行過程中每隔一定的時間通過微處理器的通用輸入/輸出(General?Purpose?Input?Output,GPIO)管腳對該定時器進行喂狗操作,使看門狗不溢出,但是,如果程序出現異常跑飛,就不能及時對看門狗喂狗,這將導致看門狗溢出,產生復位信號,使微處理器復位,如圖1所示,一般可以采用TPS3823芯片組成硬件看門狗電路;對于軟件看門狗,是在微處理器內部實現的看門狗功能,也即以內部時鐘取代外部硬件定時器,這種實現方式的缺點是:當微處理器本身異常時,內部時鐘產生異常,看門狗無法正常工作,從而導致系統在異常狀態下無法恢復,因此,在實際應用中,一般情況下多采用硬件看門狗。
針對引入Linux操作系統的嵌入式系統,看門狗的引入較好的保障了Linux操作系統的穩定運行,但同時也帶來了一些需要解決的問題:看門狗電路監控的目標是系統正常啟動后的應用程序,但是在應用程序正常工作之前,嵌入式系統有一個引導加載底層軟件的過程,這個過程通常會占用二十幾秒的時間,一般都超過看門狗的時間間隔,導致操作系統在加載過程中復位,永遠無法加載成功。
為了解決嵌入式系統上電啟動加載過程中看門狗溢出,產生復位信號,導致系統無法正常啟動的問題,目前較常用的方法是,修改操作系統內核,將看門狗設成在操作系統內核啟動過程中無效,在操作系統啟動完成后再打開看門狗;但是,采用這種方法,若在操作系統啟動階段出現異常,將無法自動恢復,降低了系統的可靠性。
發明內容
本發明實施例提供一種基于嵌入式系統的喂狗方法及裝置,用以解決在嵌入式系統上電啟動加載過程中看門狗溢出,產生復位信號,導致系統無法正常啟動的問題。
本發明實施例提供一種基于嵌入式系統的喂狗方法,該方法包括:
在操作系統啟動過程中,監控當前的任務階段;
在當前的任務階段占用的時間長度大于硬件看門狗復位時間間隔時,周期性執行喂狗操作;其中,所述喂狗操作的執行周期小于所述看門狗復位時間間隔。
可選地,所述操作系統為linux操作系統;所述任務階段為引導加載Bootloader的第二階段中的任意一個任務階段。
可選地,所述Bootloader的第二階段中的各個任務階段包括:閃存Flash讀寫階段、循環冗余校驗碼(Cyclic?Redundancy?Check,CRC)校驗階段、循環等待階段。
可選地,所述操作系統為linux操作系統;所述任務階段為操作系統內核運行階段中的任意一個任務階段。
可選地,所述操作系統內核運行階段中的各個任務階段包括:通用輸入/輸出(General?Purpose?Input?Output,GPIO)驅動加載成功之前的內核解壓縮階段、實時時鐘(Real-Time?Clock,RTC)驅動加載階段、GPIO驅動加載階段,GPIO驅動加載成功之后至看門狗Watchdog驅動加載成功之前的Watchdog驅動加載階段,Watchdog驅動加載成功之后的內核加載根文件系統階段、初始化階段。
可選地,所述方法還包括:
在操作系統正常運行后,通過創建的任務監控線程周期性執行喂狗操作,并監控多個任務線程的運行狀況;
在通過所述任務監控線程確定至少一個任務線程出現故障后,停止執行喂狗操作,以使看門狗產生復位信號。
可選地,所述監控多個任務線程的運行狀況,包括:
通過所述任務監控線程周期性檢測每個任務線程內設置的計數器的值;其中,每個任務線程在正常運行的情況下,將計數器的值按設定時間間隔加1,所述設定時間間隔小于所述任務監控線程檢測每個任務線程內設置的計數器的值的檢測周期;
若檢測到至少一個任務線程內設置的計數器的值為0,則確定所述至少一個任務線程出現了故障;若檢測到每個任務線程內設置的計數器的值都大于0,則確定各個任務線程都正常,同時,將各個任務線程內設置的計數器的值清零。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于京信通信系統(中國)有限公司,未經京信通信系統(中國)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410045951.0/2.html,轉載請聲明來源鉆瓜專利網。





