出版時(shí)間:2009 出版社:人民郵電出版社 作者:Venkateswaran, S 頁數(shù):714
Tag標(biāo)簽:無
前言
20世紀(jì)90年代末,我們IBM的一群同事進(jìn)行了一項(xiàng)將Linux內(nèi)核移植到一種智能手表上的工作。目標(biāo)設(shè)備雖然微不足道,但是移植Linux的任務(wù)卻相當(dāng)艱巨。在當(dāng)時(shí),內(nèi)核中還不存在MTD(MemoryTechnologyDevice,內(nèi)存技術(shù)設(shè)備)子系統(tǒng),這意味著在文件系統(tǒng)能夠運(yùn)行在這種手表的閃存之前,我們不得不從頭開發(fā)必要的存儲(chǔ)驅(qū)動(dòng)器。由于當(dāng)時(shí)內(nèi)核的輸入事件驅(qū)動(dòng)接口尚未誕生,因此手表的觸摸屏與用戶應(yīng)用程序的接口非常復(fù)雜。讓XWindows運(yùn)行在手表的LCD上十分困難,因?yàn)閄Windows和幀緩沖設(shè)備驅(qū)動(dòng)程序搭配得并不好。如果你戴著一塊防水的Linux智能手表,卻不能躺在浴缸里實(shí)時(shí)獲得股票行情,那么這塊手表還有什么用?Linux幾年前就已集成了藍(lán)牙技術(shù),而當(dāng)時(shí)我們卻花費(fèi)了數(shù)月的時(shí)間將一種專有的藍(lán)牙協(xié)議棧移植到手表上,從而使得這種手表具備了Internet連網(wǎng)能力。電源管理系統(tǒng)可以讓這種手表的電池多運(yùn)行幾個(gè)小時(shí),因此我們又設(shè)計(jì)了一個(gè)省電方案。那時(shí)候,Linux紅外項(xiàng)目Linux-Infrared還不穩(wěn)定,我們十分小心地用紅外協(xié)議棧,設(shè)計(jì)出使用紅外鍵盤作為手表的數(shù)據(jù)輸入設(shè)備。最后,由于當(dāng)時(shí)還沒有能應(yīng)用于消費(fèi)類電子產(chǎn)品的成型的編譯器發(fā)行版,我們也不得不編譯出編譯器,并交叉編譯出一個(gè)緊湊的應(yīng)用程序集。時(shí)光飛逝,當(dāng)年嗷嗷待哺的企鵝寶寶已經(jīng)成長為一名健壯的少年。過去我們編寫了成千上萬行代碼并耗時(shí)一年完成的任務(wù),若采用現(xiàn)在的內(nèi)核,只需要幾天的時(shí)間就可以完成。但是,要成為一名能巧妙地解決多種問題的高級(jí)內(nèi)核工程師,你需要理解今天的Linux內(nèi)核提供的各種功能和設(shè)施。關(guān)于本書在Linux內(nèi)核源代碼樹提供的各個(gè)子系統(tǒng)中,drivers/目錄是其中最大的一個(gè)分支,它比其他子系統(tǒng)大數(shù)倍。隨著各種新技術(shù)的廣泛應(yīng)用,內(nèi)核中新的設(shè)備驅(qū)動(dòng)程序的開發(fā)工作正在穩(wěn)步加速。最新的Linux內(nèi)核支持多達(dá)70余種設(shè)備驅(qū)動(dòng)程序的龐大家族。本書主要講解Linux設(shè)備驅(qū)動(dòng)程序,介紹了目前內(nèi)核所支持的主要設(shè)備類型的設(shè)計(jì)與開發(fā),其中包括當(dāng)年我在開發(fā)Linux-on-Watch項(xiàng)目時(shí)未遇到的設(shè)備。本書在講解每種設(shè)備驅(qū)動(dòng)程序家族的時(shí)候,先介紹與該驅(qū)動(dòng)程序相關(guān)的技術(shù),接著給出一個(gè)實(shí)際的開發(fā)例子,最后列出相關(guān)的內(nèi)核源代碼文件。在踏入Linux設(shè)備驅(qū)動(dòng)程序領(lǐng)域之前,本書先介紹了內(nèi)核以及Linux2.6的重要特性,重點(diǎn)講解了設(shè)備驅(qū)動(dòng)程序編寫者感興趣的內(nèi)核知識(shí)。
內(nèi)容概要
本書是Linux設(shè)備驅(qū)動(dòng)程序領(lǐng)域的權(quán)威著作。全書基于2.6內(nèi)核,不僅透徹講解了基本概念和技術(shù),更深入探討了其他書沒有涵蓋或輒止淺嘗的許多重要主題和關(guān)鍵難點(diǎn),如PCMCIA、I2C和USB等外部總線、視頻、音頻、無線連網(wǎng)和閃存等技術(shù)。在解釋每一個(gè)技術(shù)時(shí),均講解了相關(guān)的內(nèi)核源碼文件,并給出了完整的開發(fā)實(shí)例?! ”緯m合中高級(jí)Linux 開發(fā)人員閱讀。
作者簡介
Sreekrishnan Venkateswaran 世界頂級(jí)Linux開發(fā)技術(shù)專家。在IBM工作多年,有豐富的嵌入式Linux和驅(qū)動(dòng)程序開發(fā)經(jīng)驗(yàn),曾經(jīng)將Linux移植到了手表、音樂播放器、VoIP電話、心臟起搏器以及遠(yuǎn)程門診監(jiān)控系統(tǒng)等各種設(shè)備上。目前負(fù)責(zé)IBM印度公司的嵌入式解決方案組。他曾擔(dān)任Linux Magazine的特邀編輯,主持內(nèi)核技術(shù)專欄作。
書籍目錄
Chapter 1 Introduction Chapter 2 A Peek Inside the Kernel Chapter 3 Kernel FacilitiesChapter 4 Laying the GroundworkChapter 5 Character DriversChapter 6 Serial DriversChapter 7 Input DriversChapter 8 The Inter-Integrated Circuit ProtocolChapter 9 PCMCIA and Compact FlashChapter 10 Peripheral Component InterconnectChapter 11 Universal Serial Bus Chapter 12 Video DriversChapter 13 Audio Drivers Chapter 14 Block Drivers Chapter 15 Network Interface CardsChapter 16 Linux Without WiresChapter 17 Memory Technology Devices Chapter 18 Embedding Linux Chapter 19 Drivers in User Space Chapter 20 More Devices and DriversChapter 21 Debugging Device Drivers Chapter 22 Maintenance and DeliveryChapter 23 Shutting DownAppendix A Linux Assembly Appendix B Linux and the BIOSAppendix C Seq Files Index
章節(jié)摘錄
插圖:Linux has trekked many a terrain and is now state of the art, so you can use it as avehicle to understand operating system concepts, processor architectures, and evenindustry domains. When you learn a technique used by a device driver subsystem,look one level deeper and probe the underlying reasons behind that design choice. Wherever not explicitly stated, the text assumes the 32-bit x86 architecture. Thebook is, however, mindful of the fact that you are more likely to write device driversfor embedded devices than for conventional PC-compatible systems. The chapter onserial drivers, for example, examines two devices: a touch controller on a PC deriva-tive and a UART on a cell phone. Or the chapter on I2C device drivers looks at anEEPROM on a PC system and a Real Time Clock on an embedded device. The bookalso teaches you about the core infrastructure that the kernel provides for most driverclasses, which hides architecture dependencies from device drivers. Device driver debugging techniques are discussed near the end of the book inChapter 21, so you might find it worthwhile to forward to that chapter as you developdrivers while reading the book. This book is based on the 2.6 kernel, which has substantial changes across the boardfrom 2.4, touching all major subsystems. Hopefully, you have installed a 2.6,basedLinux on your system by now and started experimenting with the kernel sources. Eachchapter takes the liberty, of profusely pointing you to relevant kernel source files fortwo main reasons:
媒體關(guān)注與評(píng)論
目前最全面深入的Linux設(shè)備驅(qū)動(dòng)程序著作,世界級(jí)Linux技術(shù)大師力作,大量技術(shù)內(nèi)幕首次公開?!斑@是我讀過的最全面的Linux設(shè)備驅(qū)動(dòng)程序著作。” ——Alan Cox,Linux內(nèi)核維護(hù)者“這本書涵蓋了各種Linux設(shè)備驅(qū)動(dòng)程序,全面而翔實(shí)?!薄 猅heodore Ts’o,Linux基金會(huì)CTO,北美第一位內(nèi)核開發(fā)者
編輯推薦
在回顧了驅(qū)動(dòng)開發(fā)的各種基礎(chǔ)知識(shí)和最新的Linux 2.6內(nèi)核相關(guān)特性之后,《精通Linux驅(qū)動(dòng)程序開發(fā)(英文版)》的作者不僅講述了其他設(shè)備驅(qū)動(dòng)程序圖書中都會(huì)涉及的較容易的內(nèi)容,更迎難而上,深入探討了驅(qū)動(dòng)開發(fā)包括嵌入式Linux開發(fā)中必須面對(duì)的難點(diǎn),比如PCMCIA、USB、I2C、視頻、音頻、閃存、無線通信等,揭示了許多內(nèi)幕技術(shù)的秘密。對(duì)每種驅(qū)動(dòng)程序,書中在剖析關(guān)鍵技術(shù)之外,還帶你查看相關(guān)的內(nèi)核源代碼,提供完整的實(shí)例。時(shí)至今日,Linux操作系統(tǒng)以其跨平臺(tái)、開源、支持眾多應(yīng)用軟件和網(wǎng)絡(luò)協(xié)議等優(yōu)點(diǎn),已經(jīng)成為應(yīng)用最廣泛的開發(fā)平臺(tái)。在這部貼近實(shí)戰(zhàn)、實(shí)例豐富的著作中,世界上經(jīng)驗(yàn)最豐富的Linux驅(qū)動(dòng)程序開發(fā)者之一系統(tǒng)全面地闡述了如何為各種設(shè)備開發(fā)可靠的驅(qū)動(dòng)程序。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載
精通Linux驅(qū)動(dòng)程序開發(fā) PDF格式下載