《Linux裝置驅動開發詳解(基於最新4.0核心)》前言

來源:互聯網
上載者:User

標籤:linux裝置驅動開發詳解

         Linux從未停歇腳步。Linus Torvalds,世界上最偉大的程式員之一,Linux核心的創始人,Git的締造者,仍然在沒日沒夜的合并補丁,升級核心。做技術,從來沒有終南捷徑,拼的就是坐冷板凳的傻勁。

         這是一個連閱讀都被片段化的時代,在這樣一個時代,人們趨向於激進、浮躁。內心的不安寧使我們極難靜下心來研究什麼。我見過許許多多的Linux工程師,他們的簡曆書寫著“精通”Linux核心,有多年的工作經驗,而他們的“精通”卻只是把某個寄存器從0改成1,從1改成0的不斷重複;我見過許許多多的Linux工程師,他們終日埋頭苦幹,敲打著自己的機器和電路板,卻從未冷靜下來思考,並不斷重構和升華自己的知識體系。

         這是要把牢底坐穿的程式員。這樣“忙忙碌碌”的程式員,從來都不是什麼好程式員。

優秀的程式員,最優秀的品質是能夠內心寧靜地學習與思考問題,透析代碼背後的架構、原理和設計思想。沒有思想的代碼是垃圾代碼,沒有思想的程式員,只是在完成低水平重複建設的體力活。很多程式員,連自己寫的代碼最後在機器裡面怎麼跑都從不過問,很多事情莫名其妙地發生了,很多bug莫名其妙地消失了……永遠都是得過且過。

         由此,衍生出《Linux裝置驅動開發詳解》新版的第一個出發點,那就是帶給讀者更多關於Linux開發背後思想的講解,奠定根基。《Linux裝置驅動開發詳解(基於4.0核心)》呈現給讀者的,更多的是一種思考,而不是知識點的簡單羅列。

         這次更新更進一步加強了對驅動編程所涉及Linux核心最底層機理的講解,並對前2版的基礎理論部分進行了大篇幅地重寫,執行個體代碼也被大面積重構。大幅度修改的內容包括中斷、定時器、進程生命週期、uevent、並發、編譯亂序、執行亂序、等待隊列、I/O模型、記憶體管理等。這些知識點是如此重要,是真正證明程式員對Linux理解的部分,只有打好根基,才能遊刃有餘。

         新版刪除了《Linux裝置驅動開發詳解》第一版、第二版大量描述各種具體具體驅動類型的章節比如Sound、PCI、MTD、TTY等,而將更多焦點轉移到了驅動編程背後的核心原理, 並試圖從Linux核心上百個驅動子系統中尋找出內部的規律,以培養讀者舉一反三的能力。

         Linux核心有上百個驅動子系統,這一點從核心的drivers子目錄就可以看出來:

650) this.width=650;" src="http://img.blog.csdn.net/20150428001301883?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvMjFjbmJhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />


         好吧,傻子才會一個目錄一個目錄地去看,一個目錄一個目錄地從頭學起。我們勢必要尋找各種驅動子系統的共性,摸索規律。本次更新,我們將更多看到各驅動子系統的類比,以及驅動子系統的層次化設計。

         技術工作,從來都不是一勞永逸。這世界變化太快,當前技術革新的速度數倍於我們父輩祖輩祖祖輩經過的任何時代。證明你是真球迷還是偽球迷的時候到了。這是偽程式員的地獄,也是真程式員痛苦中的狂歡。

         從浩如煙海的知識體系中、不斷更新的軟體版本中終生學習,不斷攻克一個個挑戰,擷取新的養分,尋找新的靈感,這實在是黑暗碼農生涯中不斷閃現的璀璨光芒。

自本書第一版、第二版發布後,核心版本不斷重新整理,3.0、3.1、3.2…3.19、4.0、4.1,變化的是軟體的架構,不變的是Linus的熱情。

這無疑是本次升級的第二個出發點,更新Linux驅動編程的知識體系以符合最新的時代。所以,本次更新大量新增了關於Device Tree、ARM Linux移植、Linux電源管理、GPIO、clock、timer、pinmux、DMA等的內容。我們的操作平台,也轉移到了QEMU類比的4核Cortex-A9電路板,書中的執行個體,基本都轉移到了市面流行的新晶片。

         最近兩三年,老是聽到許多程式員抱怨,缺乏講新核心的資料、缺乏從頭到尾講Device Tree的資料,但是我想說,這實在不是什麼痛點。痛點仍然是本書第一個出發點要解決的問題,如果有好的基礎,以優秀程式員極強的學習能力,應該很快就可以掌握這些新知識。機制沒有變,變化的是只是策略。

         所以學習能力,也是優秀程式員的又一品質。沒有人生下來就是天才,良好學習能力的培訓,本身也是通過不斷學習來擷取的。可以說,學的越多的人,學新東西一定越快,學習能力也變得越強。因為,知識的共通性實在太多。

         讀者閱讀本書的思路,不應該是企圖把它當成一本工具書、查API的書,而是一本梳理完整理論體系、開發思想、軟體架構的書。唯如此,我們才能適應未來新的變化。

         不知不覺中,離本書的第一次出版已經過去了七個年頭。而自本次更新開始實施至今,也經過了一輪寒暑更替。歲月如歌,七載而下,我已非當年的意氣青年。本書一版,二版,再版,這實非當初的預料。回首過去,我們驚奇地發現,這七年,正好是Linux由弱而盛,節節勝利的七年。也是許多如我一般的碼農成家立業、結婚生子的七年。未來七年的Linux會是什麼樣子,我們無從預料。本書是否會有更進一步的新版,我們也無法預知,一如Linux沒有路線圖。社區和生態就是最好的Roadmap,萬事隨緣,而唯一不變的只是激情。

         時代的滾滾車輪,推動著Linux核心的版本不斷向前,也推動著每個人的人生。紅塵滾滾,

         我不去想是否能夠成功,

         既然選擇了遠方,

         便只顧風雨兼程。

         

         最後,本書能得以出版,要感謝帶領我向前的人生導師和我的眾多小夥伴,他們或者在我人生的關鍵時刻改變了我,或者帶給了我黑暗程式生涯中無盡的快樂和動力。我的小夥伴,他們力挺我,鼓勵我,也辱罵我,奚落我,這些,就是真摯的友情。

         謹以此書,致以對楊平先生、何昭然、方毅偉、李華毅、宋志吾、杜向龍、葉祥振、劉昊、王榕、何曄、王立賽、曾過、劉永生、段炳華、章君義、王文琪、盧鵬、劉濤、徐西寧、吳赫、任橋偉、秦龍廷、胡良兵、張家旺、王雷、Bryan Wu、Eric Miao、Qipan Li、Guoying Zhang、陳健松、Haoyu Zhong、劉洪濤、季久峰、邴傑、孫志忠、吳國舉、Bob Liu、趙小吾、賀亞鋒、劉仕傑、Hao Yin等老師和小夥伴的深深感激;謹以此書,致以對我的父母大人、老婆大人、兄長和姐姐、偉大丈母娘的深深感激,本書新版的寫作時間超過一年,其過程是一種巨大的肉體和精神折磨,沒有他們的默默支援和不斷鞭策,是不可能完成的;謹以此書,致以對為本書做出巨大貢獻的編輯、策劃老師們,尤其是張國強老師深深的感激!

         由於篇幅的關係,我沒有辦法一一列舉所有我要感激的人入感謝名單。但是,我這些年從你們那裡獲得的,遠遠大於我付出的。所以,內心深處,唯有懷著對小夥伴深深的感恩,不斷前行。歲月如歌,吾歌狂行。

 宋寶華

2015年4月於上海浦東


《Linux裝置驅動開發詳解(基於最新4.0核心)》前言

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.