以下書況,主觀上皆可閱讀,若收到後不滿意,『都可退書退款』。
書況補充說明: B自然泛黃書斑、髒污。
【購買須知】
(1)照片皆為現貨實際拍攝,請參書況說明。
(2)『賣場標題、內容簡介』為出版社原本資料,若有疑問請留言,但人力有限,恕不提供大量詢問。
(3)『附件或贈品』,不論標題或內容簡介是否有標示,請都以『沒有附件,沒有贈品』為參考。
(4)訂單完成即『無法加購、修改、合併』,請確認品項、優惠後,再下訂結帳。如有疑問請留言告知。
(5)二手書皆為獨立商品,下訂即刪除該品項,故『取消』後無法重新訂購,須等系統安排『2個月後』重新上架。
(6)收到書籍後,若不滿意,或有缺漏,『都可退書退款』。
[商品主貨號] U102638749
[ISBN-13碼] 9787115555557
[ISBN] 7115555559
[作者] 約翰‧馬迪厄
[出版社] 人民郵電出版社
[出版日期] 2022/03/01
[內容簡介] (出版商制式文字, 不論標題或內容簡介是否有標示, 請都以『沒有附件、沒有贈品』為參考。)
本書講解了Linux驅動開發的基礎知識以及所用到的開發環境,全書分為22章,其內容涵蓋了各種Linux子系統,包含內存管理、PWM、RTC、IIO和IRQ管理等,還講解了直接內存訪問和網絡設備驅動程序的實用方法。在學完本書之後,讀者將掌握設備驅動開發環境的概念,並可以從零開始為任何硬件設備編寫驅動程序。
閱讀本書需要具備基本的C語言程序設計能力,且熟悉Linux基本命令。本書主要是為嵌入式工程師、Linux系統管理員、開發人員和內核黑客而設計的。無論是軟件開發人員,還是系統架構師或制造商,只要願意深入研究Linux驅動程序開發,閱讀本書後都將有所收獲。
John Madieu是嵌入式Linux和內核研發工程師,居住在法國巴黎。他主要為自動化、運輸、醫療、能源和軍事等領域的公司開發驅動程序和開發板支持包(Board Support Packages,BSP)。他目前就職於一家法國公司EXPEMB,該公司是基於模塊化計算機的電子開發板設計和嵌入式Linux解決方案的先驅。同時,他還是一位開源和嵌入式系統愛好者,堅信通過知識分享能夠學到更多的知識。
1.本書將幫助您了解驅動程序的基礎知識,並為漫長的Linux內核之旅做好準備。
2.本書介紹了基於各種Linux子系統的驅動程序開發,例如內存管理、PWM、RTC、IIO和IRQ管理。
3.本書還提供了有關直接內存訪問和網絡設備驅動程序的實用方法。
4.通過閱讀本書,您將掌握設備驅動程序開發的概念,並將能夠使用**的內核版本(編寫本書時為v4.13)從頭編寫任何設備驅動程序。
5.提供源代碼。
Linux內核是一個復雜、可移植、模塊化且使用廣泛的軟件,其可在設備的服務器和嵌入式系統上運行。設備驅動程序在Linux系統的性能方面起著至關重要的作用。由於Linux已經成為非常受歡迎的操作系統,因此開發專有設備驅動程序的需求也在穩步增長。
您將學到以下內容:
·使用內核工具開發功能強大的驅動程序;
·為I2C和SPI設備開發驅動程序,並使用Regmap API;
·在驅動程序內編寫和支持設備樹;
·為網絡和幀緩衝設備編寫高級驅動程序;
·深入研究Linux irqdomain API並編寫中斷控制器驅動程序;
·通過調節器和PWM框架增強技能;
·使用IIO框架開發測量系統驅動程序;
·充分利用內存管理和DMA子系統;
·訪問和管理GPIO子系統並開發GPIO控制器驅動程序。
第 1章內核開發簡介 1
1.1環境設置1
1.1.1獲取源代碼2
1.1.2內核配置4
1.1.3構建自己的內核4
1.2內核約定6
1.2.1編碼風格6
1.2.2內核結構分配和初始化7
1.2.3類、物件、面向物件的編程7
1.3總結8
第2章 設備驅動程序基礎9
2.1內核空間和用戶空間9
2.1.1模塊的概念10
2.1.2模塊依賴10
2.1.3模塊的加載和卸載11
2.2驅動程序框架13
2.2.1模塊的入點和出點14
2.2.2模塊信息16
2.3錯誤和消息打印18
2.3.1錯誤處理19
2.3.2處理空指針錯誤21
2.3.3消息打印—— printk()22
2.4模塊參數24
2.5構建第 一個模塊25
2.5.1模塊的makefile26
2.5.2內核樹內27
2.5.3內核樹外29
2.5.4構建模塊29
2.6總結30
第3章內核工具和輔助函數31
3.1理解宏container_of31
3.2鏈表33
3.2.1創建和初始化鏈表35
3.2.2創建鏈表節點36
3.2.3添加鏈表節點36
3.2.4刪除鏈表節點37
3.2.5鏈表遍歷37
3.3內核的睡眠機制38
3.4延遲和定時器管理41
3.4.1標準定時器41
3.4.2高精度定時器(HRT)44
3.4.3動態Tick/Tickless內核46
3.4.4內核中的延遲和睡眠46
3.5內核的鎖機制47
3.5.1互斥鎖47
3.5.2自旋鎖49
3.6工作延遲機制51
3.6.1Softirq和Ksoftirqd51
3.6.2Tasklet53
3.6.3Tasklet調度54
3.6.4工作隊列56
3.6.5內核線程62
3.7內核中斷機制62
3.7.1注冊中斷處理程序62
3.7.2下半部的概念65
3.8線程化中斷68
3.9從內核調用用戶空間應用程序71
3.10總結72
第4章字符設備驅動程序73
4.1主設備和次設備的概念73
4.2設備文件操作76
4.3分配和注冊字符設備77
4.4寫文件操作79
4.4.1內核空間和用戶空間數據交換79
4.4.2open方法80
4.4.3release方法81
4.4.4write方法82
4.4.5read方法84
4.4.6llseek方法86
4.4.7poll方法88
4.4.8ioctl方法91
4.4.9填充file_operations結構95
4.5總結95
第5章平臺設備驅動程序96
5.1平臺驅動程序97
5.2平臺設備100
5.3設備、驅動程序和總線匹配105
5.4總結113
第6章設備樹的概念114
6.1設備樹機制114
6.1.1命名約定115
6.1.2別名、標簽和phandle115
6.1.3DT編譯器117
6.2表示和尋址設備117
6.2.1SPI和I2C尋址118
6.2.2平臺設備尋址119
6.3處理資源120
6.3.1命名資源的概念121
6.3.2訪問寄存器122
6.3.3處理中斷123
6.3.4提取特定應用數據124
6.4平臺驅動程序和DT127
6.4.1OF匹配風格127
6.4.2匹配風格混合132
6.4.3平臺數據與DT136
6.5總結137
第7章I2C客戶端驅動程序138
7.1驅動程序架構139
7.1.1i2c_driver結構139
7.1.2驅動程序的初始化和注冊142
7.1.3驅動程序和設備的配置142
7.2訪問客戶端143
7.2.1普通I2C通信143
7.2.2系統管理總線(SMBus)兼容函數145
7.2.3在開發板配置文件中實例化I2C設備(棄用的舊方式)146
7.3I2C和設備樹147
7.3.1定義和注冊I2C驅動程序147
7.3.2在設備樹中實例化I2C設備——新方法149
7.3.3小結149
7.4總結150
第8章SPI設備驅動程序151
8.1驅動程序架構151
8.1.1設備結構152
8.1.2spi_driver結構154
8.1.3驅動程序的初始化和注冊156
8.1.4驅動程序和設備配置157
8.2訪問和與客戶端通信161
8.3小結166
8.4SPI用戶模式驅動程序166
8.5總結170
第9章Regmap API ——寄存器映射抽象171
9.1使用Regmap API編程172
9.1.1regmap_config結構172
9.1.2Regmap初始化175
9.1.3設備訪問函數177
9.1.4Regmap和緩存180
9.1.5小結181
9.1.6Regmap示例182
9.2總結184
第10章 IIO框架185
10.1IIO數據結構186
10.1.1Iio_dev數據結構186
10.1.2iio_info結構190
10.1.3IIO通道190
10.1.4小結196
10.2觸發緩衝區支持199
10.2.1IIO觸發器和sysfs(用戶空間)202
10.2.2IIO緩衝區206
10.2.3小結208
10.3IIO數據訪問214
10.3.1單次捕獲214
10.3.2緩衝區數據訪問214
10.4IIO工具216
10.5總結217
第11章 內核內存管理218
11.1系統內存布局——內核空間和用戶空間219
11.1.1內核地址——低端和高端內存概念221
11.1.2用戶空間尋址222
11.1.3虛擬內存區域225
11.2地址轉換和MMU227
11.3內存分配機制232
11.3.1頁面分配器233
11.3.2Slab分配器235
11.3.3kmalloc分配系列238
11.3.4vmalloc分配器240
11.3.5後臺的進程內存分配242
11.4使用I/O內存訪問硬件244
11.4.1PIO設備訪問244
11.4.2MMIO設備訪問245
11.5內存(重)映射248
11.5.1kmap248
11.5.2映射內核內存到用戶空間249
11.6Linux緩存系統253
11.6.1什麼是緩存253
11.6.2為什麼數據延遲寫入磁盤255
11.7設備管理的資源—— Devres256
11.8總結257
第12章 DMA ——直接內存訪問258
12.1設置DMA映射258
12.1.1緩存一致性和DMA258
12.1.2DMA映射259
12.2完成的概念263
12.3DMA引擎API264
12.3.1分配DMA從通道265
12.3.2設置從設備和控制器指定參數266
12.3.3獲取事務描述符269
12.3.4提交事務270
12.3.5發布待處理DMA請求並等待回調通知271
12.4總結—— NXP SDMA(i.MX6)272
12.5DMA DT綁定277
12.6總結278
第13章 Linux設備模型279
13.1LDM數據結構279
13.1.1總線280
13.1.2設備驅動程序285
13.1.3設備287
13.2深入剖析LDM289
13.2.1kobject結構289
13.2.2kobj_type291
13.2.3內核物件集合293
13.2.4屬性294
13.3設備模型和sysfs296
13.3.1sysfs文件和屬性297
13.3.2允許輪詢sysfs屬性文件303
13.4總結304
第14章 引腳控制和GPIO子系統305
14.1引腳控制子系統305
14.2GPIO子系統310
14.2.1基於整數的GPIO接口:傳統方法310
14.2.2基於描述符的GPIO接口:新的推薦方式315
14.2.3GPIO接口和設備樹322
14.2.4GPIO和sysfs327
14.3總結329
第15章 GPIO控制器驅動程序—— gpio_chip330
15.1驅動程序體系結構和數據結構330
15.2引腳控制器指南334
15.3GPIO控制器的sysfs接口335
15.4GPIO控制器和DT335
15.5總結336
第16章 高級IRQ管理337
16.1中斷復用和中斷控制器339
16.2高級外設IRQ管理347
16.3中斷請求和傳播349
16.3.1鏈接IRQ351
16.3.2案例研究—— GPIO和IRQ芯片351
16.4總結356
第17章 輸入設備驅動程序357
17.1輸入設備結構357
17.2分配並注冊輸入設備360
17.3產生和報告輸入事件364
17.4用戶空間接口366
17.5回顧368
17.6總結376
第18章 RTC驅動程序377
18.1RTC框架數據結構377
18.2RTC和用戶空間387
18.2.1sysfs接口387
18.2.2hwclock工具388
18.3總結389
第19章 PWM驅動程序390
19.1PWM控制器驅動程序391
19.1.1驅動程序示例393
19.1.2PWM控制器綁定396
19.2PWM消費者接口397
19.3通過sysfs接口使用PWM401
19.4總結402
第20章 調節器框架403
20.1PMIC/生產者驅動程序接口404
20.1.1驅動程序數據結構404
20.1.2驅動程序方法412
20.1.3驅動程序示例418
20.2調節器消費者接口421
20.2.1調節器設備請求422
20.2.2控制調節器設備423
20.3調節器綁定425
20.4總結426
第21章 幀緩衝驅動程序427
21.1驅動程序數據結構428
21.2設備方法431
21.3驅動程序方法434
21.3.1fb_ops剖析436
21.3.2總結440
21.4用戶空間的幀緩衝440
21.5總結442
第22章 網絡接口卡驅動程序443
22.1驅動程序數據結構443
22.1.1套接字緩衝區結構444
22.1.2網絡接口結構446
22.2設備方法448
22.2.1打開和關閉449
22.2.2數據包處理452
22.2.3驅動程序示例457
22.2.4狀態和控制460
22.3驅動程序方法463
22.3.1probe函數464
22.3.2模塊卸載466
22.4總結466)
-----------------------------------------------------------
分享閱讀 書籍狀態請詳看圖示