a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Linux看門狗管理及在DM8168芯片上的應用

Linux看門狗管理及在DM8168芯片上的應用

作者: 時間:2016-09-12 來源:網絡 收藏

摘要:隨著智能手機及平板為代表的嵌入式設備的普及,對系統的可靠性提出較高的要求。以TI TMS320DM8168芯片為例,詳細介紹了系統從U—Boot啟動、內核啟動到文件系統加載及用戶程序啟動過程中,的啟用及管理,通過不同階段管理,可以保證系統在任意可能出現問題的階段,可以自動重啟以修復故障,從而有效提高系統的可靠性。

本文引用地址:http://www.j9360.com/article/201609/303453.htm

關鍵詞:;;DM8168

引言

隨著智能終端及移動互聯網的發展,系統被應用到越來越多的嵌入式設備中,如移動通信基站、Android(基于Linux內核)智能手機、智能手環等。不同領域的應用都對Android/Linux系統的可靠性及可用性有嚴格的要求。在嵌入式系統中,CPU必須可靠工作,即使因為某種錯誤或異常進入錯誤狀態,系統應該可以自動復位,看門狗也可以在系統進入錯誤狀態后的一段時間內重啟復位,以實現系統自動從故障恢復。

1 看門狗的概念

看門狗是一個進行累加計數的定時器,在其啟動后,如果在設定的時間間隔內對定時器清零(俗稱“喂狗”操作),定時器就不會溢出,也不會產生復位信號;如果在設定的時間間隔內,沒有對定時器清零,定時器就會溢出產生復位信號,從而實現系統重啟。根據實現方式的不同,可以分為硬件看門狗和軟件看門狗。

硬件看門狗是利用定時器電路實現,其輸出連接到電路的復位端,程序在設定間隔內對定時器清零。因此程序正常工作時,定時器不會溢出;如果程序出現故障,未能在設定間隔周期內執行清零操作,就使得看門狗定時器溢出,產生復位信號并重啟系統。軟件看門狗原理上同硬件看門狗一樣,只是將硬件電路上的定時器用操作系統內部的軟件定時器代替,這樣可以簡化硬件電路設計。但軟件定時器在可靠性方面不如硬件定時器,在一些異常的情形下,比如處理器或操作系統內部發生故障時,會導致軟件定時器不可用,也就無法檢測到這些故障。

2 Linux系統對看門狗的支持

Linux內核從1.3.51版本開始提供硬件、軟件看門狗的驅動支持。隨著內核版本不斷更新與發展,Linux內核對各種不同類型的硬件看門狗提供了廣泛的支持。根據訪問方式的不同,Linux系統下的設備驅動程序分為字符設備及塊設備??撮T狗在Linux系統下作為字符設備來處理,/dev/watchdog是一個主設備號為10、從設備號為130的字符設備節點。

Linux系統下的硬件看門狗,必須有硬件電路支持,設備節點/dev/watchdog對應著真實的物理設備,不同類型的硬件看門狗設備由相應的硬件驅動管理。

軟件看門狗則由Linux內核模塊通過定時器機制實現,此時設備節點/dev/watchdog并不對應真實的物理設備,只是為應用提供了一個與操作硬件看門狗相同的接口。各種不同類型的硬件看門狗電路,不僅提供了驅動程序支持,還提供了一個基于定時器的純軟件看門狗驅動,其驅動程序的源碼位于Linux內核源碼下面的/drivers/watchdog目錄。

與Linux下的軟件看門狗相比,硬件看門狗具有更高的可靠性?;贚inux內核的定時器實現的軟件看門狗,當內核或中斷出現異常時,將會失效。而硬件看門狗由自身的硬件電路控制,獨立于內核,無論當前系統狀態如何,如果硬件看門狗在設定的時間間隔內沒有被執行寫操作,仍會重新啟動系統。

Linux系統下面的軟件、硬件看門狗對應用程序而言是透明的。應用程序操作軟件看門狗的方式如下:打開設備/dev/watchdog,在設定的時間間隔內對/dev/watchdog設備執行寫操作。在任意時刻,只能有一個看門狗驅動模塊被加載,管理/dev/watchdog設備節點。如果系統沒有硬件看門狗電路,可以加載軟件看門狗驅動模塊。

3 Linux系統下看門狗的訪問

前文提到,Linux系統將看門狗作為一個字符設備來管理。本節將以TI公司推出的高清視頻處理芯片TMS320DM8168(以下簡稱DM8168)芯片為例,介紹Linux下訪問及操作看門狗的邏輯層次。

DM8168芯片將高清多通道系統的所有捕獲、壓縮、顯示以及控制功能整合于同一芯片,芯片內部集成了硬件看門狗,外圍連接電路如圖1所示。硬件看門狗溢出同時產生復位(Reset)及中斷信號(Interrupt),復位信號會復位整個芯片,中斷信號可以在捕獲到中斷事件后,在中斷處理函數中增加一些額外的操作(比如將收到的看門狗溢出中斷的時間寫進日志,然后再復位等)。

Linux系統訪問硬件接口需通過設備驅動程序接口實現,硬件看門狗也不例外。

如圖2所示,Linux系統下操作看門狗需要以下3個層次:

①Hardware Layer-硬件層,指硬件設備,通常提供GPIO;

②Kernel Layer-內核層,內核通過設備驅動程序訪問并控制硬件設備;

③Usee Space-用戶空間,應用程序通過內核驅動提供的API接口(通常以打開文件或ioctl方式),提供訪問硬件設備的接口,比如打開看門狗(int fd = open(“/dev/wat chdog”,O_RDWR))。

4 Linux系統下看門狗的管理

Linux啟動過程依次為U—Boot、內核及文件系統,最后是應用程序啟動。在Linux系統啟動過程中,啟用看門狗可以有效監測系統狀態,若異常導致看門狗溢出,系統會自動復位以試修復問題,從而提高系統的可靠性及健壯性。本節以DMS168開發板為例,介紹Linux各個啟動階段看門狗的管理。

4.1 U—Boot啟動階段

開發板上電后,執行U—Boot的第一條指令,然后順序執行U—Boot啟動函數。U—Boot啟動內核的過程如下:

①硬件設備初始化。

②加載U—Boot第二階段代碼到RAM空間。

③設置好堆棧,跳轉到start_armboot函數入口。

④start_armboot是U—Boot執行的第一個C語言函數。


上一頁 1 2 下一頁

關鍵詞: Linux 看門狗

評論


相關推薦

技術專區

關閉