在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux看門(mén)狗管理及在DM8168芯片上的應(yīng)用

            Linux看門(mén)狗管理及在DM8168芯片上的應(yīng)用

            作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

            ⑤初始化本階段使用的硬件設(shè)備。

            ⑥檢測(cè)系統(tǒng)內(nèi)存映射。

            ⑦將內(nèi)核從Flash讀取到RAM中。

            ⑧設(shè)置內(nèi)核啟動(dòng)參數(shù),然后啟動(dòng)硬件,通過(guò)訪問(wèn)控制寄存器來(lái)實(shí)現(xiàn)。該階段可以設(shè)置超時(shí)溢出時(shí)間為120 s。以DM8168芯片為例(后面的代碼都是基于該芯片實(shí)現(xiàn)),相關(guān)代碼為:

            __raw_writel(0xBBBB,WDT_WSPR);

            __raw_writel(0x4444,WDT_WSPR);

            __raw_writel(wdt_trgr_time,WDT_WTGR);

            這樣如果后續(xù)的內(nèi)核解壓及啟動(dòng)出錯(cuò),超時(shí)可以復(fù)位開(kāi)發(fā)板以重啟,重新加載內(nèi)核并試圖修復(fù)。

            ⑨完成系統(tǒng)初始化工作,U—Boot進(jìn)入主循環(huán)程序,處理用戶(hù)輸入的命令。在abortboot中,關(guān)閉看門(mén)狗,向控制寄存器依次寫(xiě)入:

            __raw_writel(0xAAAA,WDT_WSPR);

            __raw_writel(0x5555,WDT_WSPR);

            若收到用戶(hù)中斷,U—Boot自動(dòng)啟動(dòng)的命令后,關(guān)閉看門(mén)狗,以方便用戶(hù)調(diào)試U—Boot、設(shè)置內(nèi)核相關(guān)參數(shù)等信息。

            ⑩如果沒(méi)有收到用戶(hù)中斷命令,U—Boot會(huì)拷貝內(nèi)核鏡像并解壓內(nèi)核,開(kāi)始啟動(dòng)內(nèi)核調(diào)用。

            4.2 內(nèi)核啟動(dòng)階段

            在U—Boot加載了內(nèi)核之后,系統(tǒng)就進(jìn)入內(nèi)核啟動(dòng)階段,此時(shí),看門(mén)狗的管理控制也要由內(nèi)核來(lái)接管。內(nèi)核啟動(dòng)主要包括內(nèi)核自解壓、注冊(cè)及加載硬件驅(qū)動(dòng)程序、Flash分區(qū)等。

            在內(nèi)核啟動(dòng)時(shí),內(nèi)核程序會(huì)注冊(cè)硬件看門(mén)狗的驅(qū)動(dòng)程序,并執(zhí)行probe探針函數(shù),此時(shí),內(nèi)核接管U—Boot階段的看門(mén)狗,即先關(guān)閉看門(mén)狗,然后再重新打開(kāi)看門(mén)狗,并加載新的超時(shí)時(shí)長(zhǎng),此處設(shè)置wdt_trgr_time=120 s。

            __raw_writel(0xAAAA,WDT_WSPR);

            __raw_writel(0x5555,WDT_WSPR);

            __raw_writel(0xBBBB,WDT_WSPR);

            __raw_writel(0x4444,WDT_WSPR);

            __raw_writel(wdt_trgr_time,WDT_WTGR);

            這樣可以保證文件系統(tǒng)在掛載或解壓出錯(cuò)時(shí),看門(mén)狗沒(méi)有進(jìn)行喂狗操作,從而導(dǎo)致120 s超時(shí)后重啟。

            在注冊(cè)完硬件驅(qū)動(dòng)程序之后,內(nèi)核會(huì)掛載根文件系統(tǒng)并進(jìn)行解壓。

            4.3 應(yīng)用程序啟動(dòng)階段

            文件系統(tǒng)啟動(dòng)后,用戶(hù)的應(yīng)用進(jìn)程也會(huì)開(kāi)始啟動(dòng)。在這個(gè)階段,通常會(huì)創(chuàng)建一個(gè)獨(dú)立的守護(hù)進(jìn)程,來(lái)接管看門(mén)狗。守護(hù)進(jìn)程啟動(dòng)時(shí),首先關(guān)閉內(nèi)核階段啟動(dòng)的看門(mén)狗,并重新啟動(dòng)看門(mén)狗設(shè)置超時(shí)時(shí)長(zhǎng),實(shí)現(xiàn)接管內(nèi)核階段看門(mén)狗的功能。在看門(mén)狗啟動(dòng)后,守護(hù)進(jìn)程可以周期性地進(jìn)行喂狗操作,并通過(guò)心跳的方式同用戶(hù)進(jìn)程通信,在收不到用戶(hù)進(jìn)程的心跳包消息時(shí),即停止喂狗操作,這樣看門(mén)狗會(huì)超時(shí)溢出導(dǎo)致系統(tǒng)重啟,以進(jìn)行故障修復(fù)。

            守護(hù)進(jìn)程通過(guò)看門(mén)狗中斷響應(yīng)函數(shù),實(shí)現(xiàn)重啟系統(tǒng)等操作,以恢復(fù)系統(tǒng)可用性。

            至此,從U—Boot啟動(dòng)直到應(yīng)用程序完成過(guò)程中,看門(mén)狗都有相應(yīng)的啟動(dòng)及管理。

            4.4 看門(mén)狗管理小結(jié)

            系統(tǒng)下,U—Boot啟動(dòng)后打開(kāi)硬件看門(mén)狗,保證內(nèi)核解壓及啟動(dòng)出現(xiàn)異常時(shí)重啟;內(nèi)核啟動(dòng)階段,接管U—Boot下的看門(mén)狗并設(shè)置時(shí)間,可以保證文件系統(tǒng)掛載、解壓及啟動(dòng)出現(xiàn)異常時(shí)重啟系統(tǒng);在進(jìn)入文件系統(tǒng)后,守護(hù)進(jìn)程接管內(nèi)核階段的看門(mén)狗,并定期地執(zhí)行喂狗操作,這樣在用戶(hù)進(jìn)程出現(xiàn)異常(退出)時(shí),守護(hù)進(jìn)程可以監(jiān)測(cè)到異常,停止喂狗操作,看門(mén)狗超時(shí)復(fù)位系統(tǒng)。嵌入式系統(tǒng)中,重啟是從故障中修復(fù)的最簡(jiǎn)單有效的方法,通過(guò)在啟動(dòng)的不同階段啟用硬件看門(mén)狗,可以有效保障系統(tǒng)異常時(shí)重啟。

            5 DM8168看門(mén)狗的管理

            除了前文提到的系統(tǒng)下看門(mén)狗的基礎(chǔ)管理,DM8168芯片的硬件看門(mén)狗外圍輸出引腳,可以同時(shí)支持Reset和Interrupt信號(hào),功能更加強(qiáng)大。

            如果只是期望看門(mén)狗超時(shí)后能重啟復(fù)位板卡,參考前節(jié)提到的方法,依次在Linux啟動(dòng)的各個(gè)階段啟用及管理看門(mén)狗即可,因?yàn)榭撮T(mén)狗的溢出引腳直接連接電源及復(fù)位管理模塊。

            此外,如果想在看門(mén)狗超時(shí)溢出時(shí)增加一些額外的處理,可以采用捕獲中斷信號(hào)的方法。具體流程如下:

            ①注冊(cè)硬件看門(mén)狗中斷處理函數(shù),實(shí)現(xiàn)程序?yàn)閛map_irq=platform_get_resource(pdev,IORESOURCE_IRQ,0); //獲得中斷標(biāo)號(hào)

            ret=request_irq(omap_irq,omap_wdt_irqhdl,0,pdev->name,wdev); //注冊(cè)中斷

            其中omap_wdt_irqhdl為看門(mén)狗的中斷處理函數(shù)。

            ②在硬件看門(mén)狗中斷處理函數(shù)中可以增加一些附加的處理,需要注意的是,此時(shí)需要設(shè)置另外一組寄存器WDT_WDLY,以保證在復(fù)位前捕獲到中斷信號(hào)。

            中斷處理函數(shù)omap_wdt_irqhdl的關(guān)鍵實(shí)現(xiàn)程序?yàn)椋?p>

            采用此方法后,看門(mén)狗超時(shí)產(chǎn)生中斷信號(hào),系統(tǒng)捕獲到中斷信號(hào)后自動(dòng)觸發(fā)中斷響應(yīng)函數(shù),可以更靈活地處理(比如不復(fù)位系統(tǒng),保留現(xiàn)場(chǎng)以便定位問(wèn)題)。

            結(jié)語(yǔ)

            本文以TI公司的TMS320DM8168芯片為例,詳細(xì)介紹了Linux系統(tǒng)從U—Boot啟動(dòng)、內(nèi)核啟動(dòng)到文件系統(tǒng)加載及用戶(hù)程序啟動(dòng)過(guò)程中看門(mén)狗的啟用及管理,通過(guò)不同階段管理看門(mén)狗,可以保證系統(tǒng)在任何一個(gè)可能出現(xiàn)問(wèn)題的階段,自動(dòng)重啟以修復(fù)故障,從而有效提高系統(tǒng)的可靠性。在嵌入式設(shè)備越來(lái)越普及的今天,設(shè)備自恢復(fù)功能會(huì)具有極大的競(jìng)爭(zhēng)力。


            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: Linux 看門(mén)狗

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉