版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第1313章章 看門狗驅(qū)動程序看門狗驅(qū)動程序大多數(shù)設(shè)備中都有看門狗硬件,所以驅(qū)動開發(fā)人員需要大多數(shù)設(shè)備中都有看門狗硬件,所以驅(qū)動開發(fā)人員需要去實現(xiàn)這種設(shè)備的驅(qū)動??撮T狗的用途是當(dāng)去實現(xiàn)這種設(shè)備的驅(qū)動??撮T狗的用途是當(dāng)CPU進(jìn)入錯誤狀進(jìn)入錯誤狀態(tài)后,無法恢復(fù)的情況下,使計算機重新啟動。本章將對看態(tài)后,無法恢復(fù)的情況下,使計算機重新啟動。本章將對看門狗的原理和驅(qū)動程序進(jìn)行詳細(xì)分析。門狗的原理和驅(qū)動程序進(jìn)行詳細(xì)分析。13.1 13.1 看門狗硬件原理看門狗硬件原理了解看門狗硬件的原理是寫驅(qū)動程序的第一步,本節(jié)了解看門狗硬件的原理是寫驅(qū)動程序的第一步,本節(jié)將對看門狗硬件的主要原理進(jìn)行分析。將對看門狗
2、硬件的主要原理進(jìn)行分析。13.1.1 13.1.1 看門狗看門狗由于計算機在工作時不可避免的要受到各種各樣因素由于計算機在工作時不可避免的要受到各種各樣因素的干擾,即使再優(yōu)秀的計算機程序也可能因為這種干擾使計的干擾,即使再優(yōu)秀的計算機程序也可能因為這種干擾使計算機進(jìn)入一個死循環(huán),更嚴(yán)重的就是導(dǎo)致死機。有兩種方法算機進(jìn)入一個死循環(huán),更嚴(yán)重的就是導(dǎo)致死機。有兩種方法來處理這種情況,一是采用人工復(fù)位的方法,二是依賴某種來處理這種情況,一是采用人工復(fù)位的方法,二是依賴某種硬件來執(zhí)行這個復(fù)位工作。這種硬件通常叫做看門狗(硬件來執(zhí)行這個復(fù)位工作。這種硬件通常叫做看門狗(Watch Dog,WD)。)。13
3、.1.2 13.1.2 看門狗工作原理看門狗工作原理S3C2440處理器內(nèi)部集成了一個看門狗硬件。其提供了處理器內(nèi)部集成了一個看門狗硬件。其提供了3個寄存器對看門狗進(jìn)行操作。這個寄存器對看門狗進(jìn)行操作。這3個寄存器分別是個寄存器分別是WTCON(看門狗控制寄存器)、(看門狗控制寄存器)、WTDAT(看門狗數(shù)據(jù)寄存器)、(看門狗數(shù)據(jù)寄存器)、WTCNT(看門狗計數(shù)寄存器)。(看門狗計數(shù)寄存器)。13.2 13.2 平臺設(shè)備模型平臺設(shè)備模型看門狗驅(qū)動中涉及到兩種設(shè)備模型,分別是平臺設(shè)備看門狗驅(qū)動中涉及到兩種設(shè)備模型,分別是平臺設(shè)備和混雜設(shè)備。本節(jié)分別對兩種設(shè)備模型進(jìn)行講解。和混雜設(shè)備。本節(jié)分別對兩
4、種設(shè)備模型進(jìn)行講解。13.2.1 13.2.1 平臺設(shè)備模型平臺設(shè)備模型從從Linux 2.6起引入了一套新的驅(qū)動管理和注冊模型:起引入了一套新的驅(qū)動管理和注冊模型:平臺設(shè)備平臺設(shè)備platform_device和平臺驅(qū)動和平臺驅(qū)動platform_driver。Linux中大部分的設(shè)備驅(qū)動,都可以使用這套機制,設(shè)備用中大部分的設(shè)備驅(qū)動,都可以使用這套機制,設(shè)備用platform_device表示,驅(qū)動用表示,驅(qū)動用platform_driver進(jìn)行表示。進(jìn)行表示。13.2.2 13.2.2 平臺設(shè)備平臺設(shè)備在在Linux設(shè)備驅(qū)動中,有一種設(shè)備叫做平臺設(shè)備。平臺設(shè)備驅(qū)動中,有一種設(shè)備叫做平臺設(shè)
5、備。平臺設(shè)備是指處理器上集成的額外功能的附加設(shè)備,如設(shè)備是指處理器上集成的額外功能的附加設(shè)備,如Watch Dog g、IIC C、IIS S、RTC、ADC等設(shè)備。這些格外功能設(shè)備是為等設(shè)備。這些格外功能設(shè)備是為了節(jié)約硬件成本了節(jié)約硬件成本、減少產(chǎn)品功耗減少產(chǎn)品功耗、縮小產(chǎn)品形狀而集成到處縮小產(chǎn)品形狀而集成到處理器內(nèi)部的。需要注意的是,平臺設(shè)備并不是與字符設(shè)備理器內(nèi)部的。需要注意的是,平臺設(shè)備并不是與字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備并列的概念,而是一種平行的概念,其從塊設(shè)備和網(wǎng)絡(luò)設(shè)備并列的概念,而是一種平行的概念,其從另一個角度對設(shè)備進(jìn)行了概括。如果從內(nèi)核開發(fā)者的角度來另一個角度對設(shè)備進(jìn)行了概括。
6、如果從內(nèi)核開發(fā)者的角度來看,平臺設(shè)備的引入是為了更容易的開發(fā)字符設(shè)備看,平臺設(shè)備的引入是為了更容易的開發(fā)字符設(shè)備、塊設(shè)備塊設(shè)備和網(wǎng)絡(luò)設(shè)備驅(qū)動。和網(wǎng)絡(luò)設(shè)備驅(qū)動。13.2.3 13.2.3 平臺設(shè)備驅(qū)動平臺設(shè)備驅(qū)動每一個平臺設(shè)備都對應(yīng)一個平臺設(shè)備驅(qū)動,這個驅(qū)動每一個平臺設(shè)備都對應(yīng)一個平臺設(shè)備驅(qū)動,這個驅(qū)動用來對平臺設(shè)備進(jìn)行探測用來對平臺設(shè)備進(jìn)行探測、移除移除、關(guān)閉關(guān)閉、電源管理等操作。電源管理等操作。平臺設(shè)備用驅(qū)動平臺設(shè)備用驅(qū)動platform_device結(jié)構(gòu)體來描述。結(jié)構(gòu)體來描述。13.2.4 13.2.4 平臺設(shè)備驅(qū)動的注冊和注銷平臺設(shè)備驅(qū)動的注冊和注銷內(nèi)核關(guān)于平臺設(shè)備最主要的兩個函數(shù)是注冊
7、和注銷函內(nèi)核關(guān)于平臺設(shè)備最主要的兩個函數(shù)是注冊和注銷函數(shù),本節(jié)對這兩個函數(shù)進(jìn)行說明。數(shù),本節(jié)對這兩個函數(shù)進(jìn)行說明。13.1.5 13.1.5 混雜設(shè)備混雜設(shè)備混雜設(shè)備并沒有一個明確的定義。由于設(shè)備號比較緊混雜設(shè)備并沒有一個明確的定義。由于設(shè)備號比較緊張,所以一些不相關(guān)的設(shè)備可以使用同一個主設(shè)備,不同的張,所以一些不相關(guān)的設(shè)備可以使用同一個主設(shè)備,不同的次設(shè)備號。主設(shè)備號通常是次設(shè)備號。主設(shè)備號通常是10。由于這個原因,一些設(shè)備也。由于這個原因,一些設(shè)備也可以叫做混雜設(shè)備??梢越凶龌祀s設(shè)備。13.1.6 13.1.6 混雜設(shè)備的注冊和注銷混雜設(shè)備的注冊和注銷驅(qū)動程序中需要對混雜設(shè)備進(jìn)行注冊和注銷
8、,內(nèi)核提驅(qū)動程序中需要對混雜設(shè)備進(jìn)行注冊和注銷,內(nèi)核提供了供了misc_register ()和和misc_deregister()兩個函數(shù)。兩個函數(shù)。13.3 13.3 看門狗設(shè)備驅(qū)動程序分析看門狗設(shè)備驅(qū)動程序分析Linux 2.6內(nèi)核中已經(jīng)實現(xiàn)了內(nèi)核中已經(jīng)實現(xiàn)了S3C2440處理器的看門狗驅(qū)處理器的看門狗驅(qū)動。由于動。由于S3C2440與與S3C2410的看門狗硬件沒有變化,所以的看門狗硬件沒有變化,所以內(nèi)核沿用了內(nèi)核沿用了S3C2410的看門狗驅(qū)動。本節(jié)將對這個驅(qū)動進(jìn)行的看門狗驅(qū)動。本節(jié)將對這個驅(qū)動進(jìn)行詳細(xì)的分析,通過這個驅(qū)動的學(xué)習(xí),希望讀者能舉一反三,詳細(xì)的分析,通過這個驅(qū)動的學(xué)習(xí),希
9、望讀者能舉一反三,寫出其他更好的驅(qū)動。寫出其他更好的驅(qū)動。13.3.1 13.3.1 看門狗驅(qū)動的一些變量定義看門狗驅(qū)動的一些變量定義Linux內(nèi)核中的內(nèi)核中的linux-2.6.29.4driverswatchdogs3c2410_wdt.c文件實現(xiàn)了看門狗文件實現(xiàn)了看門狗驅(qū)動程序。此文件中也定義了看門狗驅(qū)動的一些變量,理解驅(qū)動程序。此文件中也定義了看門狗驅(qū)動的一些變量,理解這些變量的意義,是理解看門狗驅(qū)動的前提。這些變量的意義,是理解看門狗驅(qū)動的前提。13.3.2 13.3.2 看門狗模塊的加載和卸載函數(shù)看門狗模塊的加載和卸載函數(shù)看門狗模塊的加載函數(shù)看門狗模塊的加載函數(shù)watchdog_i
10、nit()中調(diào)用中調(diào)用platform_driver_register()函數(shù)來注冊平臺設(shè)備驅(qū)動。函數(shù)來注冊平臺設(shè)備驅(qū)動。13.3.3 13.3.3 看門狗驅(qū)動探測函數(shù)看門狗驅(qū)動探測函數(shù)當(dāng)調(diào)用當(dāng)調(diào)用platform_driver_register()函數(shù)注冊驅(qū)動之后,函數(shù)注冊驅(qū)動之后,會觸發(fā)平臺設(shè)備和驅(qū)動的匹配函數(shù)會觸發(fā)平臺設(shè)備和驅(qū)動的匹配函數(shù)platform_match()。匹配。匹配成功,則會調(diào)用平臺設(shè)備驅(qū)動中的成功,則會調(diào)用平臺設(shè)備驅(qū)動中的probe()函數(shù)。函數(shù)。13.3.4 13.3.4 設(shè)置看門狗復(fù)位時間函數(shù)設(shè)置看門狗復(fù)位時間函數(shù)s3c2410wdt_set_heartbeat()
11、s3c2410wdt_set_heartbeat()在探測函數(shù)在探測函數(shù)s3c2410wdt_probe()中的大多數(shù)函數(shù),在前面中的大多數(shù)函數(shù),在前面的章節(jié)都有說明。這里重點講解一下的章節(jié)都有說明。這里重點講解一下s3c2410wdt_set_heartbeat()函數(shù),該函數(shù)的參數(shù)接收看門狗復(fù)函數(shù),該函數(shù)的參數(shù)接收看門狗復(fù)位時間,默認(rèn)是位時間,默認(rèn)是15秒。該函數(shù)先后完成如下幾個功能:秒。該函數(shù)先后完成如下幾個功能:(1)使用)使用clk_get_rate()函數(shù)獲得看門狗的時鐘頻率函數(shù)獲得看門狗的時鐘頻率PCLK。(2)判斷復(fù)位時間)判斷復(fù)位時間timeout是否超過計數(shù)寄存器是否超過計
12、數(shù)寄存器WTCNT能表示的最大值,該寄存器的最大值為能表示的最大值,該寄存器的最大值為65536。(3)設(shè)置第一個分頻器的分頻系數(shù)。)設(shè)置第一個分頻器的分頻系數(shù)。(4)設(shè)置數(shù)據(jù)寄存器)設(shè)置數(shù)據(jù)寄存器WTDAT。13.3.5 13.3.5 看門狗的開始函數(shù)看門狗的開始函數(shù)s3c2410wdt_start()s3c2410wdt_start()和停止和停止函數(shù)函數(shù)s3c2410wdt_stop()s3c2410wdt_stop()為了控制看門狗的開始和停止,驅(qū)動中提供了開始和停為了控制看門狗的開始和停止,驅(qū)動中提供了開始和停止函數(shù)。止函數(shù)。1開始函數(shù)開始函數(shù)s3c2410wdt_start()2停
13、止函數(shù)停止函數(shù)s3c2410wdt_stop()13.3.6 13.3.6 看門狗驅(qū)動移除函數(shù)看門狗驅(qū)動移除函數(shù)s3c2410wdt_remove()s3c2410wdt_remove()S3C2440肯門狗驅(qū)動的移除函數(shù)完成與探測函數(shù)相反的肯門狗驅(qū)動的移除函數(shù)完成與探測函數(shù)相反的功能。其包括釋放功能。其包括釋放I/O內(nèi)存資源、釋放內(nèi)存資源、釋放IRQ資源、禁止看門資源、禁止看門狗時鐘源和注銷混雜設(shè)備。狗時鐘源和注銷混雜設(shè)備。13.3.7 13.3.7 平臺設(shè)備驅(qū)動平臺設(shè)備驅(qū)動s3c2410wdt_drivers3c2410wdt_driver中的中的其他重要函數(shù)其他重要函數(shù)平臺設(shè)備驅(qū)動平臺設(shè)
14、備驅(qū)動s3c2410wdt_driver中的中的s3c2410wdt_probe ()和和s3c2410wdt_remove()函數(shù)都已經(jīng)說明,剩下另外幾個重要函數(shù)都已經(jīng)說明,剩下另外幾個重要的函數(shù)需要說明。的函數(shù)需要說明。1關(guān)閉函數(shù)關(guān)閉函數(shù)s3c2410wdt_shutdown()2掛起函數(shù)掛起函數(shù)s3c2410wdt_suspend()3恢復(fù)函數(shù)恢復(fù)函數(shù)s3c2410wdt_resume()13.3.9 13.3.9 混雜設(shè)備的混雜設(shè)備的file_operationsfile_operations中的函數(shù)中的函數(shù)混雜設(shè)備是一種特殊的字符設(shè)備,所以混雜設(shè)備的操混雜設(shè)備是一種特殊的字符設(shè)備,所以混雜設(shè)備的操作方法和字符設(shè)備的操作方法基本一樣。看門狗的驅(qū)動中,作方法和字符設(shè)備的操作方法基本一樣。看門狗的驅(qū)動中,混雜設(shè)備的定義如下所示。混雜設(shè)備的定義如下所示。13.4 13.4 小結(jié)小結(jié)本章詳細(xì)地講解了看門狗驅(qū)動程序的編寫。首先介紹了看本章詳細(xì)地講解了看門狗驅(qū)動程序的編寫。首先介紹了看門狗的硬
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 結(jié)合中西醫(yī)療技術(shù)的探索
- 化工安全生產(chǎn)與環(huán)境保護管理措施研究
- 石河子大學(xué)《債法》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《土木工程材料》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《人力資源管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《當(dāng)代國際共產(chǎn)主義運動》2023-2024學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《運動控制基礎(chǔ)》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《汽車構(gòu)造》2022-2023學(xué)年第一學(xué)期期末試卷
- 造價年終總結(jié)匯報
- 沈陽理工大學(xué)《工程力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年遼寧生態(tài)工程職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- -2024屆高考英語沖刺復(fù)習(xí)高中雙寫尾字母及易錯單詞總結(jié)清單
- 2024年海南樂東縣樂供“菜籃子”發(fā)展有限公司招聘筆試參考題庫含答案解析
- 裝飾裝修工程質(zhì)量保證措施和創(chuàng)優(yōu)計劃
- 格林巴利綜合征神經(jīng)內(nèi)科
- 是否混聲四部合唱譜
- 腎挫裂傷護理查房
- 幼兒園大班健康領(lǐng)域指南目標(biāo)
- 大型機械設(shè)備安全操作培訓(xùn)
- 《白酒基礎(chǔ)知識培訓(xùn)》課件
- 莧菜種植技術(shù)要點
評論
0/150
提交評論