<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 為多功能片上系統處理器編寫(xiě) Linux 設備驅動(dòng)程序

為多功能片上系統處理器編寫(xiě) Linux 設備驅動(dòng)程序

——
作者:Tanya Ortega,Cirrus Logic公司系統軟件工程師 時(shí)間:2005-09-04 來(lái)源:EDN電子設計技術(shù) 收藏
為多功能片上系統處理器編寫(xiě)
 引 言
  編寫(xiě) 無(wú)疑是一項復雜的工作。本文將集中介紹非標準硬件的編寫(xiě),探討硬件應用編程接口,并借用 Cirrus Logic EP9312 片上系統嵌入式平臺添加設備驅動(dòng)程序這一案例來(lái)進(jìn)行分析。
  如果有些編程內容未能在本文中涉及,那么讀者亦可以查閱相似的設備驅動(dòng)程序編碼,以做參考。還有一種方法,就是檢索歷史檔案或者向 內核問(wèn)訊中心去函問(wèn)訊。
  Linux 概述
  Linux 是 UNIX 操作系統的翻版,1991 年由 Linus Torvalds 最先開(kāi)發(fā)出來(lái),并通過(guò)開(kāi)放源代碼開(kāi)發(fā)模式不斷得到開(kāi)放源代碼組織的改進(jìn)。任何使用 Linux 的個(gè)人和團體都無(wú)需支付任何版權費用。

本文引用地址:http://dyxdggzs.com/article/8240.htm


  只有內核還不夠,通常Linux 與一些在內核上運行的視窗環(huán)境、視窗管理器和應用捆綁在一起。然而,由于具備了嵌入式平臺,視窗環(huán)境并非必不可少。與微軟的視窗操作系統不同的是,Linux 并不需要一套固定的、必須采用的應用軟件或實(shí)用程序,因此能夠十分符合嵌入式市場(chǎng)終端解決方案的客制化要求。
  操作系統最基本的組成部分包括 1個(gè)資源管理器、1個(gè)調度程序、1個(gè)介于硬件和應用軟件之間的接口、1個(gè)網(wǎng)絡(luò )管理器和 1 個(gè)文檔系統管理器。Linux操作系統也包括這些組成部分,當然還有其他部分。本文主要闡述介于硬件和應用軟件之間的接口--設備驅動(dòng)程序。
  圖1解釋了用戶(hù)應用軟件、操作系統內核和硬件平臺之間的區別。
  設備驅動(dòng)程序類(lèi)型
  設備驅動(dòng)程序可分為2大類(lèi):硬件設備驅動(dòng)程序和軟件設備驅動(dòng)程序。硬件設備驅動(dòng)程序和物理硬件設備相連接,如UART設備或IDE設備,而軟件設備驅動(dòng)程序則作為低級數據結構間的接口,或硬件設備驅動(dòng)程序和高級數據結構間的接口。圖形控制臺驅動(dòng)程序就是一個(gè)軟件設備驅動(dòng)程序。其中,1個(gè)LCD控制器驅動(dòng)程序裝載并管理該顯示器,同時(shí)圖形控制臺對即將顯示的字符進(jìn)行著(zhù)色,并獲取從鍵盤(pán)輸入的信息。軟件設備驅動(dòng)程序的另一個(gè)例子是文檔系統執行--文檔系統驅動(dòng)程序采用1個(gè)硬盤(pán)驅動(dòng)程序存儲數據,而該硬盤(pán)驅動(dòng)程序直接與物理硬盤(pán)相連接。
  設備驅動(dòng)程序的分類(lèi)
  Linux 設備驅動(dòng)程序有幾類(lèi):字符、區塊、網(wǎng)絡(luò )和其他。通常,驅動(dòng)程序根據設備的訪(fǎng)問(wèn)方式分類(lèi)。然而,也有些設備無(wú)法按照此類(lèi)方式得到區分,因此被歸到"其他類(lèi)型"。字符設備包括那些使數據成為數據流的設備,可通過(guò)1個(gè)文檔系統的特殊文件獲得(文檔系統的特殊文件將在后文中加以討論)。鑒于字符設備的特性,該設備只能根據順序訪(fǎng)問(wèn)數據,即無(wú)法往前或往后搜索數據。串行端口和音頻設備都是這種類(lèi)型。圖2是Cirrus Logic的EP9312 片上系統結構圖,其中Linux字符設備以綠色標出。
  區塊設備能夠照管1個(gè)文檔系統。該類(lèi)設備和字符設備一樣,也是通過(guò)文檔系統特殊文件訪(fǎng)問(wèn)。但是,區塊設備與文檔設備的差異在于其可被隨機訪(fǎng)問(wèn)。這意味著(zhù),應用軟件可查找在該設備中的隨機位置。硬盤(pán)驅動(dòng)器和CD驅動(dòng)器都是區塊設備,它們內部的文件指針可以指向設備內部的任何位置,惟一的限制來(lái)自設備本身。當區塊設備通過(guò)文檔系統特殊文件訪(fǎng)問(wèn)時(shí),該應用接口即同字符設備一樣,只是與內核的接口有所差別而已。圖2中的紅色部分即為Cirrus Logic EP9312 片上系統結構中Linux區塊設備。

  網(wǎng)絡(luò )接口設備既可以是硬件設備,也可以是軟件設備。硬件設備如以太網(wǎng)卡,軟件設備如低端網(wǎng)絡(luò )協(xié)議堆棧(本文將此類(lèi)接口視為軟件設備)。中間件和協(xié)議堆棧有時(shí)會(huì )被看作是軟件設備。網(wǎng)絡(luò )接口設備是信息包數據的通信設備,一般擁有惟一名稱(chēng),并且無(wú)法通過(guò)文檔系統特殊文件訪(fǎng)問(wèn)。相反,它們只對內核網(wǎng)絡(luò )堆棧開(kāi)放。通常,用戶(hù)級應用軟件可訪(fǎng)問(wèn)內核網(wǎng)絡(luò )堆棧,而不能訪(fǎng)問(wèn)網(wǎng)絡(luò )接口設備。圖2中的藍色部分即為Cirrus Logic EP9312 片上系統結構中的Linux網(wǎng)絡(luò )接口設備。
  其他的設備驅動(dòng)程序還包括數據總線(xiàn)驅動(dòng)程序(USB, I2C, AMBA等)、 /proc 接口和視頻驅動(dòng)程序。這些類(lèi)型的設備無(wú)法被歸入以上的3個(gè)類(lèi)型中,但仍然是與Linux內核接口的設備驅動(dòng)程序。
  文檔系統特殊文件
  文檔系統特殊文件提供了從文檔系統訪(fǎng)問(wèn)硬件設備的可行性。這些訪(fǎng)問(wèn)點(diǎn)使用mknod 命令在文檔系統/dev 目錄中生成。命令如下:
  mknod <device name> <device type> <major number> <minor number>
  其中, <device name> 是給予硬件設備的名稱(chēng),如 /dev/hda1 是給予硬盤(pán)驅動(dòng)器的通用名稱(chēng)。<device type> 是設備驅動(dòng)程序的類(lèi)型--字符(char)、區塊等。<major number> 代表設備類(lèi)別和與之相配的驅動(dòng)程序。<minor number> 表示設備類(lèi)別中的一個(gè)實(shí)例,并僅對設備驅動(dòng)程序適用。例如,某個(gè)系統中同時(shí)采用2個(gè)硬盤(pán)驅動(dòng)器,它們都具有同樣的主要編號,使用同樣的設備驅動(dòng)軟件,但是該設備驅動(dòng)程序軟件卻會(huì )在內部根據次要編號區分這2個(gè)硬盤(pán)驅動(dòng)器。
  值得注意的是,并非所有的設備都執行特殊文件接口。如同本文前面已經(jīng)提及的,網(wǎng)絡(luò )設備驅動(dòng)程序就不采用這種接口訪(fǎng)問(wèn)設備。
        這種情況下,在設備文檔系統里,就會(huì )使用 devfs來(lái)獲得文檔設備特殊文件。devfs 目前廣受歡迎,但仍然還不是內核的默認功能。如果采用devfs 文檔系統,那么就無(wú)需mknod 來(lái)生成特殊文件了。相反,設備驅動(dòng)程序軟件會(huì )使用直接的devfs 文檔系統接口在空閑時(shí)刻或者設備剛被初始化時(shí)生成特殊文件。
  編程實(shí)例概述
  為便于示范非標準嵌入式平臺的Linux設備驅動(dòng)程序,本文將說(shuō)明EP9312的設備驅動(dòng)程序實(shí)現情況。其中,EP9312 IDE設備驅動(dòng)程序是區塊設備, EP9312觸摸屏為字符設備,代碼中的高級API/硬件接口、初始化序列和應用軟件編碼均將予以說(shuō)明。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: Linux 設備驅動(dòng)程序

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>