|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
好書預告《嵌入式系統(tǒng)接口設計與Linux驅(qū)動程序開發(fā)》 |
| 作者:hubert0707 欄目:嵌入式系統(tǒng) |
《嵌入式系統(tǒng)接口設計與Linux驅(qū)動程序開發(fā)》 劉淼編著 2006年6月第1次印出版,預計5月底6月初在各地書店有售。 ISBN 7810778617定價:39.00元 頁碼:420 前言 嵌入式系統(tǒng)已經(jīng)走進了人們的生活。隨著它在消費電子、航空航天、汽車電子、醫(yī)療保健、網(wǎng)絡通信、工業(yè)控制等各個領域的廣泛應用,“嵌入式系統(tǒng)”這個名詞已經(jīng)被各行各業(yè)的人所熟悉。它正在以各種不同的形式悄悄地改變著人們的生產(chǎn)、生活方式。無庸質(zhì)疑,嵌入式系統(tǒng)已成為了當今計算機領域的一個亮點。 從技術角度來看,嵌入式系統(tǒng)是軟件和硬件有機的結合體。一名合格的嵌入式系統(tǒng)設計人員往往要求同時具備軟件和硬件兩方面的知識。在大多數(shù)公司和科研單位,設計軟件和硬件的工程師是分開的,他們在工作時經(jīng)常需要互相協(xié)調(diào)來解決以下矛盾: 做系統(tǒng)底層的軟件工程師很希望學習到硬件設計的相關知識,以寫出更高效、可移植性強、接口更簡單的軟件模塊。 硬件設計人員也需要學習操作系統(tǒng)和驅(qū)動程序開發(fā)的相關知識,以減少軟件設計者的工作量,加速軟件的開發(fā)。他們需要考慮什么樣的硬件設計更容易編寫驅(qū)動程序,軟件處理起來效率更高。 嵌入式系統(tǒng)的總體設計師還需要考慮如何取舍軟硬件設計,哪一部分工作用硬件完成,哪一部分工作用軟件處理。本書瞄準了嵌入式系統(tǒng)中軟硬件協(xié)調(diào)的交點——驅(qū)動程序,針對Linux系統(tǒng)深入剖析了系統(tǒng)底層的體系結構。因為內(nèi)容涵蓋了軟件和硬件兩個層面,所以,無論是對于硬件工程師還是軟件開發(fā)者,我希望本書總有一半的知識對讀者有所幫助。 Linux是源碼完全開放的操作系統(tǒng),它發(fā)展迅速,愛好者眾多。在Linux的設計過程中,就充分考慮到了它在各種平臺的可移植性。這使得Linux逐漸成為了主流的嵌入式操作系統(tǒng)之一。同時,也正因為嵌入式系統(tǒng)的發(fā)展,才讓Linux有了廣泛的用武之地,才得到越來越多的人認可。以ARM為核心的處理器應用廣,成本低廉,軟件支持好,是當今市場占有率最高的32位處理器。本書以Linux和ARM處理器平臺為例,結合這兩大主流軟件和硬件,講述嵌入式系統(tǒng)開發(fā)的相關知識。希望對讀者進一步學習嵌入式系統(tǒng)有一定的參考價值。 可以說,是因為以Linux為代表的開源操作系統(tǒng)的出現(xiàn),才讓原本神秘的計算機操作系統(tǒng)變得普通;也可以說,正是因為ARM及其IP授權模式的出現(xiàn),使得原本神秘的處理器設計也同樣趨于平凡。由此可見,從學術角度看,只要深入學習嵌入式系統(tǒng),就把握了計算機科學中的兩大基本脈搏。 本書主要針對深入學習嵌入式系統(tǒng)軟硬件開發(fā)的讀者,使他們對嵌入式系統(tǒng)設計有一定的概念和基礎,具有一定的Linux知識和軟件開發(fā)基礎,因此,書中不會解釋任何Linux命令,也不會講述Linux的操作技巧和應用程序編寫、編譯等知識。書中經(jīng)常會省略很多基礎知識和原理上的討論,而請讀者參考相關文檔。因為嵌入式系統(tǒng)涉及的范圍太廣了,讀者的確需要相當多的參考資料,而不要僅僅指望一本書。本書的目的在于“指路”,結合我實際工作中的一些經(jīng)驗,提供給讀者一個思路和解決問題的辦法。 本書共分為16章和3個附錄。第1、2章結合實際簡要介紹嵌入式系統(tǒng)和Linux驅(qū)動程序的基礎性知識。第3~15章結合軟硬件系統(tǒng)地講述相關知識。在這些章節(jié)中,幾乎每一章都講述一種類型的硬件,同時分析其對應的Linux驅(qū)動程序的結構和編寫、移植方法。硬件包括I/O口、CAN總線、觸摸屏、I2C總線、PS/2接口、異步串口、音頻、顯示、IDE、PCMCIA、USB、以太網(wǎng)以及FLASH的使用等內(nèi)容。軟件涉及針對上述硬件的各種驅(qū)動程序在Linux下的體系結構,Linux的字符設備、塊設備和網(wǎng)絡設備驅(qū)動程序,ARM Linux的中斷處理過程等。最后,在第16章詳細分析BootLoader和ARM Linux內(nèi)核的啟動過程。 本書花費了大量的篇幅講述Linux內(nèi)核及其驅(qū)動程序中的源碼。我發(fā)現(xiàn)講述源碼是一個很令人頭痛的問題。要想把程序的來龍去脈講清楚,就不得不貼一些源碼上來。怎么貼?貼多少?太長的源碼印在紙面上,即使有詳細的注釋,也實在是不容易“瞻前顧后”地看清楚,而且也浪費版面——我寧愿在PC機上使用一些代碼閱讀軟件(比如Source Insight)去分析它們。太短的代碼有時又會有管中窺豹的感覺,不容易把問題說清楚。本書采用了一些折中的辦法:Linux內(nèi)核源碼開放,讀者可以自行找到。對于內(nèi)核中已有的代碼,只講述關鍵的部分,次要部分使用省略號帶過,或者只給出調(diào)用關系供讀者自行查找。把長代碼分模塊、分函數(shù)逐個分析。對于復雜的模塊,則使用標出行號的程序清單,在下文中統(tǒng)一逐行分析,而不是依靠程序中的注釋,因為它太散了,讀者不容易把握程序模塊的整體結構。 本書中列出的代碼盡量不超過2頁(最長的代碼約4頁),也就是盡可能保證讀者在閱讀書中代碼時,每翻一頁就可以看到相關程序的文字分析。這會比連續(xù)列出十幾頁的晦澀代碼,再去分析要更清晰易懂。在科技術語方面,本書采用中英文結合的方式。多數(shù)縮寫和英文都給出對應的中文。在書中盡量使用中文術語進行描述。但是,有些術語在實際中不容易(或者習慣)找到對應的中文,則直接使用英文,比如Bank、Cache(DCache和ICache)、BootLoader等。 “學習嵌入式系統(tǒng)開發(fā),請推薦一本書吧!边@是我看到很多人經(jīng)常要問的問題;叵胍幌伦约旱膶W習過程,發(fā)現(xiàn)并沒有仔細看過任何一本嵌入式系統(tǒng)方面的書,也很少去問這方面的問題。我從2001年底開始接觸嵌入式處理器和操作系統(tǒng),參考手頭上一個S3C44B0X開發(fā)板做自己需要的平臺,當時的目的是為了控制一個兩自由度機械臂。2003年初,為了得到一個完善的網(wǎng)絡協(xié)議棧和圖形界面的支持,不得不去接觸陌生的Linux。直到2005年6月,當完成UPTECHPXA270平臺開發(fā)時,我意識到所學到的一切都是因為有實際需求。嵌入式系統(tǒng)重在應用,它僅僅是一門技術,技術的進步不是靠書本而是來自實踐和需求。我很幸運,生活在網(wǎng)絡時代,可以主動找到所需要的信息。甚至一個在Linux下報告的錯誤,貼到Google上都可以找到解決方法。今天,我掌握的嵌入式系統(tǒng)方面的知識,主要來自于網(wǎng)絡和實踐。這時,我突然覺得有總結一下的必要了。因為Linux太復雜了,很多問題如果不及時記錄、總結出來,將來自己都會忘記。把我在做ARM和Linux方面的經(jīng)驗和技巧總結羅列出來,作為自己以后工作的一個參考。這就是本書的雛形。 通過網(wǎng)絡上各種技術交流的討論區(qū),我發(fā)現(xiàn)在嵌入式系統(tǒng)開發(fā)方面很多問題都是有共性的,為什么不把自己解決問題的方法與別人分享呢?這也是本書產(chǎn)生的原因。 在本書的編寫過程中,我得到了很多人的支持和熱心關注。首先感謝已經(jīng)去世的父親和姥爺。從小到大,是父親培養(yǎng)了我對新技術的興趣和學習能力;是姥爺影響了我的人生觀和待人處事的態(tài)度。還要感謝母親的支持和理解。北京到天津坐火車僅僅需要1小時19分鐘,我卻很少去天津陪伴她。感謝導師王田苗教授多年來對我的指導和信任。感謝北京航空航天大學ITM實驗室魏洪興、劉競猛老師,師兄孫愷、陶偉等人多年來的鼓勵和關心。感謝好朋友張睿、王璐、郭鵬、王新在學習和生活中真誠的幫助,是他們讓我知道了很多Linux相關的知識和技巧。 我從接觸Linux到現(xiàn)在不過3年的時間。因為本人水平和編寫書稿時間的限制,書中難免有遺漏、錯誤和不妥之處,懇請廣大讀者批評指正。聯(lián)系地址是threewaterl@163.com。有興趣的讀者也可到我的Blog(http://threewater.blog.com.cn)討論問題,交流信息及心得體會。網(wǎng)絡讓我學到技術和知識,我也希望把自己的所學回報給網(wǎng)絡。 劉淼 2006年2月9日凌晨于北京 -------------------------------- 目錄 第1章典型的嵌入式系統(tǒng)體系結構 1.1嵌入式系統(tǒng)概述1 1.2嵌入式系統(tǒng)的組成1 1.2.1嵌入式平臺的硬件架構2 1.2.2板級支持包和嵌入式系統(tǒng)2 1.2.3嵌入式系統(tǒng)上的應用程序3 1.3嵌入式系統(tǒng)的開發(fā)流程和優(yōu)勢3 1.4嵌入式系統(tǒng)的方案選擇5 1.4.1處理器的選擇5 1.4.2嵌入式操作系統(tǒng)的選擇5 1.5本書涉及的平臺及Linux內(nèi)核版本7 第2章Linux內(nèi)核與驅(qū)動程序 2.1Linux內(nèi)核與ARM8 2.2閱讀ARM Linux內(nèi)核源碼8 2.3編譯環(huán)境的建立9 2.4Linux驅(qū)動程序12 2.4.1用戶態(tài)與內(nèi)核態(tài)12 2.4.2Linux驅(qū)動程序結構13 2.4.3設備文件與設備文件系統(tǒng)13 第3章簡單的Linux字符設備驅(qū)動程序 3.1Linux字符設備驅(qū)動程序結構18 3.2一個雙色LED的Linux驅(qū)動程序19 3.2.1系統(tǒng)硬件平臺組成原理19 3.2.2Linux下的雙色LED驅(qū)動程序?qū)崿F(xiàn)21 3.2.3雙色LED驅(qū)動程序的測試32 3.3按鍵的Linux驅(qū)動程序33 3.3.1系統(tǒng)硬件平臺組成原理34 3.3.2Linux系統(tǒng)中斷分析35 3.3.3Linux下按鍵驅(qū)動程序的實現(xiàn)53 3.3.4按鍵驅(qū)動程序的測試60 第4章CAN總線接口設計與Linux驅(qū)動程序 4.1CAN總線接口設計62 4.1.1CAN總線概述62 4.1.2嵌入式處理器上擴展CAN總線 接口64 4.2CAN總線驅(qū)動程序的體系結構67 4.3CAN總線的Linux驅(qū)動程序68 4.4CAN總線驅(qū)動測試程序79 第5章觸摸屏接口設計與Linux驅(qū)動程序 5.1觸摸屏接口設計83 5.1.1觸摸屏概述83 5.1.2嵌入式處理器上擴展觸摸屏接口85 5.2觸摸屏驅(qū)動程序的體系結構87 5.3觸摸屏的Linux驅(qū)動程序分析88 5.3.1自定義的字符設備88 5.3.2Linux的輸入設備94 5.4觸摸屏驅(qū)動測試程序98 5.4.1自定義觸摸屏設備98 5.4.2輸入事件接口的觸摸屏設備99 5.5觸摸屏的校準方法101 第6章I2C總線與Linux驅(qū)動程序 6.1I2C總線接口設計106 6.1.1I2C總線概述106 6.1.2嵌入式處理器上的I2C總線接口109 6.2Linux下I2C總線驅(qū) |
| 2樓: | >>參與討論 |
| 作者: ruraliter 于 2006/5/30 11:30:00 發(fā)布:
來這做廣告了 不過頂一個先,哈哈 |
|
| 3樓: | >>參與討論 |
| 作者: db10 于 2006/5/30 20:28:00 發(fā)布:
已經(jīng)在書店看到了 |
|
| 4樓: | >>參與討論 |
| 作者: devicegate 于 2006/6/1 7:33:00 發(fā)布:
看上去不錯! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |