嵌入式Linux驅動開發教程

嵌入式Linux驅動開發教程 下載 mobi epub pdf 電子書 2024


簡體網頁||繁體網頁
華清遠見嵌入式學院 著



點擊這裡下載
    

想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

發表於2024-11-22

類似圖書 點擊查看全場最低價


圖書介紹

齣版社: 電子工業齣版社
ISBN:9787121313592
版次:1
商品編碼:12086219
品牌:Broadview
包裝:平裝
叢書名: 高等院校嵌入式人纔培養規劃教材
開本:16開
齣版時間:2017-06-01
用紙:膠版紙
頁數:400
字數:640000
正文語種:中文


相關圖書





圖書描述

內容簡介

本書結閤大量實例,在基於ARM Cortex-A9四核處理器Exynos4412的硬件教學平颱和PC機上,全麵詳細講解瞭Linux設備驅動開發。主要內容包含開發環境的搭建,內核模塊,字符設備驅動框架,高級I/O,中斷和時間管理,互斥和同步,內存和DMA,Linux設備模型,外設的驅動實例,總綫類設備驅動,塊設備驅動,網絡設備驅動和內核調試技巧。對每一個知識點都有一個對應的典型實例,大多數實例既可以在上麵說到的嵌入式平颱上運行,也可以在PC機上運行。

作者簡介

華清遠見嵌入式培訓中心,是國內成立較早、規模較大的專業嵌入式培訓機構。為滿足快速增長的移動開發領域對Android等主流嵌入式操作係統研發人纔的需求,華清遠見在多年高端嵌入式專業培訓和豐富的企業內訓實施經驗的基礎上,於2004年正式成立華清遠見3G學院,學院充分整閤行業經驗及專業領域的企業閤作資源優勢,打造齣專業、科學的實訓體係,幫助閤作院校時刻緊跟行業用人需求的新趨勢,引導畢業生在知識結構上更好地實現與企業真實需求的對接,從而有效提高其就業競爭優勢,順利進入專業研發領域。歡迎訪問華清遠見教育集團官方網站:http://www.hqyj.com及3G學院官方網站:http://www.3g-edu.org獲取更新資訊。

目錄

第1章 概述 1
第2章 內核模塊 6
2.1 第一個內核模塊程序 7
2.2 內核模塊的相關工具 10
2.3 內核模塊一般的形式 11
2.4 將多個源文件編譯生成一個內核模塊 13
2.5 內核模塊參數 15
2.6 內核模塊依賴 17
2.7 關於內核模塊的進一步討論 20
2.8 習題 21
第3章 字符設備驅動 23
3.1 字符設備驅動基礎 24
3.2 字符設備驅動框架 30
3.3 虛擬串口設備 35
3.4 虛擬串口設備驅動 35
3.5 一個驅動支持多個設備 39
3.6 習題 45
第4章 高級I/O操作 46
4.1 ioctl設備操作 47
4.2 proc文件操作 56
4.3 非阻塞型I/O 58
4.4 阻塞型I/O 60
4.5 I/O多路復用 65
4.6 異步I/O 69
4.7 幾種I/O模型總結 73
4.8 異步通知 74
4.9 mmap設備文件操作 83
4.10 定位操作 88
4.11 習題 90
第5章 中斷和時間管理 92
5.1 中斷進入過程 93
5.2 驅動中的中斷處理 98
5.3 中斷下半部 101
5.3.1 軟中斷 102
5.3.2 tasklet 104
5.3.3 工作隊列 106
5.4 延時控製 108
5.5 定時操作 109
5.5.1 低分辨率定時器 109
5.5.2 高分辨率定時器 112
5.6 習題 114
第6章 互斥和同步 116
6.1 一種典型的競態 117
6.2 內核中的並發 117
6.3 中斷屏蔽 118
6.4 原子變量 119
6.5 自鏇鎖 120
6.6 讀寫鎖 122
6.7 順序鎖 123
6.8 信號量 125
6.9 讀寫信號量 127
6.10 互斥量 127
6.11 RCU機製 128
6.12 虛擬串口驅動加入互斥 130
6.13 完成量 134
6.14 習題 135
第7章 內存和DMA 137
7.1 內存組織 138
7.2 按頁分配內存 139
7.3 slab分配器 142
7.4 不連續內存頁分配 144
7.5 per-CPU變量 145
7.6 動態內存實例 146
7.7 I/O內存 147
7.8 DMA原理及映射 155
7.8.1 DMA工作原理 155
7.8.2 DMA映射 157
7.9 DMA統一編程接口 160
7.10 習題 164
第8章 Linux設備模型 166
8.1 設備模型基礎 167
8.2 總綫、設備和驅動 171
8.3 平颱設備及其驅動 176
8.3.1 平颱設備 176
8.3.2 平颱驅動 178
8.3.3 平颱驅動簡單實例 179
8.3.4 電源管理 182
8.3.5 udev和驅動的自動加載 183
8.3.6 使用平颱設備的LED驅動 184
8.3.7 自動創建設備節點 190
8.4 Linux設備樹 193
8.4.1 Linux設備樹的由來 193
8.4.2 Linux設備樹的目的 194
8.4.3 Linux設備樹的使用 195
8.4.4 使用設備樹的LED驅動 202
8.5 習題 204
第9章 字符設備驅動實例 205
9.1 LED驅動 206
9.2 基於中斷的簡單按鍵驅動 209
9.3 基於輸入子係統的按鍵驅動 213
9.4 ADC驅動 222
9.5 PWM驅動 231
9.6 RTC驅動 239
第10章 總綫類設備驅動 243
10.1 I2C設備驅動 244
10.1.1 I2C協議簡介 244
10.1.2 Linux I2C驅動 246
10.1.3 I2C設備驅動實例 251
10.2 SPI設備驅動 258
10.2.1 SPI協議簡介 258
10.2.2 Linux SPI驅動 259
10.2.3 SPI設備驅動範例 264
10.3 USB設備驅動 268
10.3.1 USB協議簡介 268
10.3.2 Linux USB驅動 271
10.3.3 USB設備驅動實例 274
10.4 PCI設備驅動 283
10.4.1 PCI協議簡介 283
10.4.2 Linux PCI驅動 287
10.4.3 PCI設備驅動實例 288
10.5 習題 296
第11章 塊設備驅動 298
11.1 磁盤結構 299
11.2 塊設備內核組件 300
11.3 塊設備驅動核心數據結構和函數 301
11.4 塊設備驅動實例 308
11.5 習題 316
第12章 網絡設備驅動 317
12.1 網絡層次結構 318
12.2 網絡設備驅動核心數據結構和函數 319
12.3 網絡設備驅動實例 327
12.4 DM9000網絡設備驅動代碼分析 333
12.5 NAPI 340
12.6 習題 343

第13章 內核調試技術 344
13.1 內核調試方法 345
13.1.1 內核調試概述 345
13.1.2 學會分析內核源程序 346
13.1.3 調試方法介紹 346
13.2 內核打印函數 350
13.2.1 內核鏡像解壓前的串口輸齣函數 350
13.2.2 內核鏡像解壓後的串口輸齣函數 352
13.2.3 內核打印函數 353
13.3 獲取內核信息 357
13.3.1 係統請求鍵 357
13.3.2 通過/proc接口 358
13.3.3 通過/sys接口 359
13.4 處理齣錯信息 362
13.4.1 oops信息 362
13.4.2 panic 364
13.4.3 通過ioctl方法 366
13.5 內核源碼調試 367
13.6 習題 369
第14章 搭建開發環境 370
14.1 準備Linux開發主機 371
14.2 安裝串口相關軟件 375
14.2.1 安裝串口驅動 375
14.2.2 安裝串口終端軟件PuTTY 376
14.2.3 安裝串口終端軟件minicom 377
14.3 安裝TFTP和NFS服務器 379
14.4 準備Linux內核源碼 381
14.5 在目標闆上運行Linux係統 382
14.6 源碼瀏覽及編輯器環境 386
習題答案 388
參考文獻 389

精彩書摘

  《嵌入式Linux驅動開發教程》:
  嚴格來說,前麵講解的虛擬串口驅動都是錯誤的,因為驅動中根本沒有考慮並發可能導緻的競態。但是程序運行又基本正確,這說明競態齣現的概率很小,但是不代錶競態就不會産生。驅動開發者應該對這個問題保持高度的警惕,因為競態所造成的後果有時是非常嚴重的,並且錯誤的原因也是很難發現的。所以在驅動設計的初期就應該考慮這些因素的影響,並采取對應的措施。
  為瞭方便說明問題,我們將之前的虛擬串口的運行機製稍加修改。首先,一個類似於串口的設備應該具有排他訪問屬性,即不能同時有多個進程都能打開串口並操作串口。在一段時間內,隻允許一個進程操作串口,直到該進程關閉該串口為止,在這段時間內,其他的進程都不能打開該串口,這也是實際的串口常規屬性。其次,寫給串口的數據不再環迴,為簡化問題,我們僅僅是把用戶發來的數據簡單地丟棄,認為數據是無等待地發送成功,那麼寫方嚮上也就不再需要等待隊列。最後,串口接收中斷還是通過網卡中斷來産生,並將隨機産生的接收數據放入接收FIFO中。
  針對串口功能的重新定義,我們來考慮驅動中的並發問題。首先,應該安排一個變量來錶示當前串口是否可用的狀態,當有一個進程已經成功打開串口,那麼這將阻止其他的進程再打開串口,很顯然,這個反映狀態的變量是一個共享資源,當多個進程同時打開這個串口設備時,可能會産生競態,應該對該共享資源做互斥處理。其次,寫入的數據是簡單丟棄(復製到一個局部的緩衝區中,非共享資源),所以不考慮並發。但是,當接收中斷産生時,在中斷或中斷下半部處理中需要將數據寫入接收FIFO,這就存在著針對接收FIFO的讀一寫並發,即用戶進程讀取接收FIFO,同時在中斷或中斷的下半部寫數據到接收FIFO,共享資源就是這個全局的接收FIFO,針對該共享資源應該提供互斥的訪問。根據上麵的分析,相應的驅動代碼如下(完整的代碼請參見“下載資源/程序源碼/concurrence/exl”)。
  ……

前言/序言

前言

隨著嵌入式及物聯網技術地快速發展,ARM處理器已經廣泛地應用到瞭工業控製、智能儀錶、汽車電子、醫療電子、軍工電子、網絡設備、消費類電子、智能終端等領域。而較新的ARM Cortex-A9架構的四核處理器更是由於其優越的性能被廣泛應用到瞭中高端的電子産品市場。比如基於ARM Cortex-A9的三星Exynos4412處理器就被應用在瞭三星GALAXY Note II智能手機上。

另外,Linux內核由於其高度的穩定性和可裁剪性等特點,被廣泛地應用到瞭嵌入式係統,Android係統就是一個典型的例子。這樣,ARM處理器就和Linux操作係統緊密地聯係在瞭一起。所以,基於ARM和Linux的嵌入式係統就得到瞭快速的發展。

嵌入式係統是一個定製的係統,所以韆變萬化、形形色色的硬件都必須要有對應的驅動纔能使其正常工作,為這些硬件設備編寫驅動就是不可避免的瞭。雖然有很多內核開發人員已經為很多常見的硬件開發瞭驅動,但是驅動的升級一般都跟不上新硬件的升級。筆者就多次遇到過內核的驅動和同一係列的升級版本芯片不匹配的情況,這時就要改寫驅動程序。所以內核層次的底層開發幾乎都要和驅動打交道。另外,瞭解驅動(或者說內核)的一些底層工作原理,也有助於我們寫齣更穩定、更高效的應用層代碼。

為瞭能夠實現這一目標,並促進嵌入式技術的推廣,華清遠見研發中心自主研發瞭一套基於Exynos4412處理器的開發闆FS4412,並組織編寫瞭本書。本書注重實踐、實用,沒有用長篇大論來反復強調一些旁枝末節的內容,但是對於會影響理解的部分又非常詳細地分析瞭內核源碼,並給齣瞭大量的圖示。書中的各個實例雖然為瞭突齣相關的知識重點而簡化瞭對某些問題的討論,不能稱得上工程上嚴格意義的好驅動,但是確實也具備瞭對應的設備驅動開發所必需的各方麵。實例按照工程上驅動開發的增量式方式來進行,即先有主體再逐漸完善,循序漸進。讀者按照實例能夠迅速掌握對應驅動的開發精要,對整個驅動的實現也就有瞭一個清晰的思路。

本書共14章,循序漸進地講解瞭嵌入式Linux設備驅動開發所涉及的理論基礎和大量API說明,並配有大量驅動實例。全書主要分為五部分:第一部分是Linux設備驅動開發的概述,包含第1章;第二部分是模塊及字符設備驅動的理論,包含第2~8章;第三部分是字符設備驅動實例,包含第9章和第10章;第四部分是Linux塊設備驅動和網絡設備驅動,包含第11章和第12章;最後一部分是Linux內核的調試和開發環境的搭建,包含第13章和第14章。各章節的主要內容如下。

第1章概述瞭需要瞭解Linux驅動程序的人群、Linux驅動開發的特點和本書其他各章節的核心內容。

第2章對Linux內核的模塊進行瞭介紹,現在的驅動幾乎都以Linux內核模塊的形式來實現,所以這是後續的基礎。

第3章講解Linux字符設備驅動的主體框架,並以一個假想的串口來實現驅動。這是Linux設備驅動入門的關鍵,所以分析瞭大量的內核源碼。當然,這個驅動是不完善的,需要在後麵的各章節逐步添加功能。

第4章在上一章的基礎上探討瞭字符設備的高級I/O操作,包括ioctl、阻塞、I/O多路復用、異步通知、mmap、定位等,還特彆介紹瞭proc相關的接口。

第5章講解中斷和時間管理,為便於理解,特彆加入瞭中斷進入的內核源碼分析。時間管理則包含瞭延時和定時兩部分,在定時部分還討論瞭新內核中的高分辨率定時器。

第6章講解瞭互斥和同步,為瞭讓讀者明白互斥對驅動開發的重要性,特彆從ARM匯編的層次來討論瞭競態。除瞭對傳統的互斥(自鏇鎖、信號量等)進行討論外,還特彆說明瞭RCU機製和使用的範例。

第7章講解瞭內核中內存的各種分配方式,還特彆談到瞭per-CPU變量的使用。最後,對DMA的討論則專注於新內核引入的dmaengine子係統,並用一個實例進行瞭具體的展現。

第8章講解瞭Linux設備模型,這部分內容比較抽象。為瞭能幫助讀者理解這部分內容,專門實現瞭設備、總綫、驅動三個最簡單的實例,從而使讀者完全掌握三者之間的關係。這一章的後半部分有大量實用技術的展現,包括電源管理、驅動的自動加載、設備節點的自動創建等。最後還講解瞭較新的內核引入的ARM體係結構的設備樹。

第9章在前麵的理論基礎上實現瞭大量外設的驅動。這些驅動並不都是通過字符設備框架來實現的,目的就是想告訴讀者,如果我們能夠簡化驅動的編寫,就盡量簡化驅動的編寫,多使用內核中已經實現的機製。

第10章講解瞭總綫類設備驅動的開發,對流行的I2C總綫、SPI總綫、USB總綫和PCI總綫都進行瞭討論。這些總綫都有一個共同的特性,就是都有主機控製器和連接在總綫上的設備,我們隻討論瞭在主機控製器驅動之上的設備驅動,不討論主機控製器驅動及設備自身的固件或驅動,因為設備驅動是最常開發的驅動。

第11章講解瞭塊設備驅動,為瞭便於讀者對這部分知識進行理解,特彆介紹瞭磁盤的內部結構,然後用內存虛擬瞭一個磁盤,用兩種方式實現瞭該虛擬磁盤的塊設備驅動。

第12章講解瞭網絡設備驅動,用一個虛擬的環迴以太網卡的驅動展現瞭網絡設備驅動的主體框架,還分析瞭DM9000網卡驅動的主體框架部分,並和前麵的虛擬網卡驅動進行瞭對比。

第13章介紹瞭內核的一些調試技術。內核的調試相對來說比較麻煩,但隻要能熟練使用這些調試技術,還是能較快找齣問題所在的。

第14章是嵌入式Linux設備驅動開發環境的搭建,包含瞭主機係統的準備和各個軟件的安裝。尤其是用vim搭建瞭一個適閤於驅動開發的類似於IDE的編輯環境,能夠大大提高代碼的編寫效率。

本書由華清遠見成都中心的薑先剛編寫,北京中心的劉洪濤承擔全書的統稿及審校工作,是賈燕楓、楊曼、袁祖剛、關曉強、譚翠君、李媛媛、張丹、張誌華、曹忠明、苗德行、馮利美、盧閆進、蔡濛等老師心血的結晶,也是他們多年教學成果的積纍。他們認真閱讀瞭書稿,提齣瞭大量的建議,並糾正瞭書稿中的很多錯誤,在此特錶示感謝。

由於作者水平有限,書中不妥之處在所難免,懇請讀者批評指正。對於本書的批評和建議,可以發錶到www.farsight.com.cn技術論壇。

編 者

2017年3月



嵌入式Linux驅動開發教程 下載 mobi epub pdf txt 電子書 格式

嵌入式Linux驅動開發教程 mobi 下載 pdf 下載 pub 下載 txt 電子書 下載 2024

嵌入式Linux驅動開發教程 下載 mobi pdf epub txt 電子書 格式 2024

嵌入式Linux驅動開發教程 下載 mobi epub pdf 電子書
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

用戶評價

評分

味道還好。味道還好。味道還好。

評分

嵌入式軟件驅動開發之經典,不可不看

評分

講的還行,關鍵是有帶設備樹的知識

評分

書的質量好,內容不錯,很好。

評分

書的質量好,內容不錯,很好。

評分

味道還好。味道還好。味道還好。

評分

挺好的,和華清遠見的課程一起非常好

評分

好東西,老婆喜歡,性價比高

評分

好東西,老婆喜歡,性價比高

類似圖書 點擊查看全場最低價

嵌入式Linux驅動開發教程 mobi epub pdf txt 電子書 格式下載 2024


分享鏈接




相關圖書


本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

友情鏈接

© 2024 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有