www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]摘 要 Linux嵌入式系統(tǒng)在啟動過程中如何喂狗是提高嵌入式系統(tǒng)可靠性需要解決的問題,傳統(tǒng)做法是用復(fù)雜看門狗電路或在啟動過程中關(guān)閉看門狗。本文提出了一種嵌入式系統(tǒng)喂狗策略,可以實現(xiàn)系統(tǒng)在啟動過程和運行過程中全

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


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


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

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

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

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

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

   
    為了能夠在內(nèi)核階段3調(diào)用Watchdog驅(qū)動進行喂狗,需要在Watchdog驅(qū)動中導(dǎo)出喂狗函數(shù)以供內(nèi)核階段3使用。Watchdog驅(qū)動喂狗也是調(diào)用GPIO驅(qū)動實現(xiàn)的,但Watchdog驅(qū)動一旦加載完成,以后的喂狗都通過調(diào)用Watchdog驅(qū)動完成。

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

    以下示例說明在應(yīng)用中如何調(diào)用Watchdog驅(qū)動實現(xiàn)喂狗:

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

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


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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉