基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)

基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)

ID:38225361

大?。?85.25 KB

頁數(shù):4頁

時(shí)間:2019-05-24

基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)_第1頁
基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)_第2頁
基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)_第3頁
基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)_第4頁
資源描述:

《基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、http://www.elecfans.com電子發(fā)燒友http://bbs.elecfans.com電子技術(shù)論壇基于Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序開發(fā)錢晨,徐榮華,王欽若(廣東工業(yè)大學(xué)羅克韋爾自動(dòng)化實(shí)驗(yàn)室,廣東廣州510090)摘要:本文介紹了Linux系統(tǒng)的特點(diǎn),闡述了在Linux操作系統(tǒng)下,對(duì)系統(tǒng)硬件的訪問和開發(fā)驅(qū)動(dòng)程序的方法,說明了設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu)和編寫過程。關(guān)鍵詞:Linux,操作系統(tǒng),驅(qū)動(dòng)程序中圖分類號(hào):TP316文獻(xiàn)標(biāo)識(shí)碼:ATheDevelopmentofDeviceDriveronLinuxQianC

2、hen,XuRonghua,WangQinruo(GuangdongUniversityofTechnology,GuangdongProvince,GuangzhouCity,510090)Abstract:thispaperintroducesthefeatureofLinuxoperationsystem,anddemonstratesthemethodofdevelopingdevicedriversonLinux,thedriver’sstructureandprogramdevelopingprocess.Ke

3、ywords:Linux,operationsystem,devicedriver1.引言Linux是一個(gè)遵循POSIX標(biāo)準(zhǔn)的免費(fèi)操作系統(tǒng),具有BSD和SYSV的擴(kuò)展特性。與其他操作系統(tǒng)相比,Linux有其自身的一些特點(diǎn):多任務(wù)、多用戶、多平臺(tái)、使用分頁技術(shù)的虛擬內(nèi)存等。同時(shí)由于它源代碼完全公開,用戶可根據(jù)需要自己定制自己的操作系統(tǒng),從而系統(tǒng)能夠很好的滿足用戶的要求。它是免費(fèi)的自由軟件,用其構(gòu)建的系統(tǒng)成本較低,而且Linux是單內(nèi)核的操作系統(tǒng),并可按要求進(jìn)行任意剪裁,因此具有很好的實(shí)時(shí)性,很強(qiáng)的穩(wěn)定性、嵌入性的操作系統(tǒng),因

4、此越來越多的研究人員開始采用圖1設(shè)備訪問層次圖Linux平臺(tái)來開發(fā)自己的產(chǎn)品。3.驅(qū)動(dòng)程序編寫2.Linux下的硬件訪問Linux是Unix操作系統(tǒng)的一種變種,在Linux下編寫Linux系統(tǒng)中,在Linux用戶態(tài)的程序不能直接對(duì)硬驅(qū)動(dòng)程序的原理和思想完全類似于其他的Unix系統(tǒng)。在件進(jìn)行訪問。CPU并不是系統(tǒng)中唯一的智能設(shè)備,每個(gè)物L(fēng)inux環(huán)境下設(shè)計(jì)驅(qū)動(dòng)程序,思路簡潔,操作方便,功能理設(shè)備都有自己的控制器,每個(gè)硬件控制器都有各自的控也很強(qiáng)大,但是支持函數(shù)少,只能依賴內(nèi)核中的函數(shù),有制狀態(tài)寄存器(CSR)并且各不相同,這

5、些寄存器用來啟些常用的操作要自己來編寫。動(dòng)、停止、初始化設(shè)備以及對(duì)設(shè)備進(jìn)行診斷。在Linux中系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,管理硬件設(shè)備控制的代碼就是設(shè)備驅(qū)動(dòng)程序。Linux內(nèi)核設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口,設(shè)的設(shè)備管理是由一組運(yùn)行在特權(quán)級(jí)上、駐留在內(nèi)存中以及備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程對(duì)底層硬件進(jìn)行處理的共享庫的驅(qū)動(dòng)程序來完成。序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操設(shè)備管理的一個(gè)基本特征是設(shè)備處理的抽象性,即所作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作,設(shè)備驅(qū)動(dòng)程序

6、是內(nèi)有硬件設(shè)備都被看成普通文件,可以通過與操縱普通文件核的一部分,它完成以下的功能:對(duì)設(shè)備初始化和釋放;相同的系統(tǒng)調(diào)用來打開、關(guān)閉、讀取和寫入設(shè)備。系統(tǒng)中數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);讀取應(yīng)用程序每個(gè)設(shè)備都用一種設(shè)備特殊文件來表示,例如系統(tǒng)中第一傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù);檢測個(gè)IDE硬盤被表示成/dev/hda.。圖1表示了設(shè)備訪問的層和處理設(shè)備出現(xiàn)的錯(cuò)誤。次關(guān)系。Linux內(nèi)核中雖然存在許多不同的設(shè)備驅(qū)動(dòng)程序但http://www.elecfans.com電子發(fā)燒友http://bbs.ele

7、cfans.com電子技術(shù)論壇他們具有一些共同的特性,比如驅(qū)動(dòng)程序?yàn)閮?nèi)核提供統(tǒng)一由一個(gè)結(jié)構(gòu)來向系統(tǒng)進(jìn)行說明,此結(jié)構(gòu)定義為:的接口、驅(qū)動(dòng)程序的執(zhí)行是屬于內(nèi)核機(jī)制并且使用內(nèi)核服#incude務(wù)、動(dòng)態(tài)可加載等。structfile_operations{Linux硬件設(shè)備支持兩個(gè)標(biāo)準(zhǔn)接口,塊設(shè)備接口和字int(*lseek)(structinode*inode,structfile符設(shè)備接口,通過塊(字符)設(shè)備接口存取的設(shè)備稱為塊*flip,off_toff,intpos);(字符)設(shè)備或稱其具有塊(字符

8、)設(shè)備接口。塊設(shè)備接int(*read)(structinode*inode,struectfile口僅支持面向塊的I/O操作,所有I/O操作都通過內(nèi)核地*flip,char*buf,intcount);址空間中的I/O緩沖區(qū)進(jìn)行,它可以支持幾乎任意長度和int(*write)(structinode*

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。