国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Linux的嵌入式系統全程喂狗策略

發布時間:2010-3-24 09:31    發布者:李寬
關鍵詞: linux , 嵌入式 , 系統
引言

嵌入式系統中,為了使系統在異常情況下能自動恢復,一般都會引入看門狗電路?撮T狗電路其實就是一個計數器。當看門狗啟動后,計數器開始自動計數,經過一定時間計數器溢出就會對CPU產生一個復位信號使系統重啟。系統正常運行時,需要在看門狗允許的時間間隔內對看門狗計數器清零也即喂狗,不讓復位信號產生。

當前在帶Linux操作系統的嵌入式系統中,由于Linux操作系統加載時間較長(如10~30 s),一般都超過看門狗的時間間隔(典型值為l.6 s);而如果不采取特殊措施,則系統在Linux操作系統加載過程中復位,Linux操作系統永遠無法加載成功。為了解決這個問題,通常有兩種方案 [1-2]:做一個看門狗的時間間隔更長的硬件電路;修改內核,在內核啟動過程中將看門狗設成無效。以上方案無法解決嵌入式系統在操作系統啟動階段的失效問題,降低了系統可靠性。

本文提出了一種嵌入式系統全程喂狗策略及實現方法,從系統上電、引導程序(Bootloader)、操作系統內核直至應用階段都啟用看門狗。實驗表明,該方法簡單可行,成本較低,在嵌入式系統的全過程中都可以實現喂狗策略,提高了系統可靠性。

1  系統總體設計

采用IMP706芯片組成硬件看門狗電路(看門狗的時間間隔為1.6 s),在操作系統程序(包括Bootloader)和應用程序中插人喂狗程序,這些喂狗程序運行時問間隔小于看門狗的時間間隔(本設計選為1 s)。這樣做可以保證:如果系統正常工作,系統可以在小于看門狗的時間間隔內不斷進行喂狗動作,硬件看門狗的計數器不斷清零,不產生復位信號;如果系統非正常工作,喂狗動作失效,硬件看門狗的計數器在1.6 s后溢出,對CPU產生復位信號使系統重啟。

1.1  看門狗電路設計

圖 1為看門狗電路原理,采用IMP706芯片組成硬件看門狗電路,通過電平轉換器件74AVC1T45,硬件看門狗器件的ST腳與中央處理器(CPU)的 GPIO3腳相連?撮T狗器件的PRST腳與IN腳接到復位開關,RST腳接到CPU的RESET腳,當復位開關被觸動或看門狗器件的計數器溢出時,看門狗器件的RST腳輸出復位信號給CPU的RESET腳,CPU復位重啟。



1.2  喂狗策略及實現

1.2.1  Bootloader階段

在 Bootloader階段(本設計采用U-boot,但不限于此),喂狗策略是在Bootloader的程序中不同位置插入喂狗程序。具體做法是:由于 Bootoader第一階段的啟動不會超過1.6 s,因此只需在Bootoader的第二階段,如Flash讀寫、CRC校驗、循環等待等處,插入喂狗代碼。喂狗代碼采用直接置位中央處理器的GPlO3 狀態寄存器的方式進行。

首先在特定平臺的定義頭文件include/condffigs/xxx.h中加入看門狗的宏定義:



1.2.2 Linux內核階段

在Linux內核加載階段(采用 MontaVista Linux操作系統,但不限于此),喂狗策略是在Linux內核程序的不同位置插入喂狗程序。具體做法是:首先在Linux內核階段1的內核解壓縮程序、 RTC驅動加載程序、GPIO驅動加載程序適當代碼處插入喂狗代碼,喂狗代碼以直接取反中央處理器的GPlO3狀態寄存器的方式進行;在Linux內核階段2的Watchdog驅動加載程序適當代碼處插入喂狗代碼,喂狗代碼調用GPIO驅動,GPIO驅動內含取反中央處理器的GPlO3狀態寄存器的操作;在Linux內核階段3的內核加載根文件系統程序、init程序的適當代碼處調用Linux的Watchdog驅動,Watchdog驅動內含取反中央處理器的GPlO3狀態寄存器的操作。

以上內核階段的劃分是以GPIO及Watchdog驅動的加載為標志的。GPIO驅動加載之前為內核階段1,GPIO驅動加載之后至Watchdog驅動加載之前為內核階段2,Watchdog驅動加載之后為內核階段3。

下面示例說明內核解壓縮asm/arch/boot/com—pressed.C中喂狗的實現代碼:



從以上代碼可以看出,它是內核階段1喂狗的典型方法,是直接取反GPlO3狀態寄存器的。

下面示例說明內核階段2的喂狗方法(僅以加載RTC驅動為例):首先讓RTC驅動中包含GPIO的頭文件,然后在讀取RTC當前值的函數中調用GPIO驅動進行喂狗。



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



1.2.3  程序運行階段

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

器值清零。如果有任意一個計數器值為0,檢測到對應接受監視的線程出現故障需要重啟,這時不對看門狗喂狗,使得系統復位重啟。



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



總之,在系統不同階段,由于系統調用和封裝程度不同,看門狗的喂狗實現方法也不同:在Bootloader階段,直接取反中央處理器的GPIO3的狀態寄存器;在Linux內核階段1,采取取反中央處理器的GPlO3的狀態寄存器的方法進行;在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處進行靜電放電測試,經觀察設備都可以即時恢復。

對軟件失效時本方法效果的測試,采用故障植入腳本的主動方式及系統長時間運行的被動方式進行測試。最終結果表明,設備在失效后可即時恢復。

綜上所述,本全程喂狗的方法能確保系統在任一階段出現軟件或硬件故障時都能復位重啟。

結語

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

參考文獻

   1. 曹敏煊 嵌入式操作系統應用中的看門狗技術 [期刊論文] -單片機與嵌入式系統應用2004(5)
   2. 唐明 WatchDog 在嵌入式應用中的問題 [期刊論文] -單片機與嵌入式系統應用2007(11)
   3. Bovet Daniel P.Cesati Marco Understanding the Linux Kernel 2005
   4. 鄭培余.李漢斌.姚紹文 支持多線程監控的外置Watchdog監控組件的設計 [期刊論文] -計算機工程2004(24)
   
作者:江蘇東大金智建筑智能化系統工程有限公司 張長順  黃建元  趙新榮  陸永剛
來源:單片機與嵌入式系統應用  2009 (4)
本文地址:http://m.qingdxww.cn/thread-9795-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 無線充電基礎知識及應用培訓教程2
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 無線充電基礎知識及應用培訓教程3
  • 為何選擇集成電平轉換?
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产片 | 亚洲精品视频专区 | 在线免费观看一区二区三区 | 精品视频免费播放 | 九九九九热精品免费视频 | 天天在线干 | 99精选视频 | 国产三级精品播放 | 欧美操操操| h肉动漫在线视频无修无遮挡 | 国产精品亚洲欧美 | 欧美亚洲香蕉 | 操操操日日 | 亚洲高清在线观看视频 | 91视频国产免费 | 日本精品久久久久中文字幕 | 内裤奇缘免费未删减版 | 日本女人逼| 国产免费久久精品44 | 离线枕边人国语在线影视 | 欧美精品在线一区二区三区 | 老司机亚洲精品影院在线 | 国产免费私人影院永久免费 | 成人手机视频在线观看 | 免费人成黄页在线观看1024 | 国产福利麻豆精品一区 | 正在播放国产一区 | 日韩亚洲人成网站在线播放 | 成人午夜视频在线播放 | 亚洲国产成人综合 | 日韩在线无| 国内黄色一级精品 | 国产精品入口在线看麻豆 | 欧美第八页 | www99re| 色九九亚洲偷偷动态图 | h肉动漫无遮挡在线观看免费 | 中文国产成人精品久久96 | h肉动漫在线视频无修无遮挡 | 玖玖精品视频在线观看 | 久久er国产精品免费观看2 |