《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Linux的嵌入式系統全程嘿狗策略
基于Linux的嵌入式系統全程嘿狗策略
單片機與嵌入式系統應用
江蘇東大金智建筑智能化系統工程有限公司 張長順 黃建元
摘要: 基于Linux的嵌入式系統全程嘿狗策略,摘 要 Linux嵌入式系統在啟動過程中如何喂狗是提高嵌入式系統可靠性需要解決的問題,傳統做法是用復雜看門狗電路或在啟動過程中關閉看門狗。本文提出了一種嵌入式系統喂狗策略,可以實現系統在啟動過程和運行過程中全
關鍵詞: 軟件 Linux 看門狗
Abstract:
Key words :

摘 要 Linux嵌入式系統在啟動過程中如何喂狗是提高嵌入式系統可靠性需要解決的問題,傳統做法是用復雜看門狗電路或在啟動過程中關閉看門狗。本文提出了一種嵌入式系統喂狗策略,可以實現系統在啟動過程和運行過程中全程喂狗。基于簡單的硬件電路,在系統不同過程的程序中插入喂狗程序。實驗表明,該方法簡單可行,成本較低,是一種嵌入式系統的可靠喂狗方法。
關鍵詞 嵌入式系統 看門狗 全程喂狗 IMP706 Linux


引 言
    在嵌入式系統中,為了使系統在異常情況下能自動恢復,一般都會引入看門狗電路。看門狗電路其實就是一個計數器。當看門狗啟動后,計數器開始自動計數,經過一定時間計數器溢出就會對CPU產生一個復位信號使系統重啟。系統正常運行時,需要在看門狗允許的時間間隔內對看門狗計數器清零也即喂狗,不讓復位信號產生。
    當前在帶Linux操作系統的嵌入式系統中,由于Linux操作系統加載時間較長(如lO~30 s),一般都超過看門狗的時間間隔(典型值為1.6 s);而如果不采取特殊措施,則系統在Linux操作系統加載過程中復位,Linux操作系統永遠無法加載成功。為了解決這個問題,通常有兩種方案:做一個看門狗的時間間隔更長的硬件電路;修改內核,在內核啟動過程中將看門狗設成無效。以上方案無法解決嵌入式系統在操作系統啟動階段的失效問題,降低了系統可靠性。
    本文提出了一種嵌入式系統全程喂狗策略及實現方法,從系統上電、引導程序(Bootloader)、操作系統內核直至應用階段都啟用看門狗。實驗表明,該方法簡單可行,成本較低,在嵌入式系統的全過程中都可以實現喂狗策略,提高了系統可靠性。


1 系統總體設計
    采用IMP706芯片組成硬件看門狗電路(看門狗的時間間隔為1.6 s),在操作系統程序(包括Bootloader)和應用程序中插入喂狗程序,這些喂狗程序運行時間間隔小于看門狗的時間間隔(本設計選為1 s)。這樣做可以保證:如果系統正常工作,系統可以在小于看門狗的時間間隔內不斷進行喂狗動作,硬件看門狗的計數器不斷清零,不產生復位信號;如果系統非正常工作,喂狗動作失效,硬件看門狗的計數器在1.6 s后溢出,對CPU產生復位信號使系統重啟。
1.1 看門狗電路設計
    圖1為看門狗電路原理,采用IMP706芯片組成硬件看門狗電路,通過電平轉換器件74AVClT45,硬件看門狗器件的ST腳與中央處理器(CPU)的GPIO3腳相連??撮T狗器件的PRST腳與IN腳接到復位開關,RST腳接到CPU的RESET腳,當復位開關被觸動或看門狗器件的計數器溢出時,看門狗器件的RST腳輸出復位信號給CPU的RESET腳,CPU復位重啟。

1.2 喂狗策略及實現
1.2.1 Bootloader階段
    在Boot1oader階段(本設計采用U—boot,但不限于此),喂狗策略是在Bootloader的程序中不同位置插入喂狗程序。具體做法是:由于Bootoader第一階段的啟動不會超過1.6 s,因此只需在Bootoader的第二階段,如Flash讀寫、CRC校驗、循環等待等處,插入喂狗代碼。喂狗代碼采用直接置位中央處理器的GPIO3狀態寄存器的方式進行。
    首先在特定平臺的定義頭文件include/conffigs/xxx.h中加入看門狗的宏定義:

   
    在lib_generic下的CRC校驗階段代碼crc32.c中加入如下代碼,實現CRC校驗階段喂狗:

   
1.2.2 Linux內核階段
    在Linux內核加載階段(采用MontaVista Linux操作系統,但不限于此),喂狗策略是在Linux內核程序的不同位置插入喂狗程序。具體做法是:首先在Linux內核階段1的內核解壓縮程序、RTC驅動加載程序、GPIO驅動加載程序適當代碼處插入喂狗代碼,喂狗代碼以直接取反中央處理器的GPIO3狀態寄存器的方式進行;在Linux內核階段2的Watchdog驅動加載程序適當代碼處插入喂狗代碼,喂狗代碼調用GPIO驅動,GPIO驅動內含取反中央處理器的GPIO3狀態寄存器的操作;在Linux內核階段3的內核加載根文件系統程序、init程序的適當代碼處調用Linux的Watchdog驅動,Watchdog驅動內含取反中央處理器的GPIO3狀態寄存器的操作。
    以上內核階段的劃分是以GPIO及Watchdog驅動的加載為標志的。GPIO驅動加載之前為內核階段1,GPIO驅動加載之后至Watchdog驅動加載之前為內核階段2,Watchdog驅動加載之后為內核階段3。
    下面示例說明內核解壓縮asm/arch/boot/compressed.c中喂狗的實現代碼:

    
    從以上代碼可以看出,它是內核階段l喂狗的典型方法,是直接取反GPIO3狀態寄存器的。
    下面示例說明內核階段2的喂狗方法(僅以加載RTC驅動為例):首先讓RTC驅動中包含GPIO的頭文件,然后在讀取RTC當前值的函數中調用GPIO驅動進行喂狗。

   
    為了能夠在內核階段3調用Watchdog驅動進行喂狗,需要在Watchdog驅動中導出喂狗函數以供內核階段3使用。Watchdog驅動喂狗也是調用GPIO驅動實現的,但Watchdog驅動一旦加載完成,以后的喂狗都通過調用Watchdog驅動完成。

   
1.2.3 程序運行階段
    圖2為多線程應用程序運行階段喂狗方法。在主程序中首先創建一個監控線程,它的優先級高于其他線程。監控線程在其他被監控的線程正常工作的情況下,一定時間內對看門狗進行喂狗操作,喂狗操作通過調用Watch—dog驅動來完成。如果某個線程出現故障,監控線程就不執行喂狗操作,也就達到這個線程出現故障時系統自動重啟的目的。如果監控線程自身出現故障,不能及時執行喂狗操作,看門狗也自動復位重啟。具體做法是,主程序首先啟動監控線程,然后依次啟動N個被監控的線程,每一線程內都設置一計數器。被監控的線程中首先對線程內的計數器初始化為O,在各個線程主循環中,對相應的計數器執行加1操作。監控任務首先啟動看門狗,進入循環。每隔M秒對各線程內的計數器進行檢驗,在M秒內每隔1 s要對看門狗喂狗,否則系統就會復位重啟。查詢N個計數器值是否為0,如果全都大于0,則說明對應接受監控的線程正常運行,然后對看門狗喂狗,并將N個計數器值清零。如果有任意一個計數器值為O,檢測到對應接受監視的線程出現故障需要重啟,這時不對看門狗喂狗,使得系統復位重啟。

    以下示例說明在應用中如何調用Watchdog驅動實現喂狗:

   
    總之,在系統不同階段,由于系統調用和封裝程度不同,看門狗的喂狗實現方法也不同:在Bootloader階段,直接取反中央處理器的GPIO3的狀態寄存器;在Linux內核階段1,采取取反中央處理器的GPIO3的狀態寄存器的方法進行;在Linux內核階段2,采取調用GPIO的驅動的方法進行;在Linux內核階段3,采取調用Watchdog驅動的方法進行;在應用程序運行階段,應用程序中的喂狗程序采取調用Watchdog驅動的方法進行,如圖3所示。

2 實驗結果
    我們在公司研發的智能視頻分析器項目中應用了本方法。該分析器采用TI DaVinci系列DSP芯片(TMS320DM6446)為CPU,用Monta Vista Linux作為操作系統。操作系統啟動時間約為20~30 s。采用本方法是為了保證系統在全過程中都能得到有效的失效恢復。在振蕩波抗擾度、電壓波動與閃爍、靜電放電、電快速瞬變脈沖群等EMC兼容性測試中,當各強度指標超過設備EMC兼容性設計強度時,系統失效,利用這種方式可以測試本方法在硬件失效時的效果。以靜電放電為例,設計放電等級為±6 kV(我們取±7 kV的強度等級),設備上電后,分別在1~30 s內每隔5 s及在120 s處進行靜電放電測試,經觀察設備都可以即時恢復。
    對軟件失效時本方法效果的測試,采用故障植入腳本的主動方式及系統長時間運行的被動方式進行測試。最終結果表明,設備在失效后可即時恢復。
    綜上所述,本全程喂狗的方法能確保系統在任一階段出現軟件或硬件故障時都能復位重啟。


結 語
    本文提出了一種嵌入式系統全程喂狗策略,包括硬件電路設計和軟件實現方法。該方法有如下特點:看門狗電路簡單,硬件只需一塊看門狗芯片,不需復雜的外圍邏輯電路,成本較低;系統全過程啟用看門狗,確保系統在任一階段出現軟件或硬件故障都能復位重啟,系統可靠性得到提高。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久精品网址| 欧美绝品在线观看成人午夜影视| 日韩一级免费| 亚洲一级二级| 欧美激情视频免费观看| 欧美日韩在线观看一区二区三区| 欧美精品一级| 欧美国产欧美亚州国产日韩mv天天看完整| 91久久嫩草影院一区二区| 国产精品视频精品| 亚洲在线成人| 亚洲综合精品| 国产亚洲精品bt天堂精选| 麻豆免费精品视频| 麻豆国产精品一区二区三区| 国产一区二区中文字幕免费看| 亚洲一级免费视频| 国产一级久久| 在线成人性视频| 91久久国产自产拍夜夜嗨| 亚洲欧美成人一区二区在线电影| 久久裸体视频| 欧美日韩一区二| 国产精品女人毛片| 欧美国产日韩xxxxx| 国产欧美一区二区三区另类精品| 欧美一区国产一区| 国产精品久久九九| 国产亚洲视频在线观看| 日韩视频免费大全中文字幕| 亚洲一区二区精品在线观看| 欧美三级视频| 亚洲综合电影一区二区三区| 日韩午夜激情av| 久久久久久久高潮| 免费亚洲一区二区| 日韩亚洲精品电影| 国产一区二区三区高清在线观看| 国语自产精品视频在线看| 国产一区二区av| 亚洲精品视频免费在线观看| 亚洲视频免费| 欧美日韩免费高清| 一区二区电影免费观看| 亚洲欧洲视频| 国产精品网站在线| 欧美视频在线观看免费| 欧美视频一区二区三区四区| 国产三级欧美三级| 午夜精品一区二区三区在线视| 久久精品国产久精国产思思| 欧美精品国产一区| 欧美在线免费一级片| 午夜一区二区三区不卡视频| 欧美精品在线免费播放| 亚洲免费观看高清完整版在线观看| 欧美中文在线观看| 亚洲天天影视| 艳女tv在线观看国产一区| 亚洲美女网站| 狠色狠色综合久久| 伊甸园精品99久久久久久| 欧美视频在线观看一区| 亚洲激情精品| 免费成人高清| 亚洲第一精品久久忘忧草社区| 韩国欧美一区| 麻豆精品91| 国产一区二区毛片| 亚洲视频精品在线| 中文一区二区| 欧美日本在线| 亚洲毛片av在线| 国产午夜精品理论片a级大结局| 狂野欧美性猛交xxxx巴西| 亚洲高清中文字幕| 在线天堂一区av电影| 美玉足脚交一区二区三区图片| 樱桃成人精品视频在线播放| 国产亚洲a∨片在线观看| 狠狠做深爱婷婷久久综合一区| 国产欧美日韩专区发布| 国产精品啊啊啊| 亚洲一区观看| 国产精品高清免费在线观看| 久久精品91久久久久久再现| 国产一区二区三区观看| 亚洲激情第一页| 国产精品久久久久久久久搜平片| 亚洲永久免费精品| 日韩午夜精品视频| 欧美成人一二三| 在线看欧美视频| 国产在线不卡视频| 国产午夜精品全部视频播放| 国内精品久久久久影院薰衣草| 久久久久久久999精品视频| 一区二区日韩伦理片| 亚洲欧美在线观看| 欧美成年视频| 国产精品久久久久久久9999| 每日更新成人在线视频| 这里只有精品电影| 国产精品www| 欧美国产一区二区三区激情无套| 亚洲作爱视频| 国产精品亚洲一区二区三区在线| 欧美在线观看一区| 激情小说亚洲一区| 国产精品九色蝌蚪自拍| 欧美日韩一区不卡| 亚洲成人在线网站| 午夜精品婷婷| 欧美日韩国产三级| 亚洲欧美日韩直播| 欧美一区二区日韩一区二区| 一本色道久久88综合日韩精品| 久久国产综合精品| 亚洲精品一区二区在线观看| 国产精品爱久久久久久久| 欧美高清不卡| 亚洲尤物视频网| 日韩视频在线一区二区三区| 国产精品久久久久久久久久久久久| 国产精品欧美风情| 国产视频一区欧美| 在线播放不卡| 久久久久久久激情视频| 亚洲午夜一二三区视频| 免费成人在线观看视频| 在线免费精品视频| 国产综合自拍| 黄色精品一二区| 欧美日本二区| 欧美性视频网站| 亚洲黄色在线视频| 一本色道久久加勒比88综合| 在线一区二区三区做爰视频网站| 欧美一区不卡| 欧美国产日韩视频| 亚洲美女在线视频| 欧美巨乳在线观看| 久久久精品一区二区三区| 欧美一区二区三区电影在线观看| 99国内精品| 欧美亚洲视频在线看网址| 先锋影院在线亚洲| 免费欧美日韩国产三级电影| 国产精品扒开腿做爽爽爽视频| 国产一区二区三区精品欧美日韩一区二区三区| 久久婷婷色综合| 亚洲国产婷婷综合在线精品| 91久久精品久久国产性色也91| 亚洲人被黑人高潮完整版| 欧美一区二区免费观在线| 国产精品美女一区二区在线观看| 欧美日韩在线视频一区二区| 一区免费视频| 久热综合在线亚洲精品| 亚洲电影在线看| 欧美日韩在线不卡| 影音先锋日韩资源| 欧美在线一二三| 欧美午夜无遮挡| 亚洲国产精品ⅴa在线观看| 欧美日韩亚洲系列| 国产揄拍国内精品对白| 激情五月婷婷综合| 在线成人av| 久久国产精品99久久久久久老狼| 亚洲一区二区成人在线观看| 国产精品免费一区二区三区观看| 篠田优中文在线播放第一区| 欧美视频一区| 欧美精品成人91久久久久久久| 久久综合狠狠综合久久综合88| 在线欧美不卡| 亚洲欧洲日本国产| 久久久亚洲午夜电影| 国产精品伦子伦免费视频| 国产精品久久久久秋霞鲁丝| 欧美a级片网站| 一区二区欧美亚洲| 国产日韩亚洲欧美综合| 一区精品在线播放| 免费91麻豆精品国产自产在线观看| 欧美视频专区一二在线观看| 国产精品久久久久久久久久直播| 国产精品高清在线| 国产精品一区视频| 亚洲国产日韩欧美综合久久| 欧美大香线蕉线伊人久久国产精品| 欧美一区二区日韩一区二区| 国产精品一区二区在线观看不卡| 一本色道久久综合亚洲精品按摩| 欧美一区国产在线| 欧美日韩性视频在线| 亚洲天天影视| 在线综合视频| 亚洲高清视频一区| 在线视频你懂得一区二区三区| 在线精品高清中文字幕| 美女日韩在线中文字幕| 久久久国产精彩视频美女艺术照福利| 国产综合精品一区| 久久久久久伊人| 一本久久青青| 噜噜噜在线观看免费视频日韩| 国产精品你懂的在线| 欧美日韩久久| 最新日韩av| 免费久久99精品国产自| 亚洲国产综合在线看不卡| 久久这里有精品15一区二区三区| 欧美视频不卡中文| 亚洲国产成人高清精品| 久久国产黑丝| 欧美日韩在线直播| 在线观看久久av| 国产精品日韩欧美综合| 亚洲视频在线播放| 先锋影音久久久| 日韩亚洲欧美综合| 日韩一级视频免费观看在线| 一区二区视频免费在线观看| 欧美激情亚洲| 久久不见久久见免费视频1| 欧美电影电视剧在线观看| 欧美性猛交xxxx乱大交蜜桃| 欧美日韩亚洲一区| 国产精品高潮呻吟久久| 亚洲成色999久久网站| 亚洲无玛一区| 国产精品自在在线| 麻豆国产精品777777在线| 亚洲一本视频| 中文在线资源观看视频网站免费不卡| 亚洲曰本av电影| 亚洲国产91精品在线观看| 久久国产精品72免费观看| 久久久久99精品国产片| 一区在线观看视频| 久久av资源网站| 午夜影视日本亚洲欧洲精品| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲丰满少妇videoshd| 欧美一区二区免费视频| 欧美一区二区视频网站| 国产视频一区在线| 欧美—级在线免费片| 欧美不卡在线视频| 91久久线看在观草草青青| 精品1区2区3区4区| 亚洲欧美影院| 99在线精品观看| 红桃视频国产精品| 久久精品国产久精国产爱| 国产精品视频观看| 在线播放亚洲一区| 久久久噜噜噜久久中文字幕色伊伊| 在线成人中文字幕| 一本到12不卡视频在线dvd| 免费人成精品欧美精品| 亚洲日韩视频| 欧美激情成人在线视频| 欧美网站大全在线观看| 99精品福利视频| 欧美精品一区三区| 亚洲精品美女免费| 欧美日韩国产123| 国产精品久久久久高潮| 99精品国产一区二区青青牛奶| 欧美激情在线免费观看| 亚洲国产精品久久久久秋霞影院| 欧美亚洲专区| 一本色道久久88综合日韩精品| 国产欧美精品在线| 欧美a级片一区| 在线观看日产精品| 国产精品私拍pans大尺度在线| 欧美日韩综合另类| 国产精品海角社区在线观看| 欧美性猛交99久久久久99按摩| 国产亚洲成精品久久| aa级大片欧美三级| 亚洲午夜在线| 欧美亚洲在线| 在线成人激情视频| 国模私拍一区二区三区| 亚洲精品1区| 国外精品视频| 亚洲三级免费| 在线看国产日韩| 久久精品国产清高在天天线| 欧美日韩调教| 欧美韩日精品| 久久久久久久97| 影音先锋成人资源站| 国产伦精品一区二区三区高清| 国产日韩欧美在线看| 亚洲人成人一区二区三区| 亚洲国产三级网| 亚洲国产一成人久久精品| 在线观看视频一区二区欧美日韩| 欧美激情在线| 久久久久免费视频| 欧美α欧美αv大片| 欧美国产精品久久| 欧美在线视频全部完| 欧美日韩午夜激情| 国产精品女同互慰在线看| 午夜精品一区二区三区在线播放| 亚洲综合色丁香婷婷六月图片| 久久精品中文| 亚洲麻豆av| 欧美日韩四区| 欧美亚洲免费高清在线观看| 欧美成人免费在线| 欧美电影免费观看大全| 国产精品盗摄一区二区三区| 亚洲裸体在线观看| 国模精品娜娜一二三区| 亚洲免费视频观看| 亚洲国产精品久久久| 国产色视频一区| 国产精品午夜国产小视频| 免费成人黄色| 亚洲欧洲日韩综合二区|