字元式装置简介.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
字元式装置简介

字元驅動程式原理與實習 瞭解字元裝置驅動程式的原理與程式架構,並以實際的範例說明如何載入和執行字元裝置驅動程式。 簡介 Linux驅動程式架構與設計流程說明 字元式裝置簡介 應用程式與Device Driver的溝通方式 實準備 系統設置 實作進行 簡介 本章實習的主要內容,將介紹字元裝置驅動程式。以下是本實驗的實習重點: 在理論部分將針對下列幾點加以說明: Linux驅動程式簡介 Linux驅動程式架構 字元式裝置簡介 驅動程式的設計流程 字元裝置驅動程式的實作要點 應用程式與Device Driver的溝通方式 在實作部分將包含下列幾點: 字元裝置驅動程式和應用程式的程式碼安裝與編譯。 字元裝置驅動程式和應用程式的程式碼說明。 字元裝置驅動程式和應用程式的驗證。 Linux驅動程式架構與設計流程說明 Linux的設備驅動程序用來處理各種硬體的多樣性。 Linux作業系統的基本功能之一是對設備處理的抽象化。所有的實體設備被當做正規的檔案來處理,可以被“打開”、“關閉”、“讀”和”寫“,就像我們用系統來處理檔案一樣。(“檔案”是一個邏輯上的概念﹔設備是一個實體。這裡談的是把設備抽象在/dev檔案系統下。)系統中每一個設備都對應一個設備特殊檔案(device special file),例如,系統中的第一個IDE磁碟的設備檔案名是/dev/had。 對於區塊設備(如,磁碟)和字元設備,它們的的設備特殊檔案通常是通過mknod命令用主設備號和次設備號來描述和建立。(主設備號和次設備號用來定位系統中兩個表。一個主設備對應一個設備驅動程式。次設備的含義是系統中可以存在多個設備屬於同一類,比如多個IDE磁碟。但它們只需要一個同樣的設備驅動程式來管理。)網路設備也同樣是一個設備特殊檔案,但它是由Linux核心來創建當系統發現並初始化網路控制器的時候。 支援硬體設備類型: Linux支援三種硬體設備類型:字元,區塊和網路設備。 字元設備:讀寫不需要緩衝,例如系統的序列介面/dev/cua0和/dev/cua1。 區塊設備:讀和寫只能以區塊的單位來進行,區塊的大小一般是512位元或1024位元。區塊設備的讀寫是通過緩衝Cache並且可以被隨機存取。隨機存取意味著你可以定位區塊設備的任一個區塊並進行讀取﹔區塊設備的存取可以通過其設備特殊檔案,但更通常的是通過檔案系統。只有區塊設備支援檔案系統的安裝(Mount)。 網路設備:存取是通過BSD的Socket介面和網路子系統。 驅動程式的共同性 Linux支援許多不同的設備驅動程式。它們都具備一些共同的屬性: 核心模式:設備驅動程式是核心的一部份,就像核心中其他程式碼一樣,如果不正確運行,會嚴重地毀壞系統。一個寫的不好的驅動程式 可能使系統崩潰,並可能將檔案系統打亂丟失資料。 核心介面:設備驅動程式必須提供一個標準的介面給Linux核心或相應的子系統。例如,終端驅動程式提供一個檔案I/O介面給Linux核心。 核心機制和服務:設備驅動程式利用標準的核心服務,如記憶體分配,中斷傳送,等待隊列來運行。 可裝卸的:大多數的Linux設備驅動程式可以在需要時被載進系統作為核心的一個模組﹔可以被卸下當不再被使用。這使的核心的自適應性非常好,系統的資源可以有效地被利用。 可重構的:Linux設備驅動程式可以被構造進核心。當核心重新編譯時,那些設備就是可重構的。 動態的:當系統啟動時,每一個設備驅動程式進行初始化,尋找其控制的設備。如果核心中一個設備驅動程式所對應的控制設備不存在(例如沒有安裝SCSI磁碟雖然系統有SCSI驅動程式),也沒有關系。這種情況下,系統中只不過是多了一個“多餘的”驅動程式,占用了一些系統記憶體而已。對系統本身無礙。 核心模組程式的格式: 外框架構的格式,如下圖: 內部實作的格式,如下圖: Linux驅動程式架構 上圖是Linux驅動程式的整體架構圖,以下將做幾點說明: Linux 驅動程式類型 如上圖部份,Linux device driver 可分成 3 種類型分別是 character device driver block device driver network device driver Application與Device Driver的溝通方式: application 透過 system call 介面與 kernel 溝通。 system call透過 VFS 層與 Linux 驅動程式物件溝通。 驅動程式本身可分成 2 個層面來討論: virtual device driver:實作與user application的溝通介面。 physical device driver:實作硬體裝置的實際執行動作。 以下將針對Virtual device driver與

文档评论(0)

sunshaoying + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档