《Linux設備驅動開發詳解(第2版)》前言

前 言linux

本書自第1版出版以來,在極短的時間裏就進入了暢銷版的前十,得到了年度「十大原創經典」、「十大暢銷經典」等殊榮。在長達二年半的時間裏,本書始終保持在銷售排行榜的前列。在此,筆者要向廣大讀者的支持和厚愛表示最真摯地感謝!可是,本書自從出版後,也暴露了一些問題,主要體如今:編程

1.沒有現成的開發環境,讀者須要從頭至尾構建,而構建須要花費很長的時間,許多時候會不成功,加之配套光盤中的實例沒有Makefile,更加劇了操做的難度;網絡

2.沒有配套的開發板,大量的基於S3C2410的實例找不到能夠直接運行的平臺,所以讀者沒法親身體驗這些驅動;架構

3.一些內容並不實用或陳舊,也有一些知識點的講解語言晦澀,讀者難以理解,典型如platform驅動等;併發

4.一些知識點並不完整,如input驅動、USB UDC和gadget驅動、SPI驅動、ASoC驅動等。框架

有鑑於此,筆者對全書超過40%的篇幅進行了改動。這些改動,一些是對過期內容的刪除,一些是對講解不清知識點的修正,一些是對重點內容的加強,一些則是有用知識點的增長,其目的是要向讀者提供一套更加準確和完整的全方位、立體式Linux設備驅動學習平臺。第2版相對第1版的主要改動有:異步

1.直接提供VirtualBox虛擬機,該虛擬機上已包含了書中所需開發環境和源代碼,讀者再也不須要安裝環境便可進行試驗,書中詳細介紹了各個試驗的步驟;ide

2.提供了專門的配套學習板——基於三星S3C6410 SoC的LDD6410(Linux Device Drivers 6410),使得書中的各類真實設備驅動實例都找了試驗的依託;工具

3.全面升級內核至Linux 2.6.28.6,根據Linux內核API的變動狀況更新了書中的全部內容,典型如I2C驅動的體系結構、網絡NAPI的接口等,並對delayed_work等較新的內核機制進行了介紹;oop

4.刪除了大量過期的內容,如redhat Linux 2.4內核更新到2.六、傳統的按鍵驅動、SAA7113H啓動、傳統的IDE驅動等,同時新增了大量內容,包括Linux內核的編碼風格、Linux內核的移植、Android驅動、USB UDC和gadget驅動、ALSA SoC驅動、input驅動、SPI驅動、基於sysfs的設備驅動、Linux設備驅動的固件加載、Linux性能調優工具、Linux設備驅動的電源管理、Linux驅動的分層設計思想、主機驅動與設備驅動分離設計思想等;

5.在塊設備驅動方面,刪除了RAMDISK驅動實例,而新增了更加簡單易懂的vmem_disk驅動,相似於globalmem和globalfifo;

6.對許多關鍵知識點的講解進行了語言上的調整和內容方面的加強,以便讀者能更好的理解,譬如以專門章節講解platform驅動等。

在整體結構方面,全書仍然與第1版一致,共分4篇23章,內容安排以下。

第1篇(第1~3章)主要講解Linux設備驅動的基礎。

第1章主要講解設備驅動的做用,並從無操做系統的設備驅動引出了Linux操做系統下的設備驅動以及全書所用試驗環境的安裝方法。

第2章系統地講解了一個Linux驅動工程師應該掌握的硬件知識,使讀者打下Linux設備驅動開發的硬件基礎。本章涵蓋了各類類型的CPU、存儲器和常見的外設,並講解了硬件時序分析方法和儀器使用方法。

第3章將Linux設備驅動放在Linux 2.6內核背景中進行講解,說明Linux內核的基本原理和編程方法,爲編寫Linux設備驅動打下軟件基礎。

第2篇(第4~12章)主要講解Linux設備驅動編程的基礎理論、字符設備驅動、設備驅動設計中涉及的併發控制、同步等問題以及Linux驅動的工程化。

第四、5章分別講解Linux內核模塊和Linux設備文件系統。

第6~9章以虛擬設備globalmem和globalfifo爲主線講解了字符設備驅動的編寫方法,各章還講解了併發控制、阻塞與非阻塞、異步I/O等高級控制功能。

第十、11章分別講解Linux驅動編程中所涉及的中斷和定時器,內核和I/O操做處理方法。

globalmem和globalfifo驅動與真實項目中看到的驅動有一些不一樣,第12章詳細講解Linux設備驅動的工程化問題,讓讀者看到真實的驅動要考慮的諸多問題。

第3篇(第13~21章)深入剖析複雜設備驅動的體系架構,每一章都給出了具體的實例,涉及的設備包括塊設備、終端設備、I2C適配器與I2C設備、網絡設備、PCI設備、USB主機控制器、USB設備、UDC、gadget、LCD設備、Flash設備等。本篇的講解中抽象與具體相結合,先以模板的形式給出各類設備驅動的設計框架,而後用具體實例設備的驅動填充對應的模板。

第4篇(第22~23章)詳細講解了Linux設備驅動和內核的調試和移植方法。

第22章講解了Linux設備驅動的開發環境構建以及藉助printk、oops、/proc、strace、仿真器進行驅動調試的方法,最後也介紹了Linux的性能調優工具。

第23章講解了開發可移植驅動程序以及藉助芯片範例程序、demo板驅動和其餘操做系統驅動等現成代碼進行Linux驅動快速移植的方法,最後也介紹瞭如何在一塊新的SoC和電路板上構建Linux。

最後,再次對廣大讀者以及全部爲本書提出過寶貴意見、爲本書的誕生奉獻過力量的人們,表示最誠摯的謝意!歡迎讀者朋友繼續經過本書專用網址http://www.linuxdriver.cn/與做者和編輯團隊進行交流。

2010年6月

相關文章
相關標籤/搜索