深入理解Linux驅動程式設計

深入理解Linux驅動程式設計

《深入理解Linux驅動程式設計》是清華大學出版社2015年出版的圖書,本書基於Linux核心3.8.13原始碼及相關實例向讀者系統而詳盡地介紹和分析了Linux設備驅動程式開發框架、原理和方法。

內容簡介

本書基於Linux核心3.8.13原始碼及相關實例向讀者系統而詳盡地介紹和分析了Linux設備驅動程式開發框架、原理和方法。全書共分13章,內容包括字元設備、塊設備、網路設備、MMC/SD驅動、USB驅動、匯流排驅動及Flash驅動的開發機制和實例。 本書各章均首先概要介紹各模組的實現原理,隨後列舉各模組中的關鍵數據結構,再結合原始碼及實例分析介紹,讓讀者更全面地了解Linux驅動開發。 本書內容豐富,概念和原理講解細緻、深入淺出。其中,有關代碼的部分都標有注釋以詳細介紹功能,書中的設計和分析也配以編程實例幫助理解。 本書適合作為高年級本科生、研究生和從事嵌入式系統開發設計的工程技術人員。

目錄

第1章Linux核心組成和機制

1.1Linux核心版本與發展

1.1.1Linux作業系統的誕生

1.1.2Linux核心版本的變遷

1.2Linux核心編譯

1.2.1獲取核心源碼

1.2.2核心源碼樹

1.2.3編譯核心

1.3Linux核心組成

1.4Linux核心機制

1.4.1核心啟動過程

1.4.2模組機制

第2章Linux核心設備管理方式

2.1devfs設備檔案系統

2.2sysfs檔案系統

2.3udev設備檔案系統

2.4主要數據結構

2.4.1kobject

2.4.2ktype

2.4.3kset

2.4.4三者關係

2.5熱插拔設備管理機制

2.5.1熱插拔事件流程

2.5.2涉及的模組

2.5.3關鍵驅動函式

第3章Linux驅動開發基礎

3.1同步機制

3.1.1核心同步機制分類

3.1.2自旋鎖與信號量的比較

3.2make及makefile

3.2.1makefile檔案

3.2.2編寫makefile檔案

3.2.3make命令

3.3調試方法

3.3.1printk

3.3.2/proc檔案系統

3.3.3調試器及相關工具

第4章Linux字元設備驅動開發

4.1關鍵數據結構

4.2接口函式部分核心代碼分析

4.3字元設備驅動設計

4.3.1字元設備驅動設計場景描述

4.3.2字元設備驅動設計過程

第5章Linux核心中斷機制

5.1中斷

5.2中斷處理

5.2.1註冊中斷處理程式

5.2.2編寫中斷處理程式

5.3中斷上半部與下半部的對比

5.4中斷下半部

5.5BH機制與任務佇列機制

5.6軟中斷

5.6.1軟中斷的實現

5.6.2軟中斷的使用

5.7tasklet

5.7.1tasklet的實現

5.7.2tasklet的使用

5.8工作佇列

5.8.1工作佇列的實現

5.8.2工作佇列的使用

第6章Linux塊設備驅動開發

6.1塊設備管理機制

6.1.1塊設備基本概念

6.1.2塊設備在Linux中的結構

6.2塊設備關鍵數據結構

6.2.1gendisk數據結構

6.2.2block_device_operations數據結構

6.2.3request數據結構

6.2.4request_queue數據結構

6.2.5bio數據結構

6.3塊設備驅動設計函式

6.3.1塊設備驅動註冊與註銷函式

6.3.2塊設備驅動打開與關閉函式

6.3.3塊設備驅動ioctl、read和write函式

6.3.4塊設備驅動的請求函式

6.4Ramdisk塊設備驅動實例

6.4.1Ramdisk塊設備驅動實例分析

6.4.2Ramdisk塊設備驅動實例測試

第7章Linux網路設備驅動開發

7.1網路設備

7.1.1網路系統分層結構

7.1.2網路設備管理

7.2NAPI機制

7.3關鍵數據結構

7.4核心提供的網路設備驅動設計函式

7.4.1alloc_netdev

7.4.2register_netdev

7.4.3ether_setup

7.4.4unregister_netdev

7.5網路設備驅動開發實例

7.5.1snull_init_module函式

7.5.2snull_init函式

7.5.3相關操作函式

第8章LinuxMMC/SD驅動開發

8.1MMC子系統基本架構

8.2關鍵數據結構

8.2.1基本數據結構

8.2.2基本數據結構主要成員及關係

8.3MMC/CD卡驅動實例

8.3.1MMC/SD卡設備驅動設計場景

8.3.2MMC/SD卡設備驅動實例實現

第9章LinuxUSB驅動開發

9.1USB設備管理機制

9.1.1USB與串口

9.1.2USB設備屬性拓撲結構管理機制

9.1.3USB設備邏輯組織管理機制

9.2USB驅動關鍵數據結構分析

9.3USB設備驅動函式及其使用說明

9.3.1客戶端驅動管理

9.3.2USB設備配置和管理

9.3.3主機控制器的管理

9.3.4協定控制命令集和數據傳輸管理

9.4USB設備驅動開發實例

9.4.1實例開發場景設計

9.4.2USB設備驅動開發實例的實現

9.4.3驅動測試分析

第10章LinuxI2C匯流排設備驅動

10.1Linux匯流排驅動及I2C匯流排

10.1.1Linux匯流排驅動設計過程

10.1.2I2C匯流排的工作原理與套用

10.1.3匯流排基本操作

10.2LinuxI2C體系結構

10.2.1Linux的I2C體系結構組成

10.2.2LinuxI2C關鍵數據結構

10.3LinuxI2C核心

10.4LinuxI2C匯流排驅動

10.4.1I2C適配器驅動載入與卸載

10.4.2I2C匯流排通信方法

10.5LinuxI2C設備驅動

10.5.1LinuxI2C設備驅動模組載入與卸載

10.5.2LinuxI2C設備驅動的數據傳輸

10.5.3Linuxi2cdev.c檔案分析

10.6LinuxI2C驅動實例——EEPROM

10.6.1初始化

10.6.2探測設備

10.6.3檢查適配器的功能

10.6.4訪問設備

10.6.5其他函式

第11章LinuxPCI匯流排設備驅動

11.1PCI匯流排設備

11.1.1PCI匯流排

11.1.2PCI設備

11.2PCI設備驅動結構

11.3PCI設備驅動實例

11.3.1PCI設備驅動程式基本框架

11.3.2初始化設備模組

11.3.3打開設備模組

11.3.4數據讀寫和控制信息模組

11.3.5中斷處理模組

11.3.6釋放設備模組

11.3.7卸載設備模組

第12章Linux輸入設備驅動

12.1Linux輸入子系統結構

12.2輸入設備驅動核心數據結構分析

12.3Linux輸入設備驅動實例

12.3.1輸入設備驅動流程

12.3.2USB滑鼠驅動編寫實例

第13章LinuxFlash驅動開發

13.1Flash存儲器

13.2LinuxMTD系統層次結構

13.3關鍵數據結構

13.3.1mtd_info結構體

13.3.2mtd_table結構體

13.3.3mtd_part結構體

13.3.4mtd_partition結構體

13.3.5map_info結構體

13.4驅動相關函式

13.4.1add_mtd_device函式

13.4.2del_mtd_device函式

13.4.3add_mtd_partitions函式

13.4.4del_mtd_partitions函式

13.4.5do_map_probe函式

13.5Nor型Flash驅動實例

13.5.1Nor型Flash驅動設計流程

13.5.2Nor型Flash驅動詳細設計

13.6Nand型Flash驅動實例

13.6.1Nand型Flash設備驅動設計步驟

13.6.2Nand型Flash驅動實現

相關詞條

熱門詞條

聯絡我們