第 1 章 設(shè)備驅(qū)動(dòng)簡(jiǎn)介

2018-02-23 16:24 更新

第?1?章?第一章 設(shè)備驅(qū)動(dòng)簡(jiǎn)介

以 Linux 為代表的自由操作系統(tǒng)的很多優(yōu)點(diǎn)之一, 是它們的內(nèi)部是開放給所有人看的. 操作系統(tǒng), 曾經(jīng)是一個(gè)隱藏的神秘的地方, 它的代碼只局限于少數(shù)的程序員, 現(xiàn)在已準(zhǔn)備好讓任何具備必要技能的人來(lái)檢查, 理解以及修改. Linux 已經(jīng)幫助使操作系統(tǒng)民主化. Linux 內(nèi)核保留有大量的復(fù)雜的代碼, 但是, 那些想要成為內(nèi)核 hacker 的人需要一個(gè)入口點(diǎn), 這樣他們可以進(jìn)入代碼中, 不會(huì)被代碼的復(fù)雜性壓倒. 通常, 設(shè)備驅(qū)動(dòng)提供了這樣的門路.

驅(qū)動(dòng)程序在 Linux 內(nèi)核里扮演著特殊的角色. 它們是截然不同的"黑盒子", 使硬件的特殊的一部分響應(yīng)定義好的內(nèi)部編程接口. 它們完全隱藏了設(shè)備工作的細(xì)節(jié). 用戶的活動(dòng)通過(guò)一套標(biāo)準(zhǔn)化的調(diào)用來(lái)進(jìn)行, 這些調(diào)用與特別的驅(qū)動(dòng)是獨(dú)立的; 設(shè)備驅(qū)動(dòng)的角色就是將這些調(diào)用映射到作用于實(shí)際硬件的和設(shè)備相關(guān)的操作上. 這個(gè)編程接口是這樣, 驅(qū)動(dòng)可以與內(nèi)核的其他部分分開建立, 并在需要的時(shí)候在運(yùn)行時(shí)"插入". 這種模塊化使得 Linux 驅(qū)動(dòng)易寫, 以致于目前有幾百個(gè)驅(qū)動(dòng)可用.

編寫 Linux 設(shè)備驅(qū)動(dòng)有許多理由讓人感興趣. 可用的新硬件出現(xiàn)的速率(以及陳舊的速率)就確保了驅(qū)動(dòng)編寫者在可見的將來(lái)內(nèi)是忙碌的. 個(gè)別人可能需要了解驅(qū)動(dòng)以便存取一個(gè)他們感興趣的特殊設(shè)備. 硬件供應(yīng)商, 通過(guò)為他們的產(chǎn)品開發(fā) Linux 驅(qū)動(dòng), 可以給他們的潛在市場(chǎng)增加大量的正在擴(kuò)張的 Linux 用戶基數(shù). 還有 Linux 系統(tǒng)的開放源碼性質(zhì)意味著如果驅(qū)動(dòng)編寫者愿意, 驅(qū)動(dòng)源碼能夠快速地散布到幾百萬(wàn)用戶.

本書指導(dǎo)你如何編寫你自己的驅(qū)動(dòng), 以及如何利用內(nèi)核相關(guān)的部分. 我們采用一種設(shè)備-獨(dú)立的方法; 編程技術(shù)和接口, 在任何可能的時(shí)候, 不會(huì)捆綁到任何特定的設(shè)備. 每一個(gè)驅(qū)動(dòng)都是不同的; 作為一個(gè)驅(qū)動(dòng)編寫者, 你需要深入理解你的特定設(shè)備. 但是大部分的原則和基本技術(shù)對(duì)所有驅(qū)動(dòng)都是一樣的. 本書無(wú)法教你關(guān)于你的設(shè)備的東西, 但是它給予你所需要的使你的設(shè)備運(yùn)行起來(lái)的背景知識(shí)的指導(dǎo).

在你學(xué)習(xí)編寫驅(qū)動(dòng)時(shí), 你通常會(huì)發(fā)現(xiàn)大量有關(guān) Linux 內(nèi)核的東西. 這也許會(huì)幫助你理解你的機(jī)器是如何工作的, 以及為什么事情不是如你所愿的快, 或者不是如你所要的進(jìn)行. 我們會(huì)逐步介紹新概念, 由非常簡(jiǎn)單的驅(qū)動(dòng)開始并建立它們; 每一個(gè)新概念都伴有例子代碼, 這樣的代碼不需要特別的硬件來(lái)測(cè)試.

本章不會(huì)真正進(jìn)入編寫代碼. 但是, 我們介紹一些 Linux 內(nèi)核的背景概念, 這樣在以后我們動(dòng)手編程時(shí), 你會(huì)感到樂于知道這些.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)