精通 Linux 內核智能設備開發核心技術

姜亞華

  • 出版商: 機械工業
  • 出版日期: 2019-11-01
  • 定價: $774
  • 售價: 8.5$658
  • 語言: 簡體中文
  • 頁數: 463
  • 裝訂: 平裝
  • ISBN: 711163960X
  • ISBN-13: 9787111639602
  • 相關分類: Linux
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

《精通Linux內核:智能設備開發核心技術》共五篇,以從易到難的順序詳細剖析了Linux內核開發的核心技術。
“知識儲備篇”介紹了Linux的數據結構、中斷處理、內核同步和時間計算等內容,這些是理解後續章節的前提。
之後通過“內存管理篇”“文件系統篇”“進程管理篇”詳細介紹了Linux的三大核心模塊。
最後的“昇華篇”則融合了前面諸多模塊展示了Linux內核開發在操作系統、智能設備、驅動、通信、芯片以及人工智能等熱點領域的應用。
書中的重點、難點均配以圖表、代碼和實戰案例進行展示,有助於提高讀者的動手操作能力。
  
《精通Linux內核:智能設備開發核心技術》的讀者需要熟悉C語言,對Linux內核有一定了解。
推薦初學者按照《精通Linux內核:智能設備開發核心技術》的編排順序閱讀,
而熟悉Linux內核的讀者可以跳過第壹篇,直接從三大核心模塊篇進行閱讀。
  
《精通Linux內核:智能設備開發核心技術》可作為Linux初中級讀者係統學習Linux內核開發的指導手冊,
也可作為從事嵌入式、操作系統、Linux編程、驅動/內核開發,以及智能設備開發等工作工程師的案頭指南和進階工具書

目錄大綱

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