前言
Chapter 01?? 驅動程式總論
1.1 總論
1.1.1 驅動程式在核心中的比例
1.1.2 驅動程式開發需要具備的能力
1.1.3 驅動程式開發特別注意的內容
1.2 驅動程式理論與思想
1.2.1 分類思想
1.2.2 分層思想
1.2.3 分離思想
1.2.4 匯流排思想
Chapter 02? 核心程式設計及基礎知識
2.1 核心執行緒
2.2 核心計時器 2.3 鏈結串列
2.4 記憶體操作
2.5 I/O 通訊埠
2.6 核心相關巨集
2.7 核心態檔案操作
2.8 核心通知鏈2.1.2 啟動MariaDB 服務
Chapter 03? 模組與常用字元裝置方法??? ?
3.1 Linux 驅動程式
3.2 核心驅動程式模組剖析
3.2.1 核心模組
3.2.2 模組工具集
3.2.3 模組檔案結構分析
3.2.4 核心管理
3.2.5 Modutils 工具套件及Module-init-tools 移植
3.2.6 符號
3.2.7 驅動程式模組之間的依賴
3.2.8 模組編譯流程細節
3.2.9 模組撰寫
3.3 巨觀分析Linux 驅動程式
3.4 裝置檔案
3.5 裝置管理系統
3.5.1 自動建立和管理裝置檔案揭秘
3.5.2 devfs、mdev 和udev
3.5.3 udev 基本原理與流程
3.5.4 熱抽換與冷抽換
3.5.5 class
3.6 字元裝置驅動程式
3.6.1 原始方式
3.6.2 靜態設定裝置編號方式
3.6.3 使用udev 工具自動產生裝置檔案方式
3.6.4 簡潔型字元裝置驅動程式——misc 字元裝置驅動程式方式
3.7 裝置操作方法file_operations
3.7.1 ioctl 和unlocked_ioctl 操作
3.7.2 read/write 裝置方法
3.7.3 llseek 裝置方法
3.7.4 mmap 裝置方法
3.7.5 利用mmap 在應用層實現硬體操作
Chapter 04? 同步和互斥??? ?
4.1 概述
4.2 基本概念
4.3 互斥和同步機制
4.4 互斥
4.4.1 隱藏中斷
4.4.2 最小操作
4.4.3 迴旋栓鎖
4.4.4 號誌
4.4.5 迴旋栓鎖與號誌
4.4.6 互斥體:專用於互斥
4.5 同步Chapter
Chapter 05? 中斷系統???????????????????????? ?
5.1 中斷概述
5.2 基本概念
5.3 中斷原理及使用注意事項
5.4 中斷介面函數
5.4.1 中斷申請和釋放
5.4.2 中斷共用
5.4.3 中斷範例之一:按鍵中斷
5.4.4 中斷範例之二:A/D 轉換驅動程式
5.5 底半部:tasklet、工作佇列
5.6 時間管理
Chapter 06? 裝置進階特性??? ?
6.1 字元裝置file_operations 的進階特性
6.2 Linux 裝置驅動程式的I/O 模型
6.2.1 同步阻塞I/O
6.2.2 同步非阻塞I/O
6.2.3 非同步阻塞I/O
6.2.4 非同步非阻塞I/O
6.2.5 非同步通知
6.2.6 同步阻塞型I/O 的實現:建立在等待佇列的基礎上
6.2.7 非同步阻塞型I/O 的實現:基於poll 系統呼叫操作介面函數
6.3 裝置多工
Chapter 07?? 進階類型驅動程式
7.1 misc 類型驅動程式
7.1.1 概述
7.1.2 結構與流程分析
7.1.3 關於裝置節點的建立
7.2 input 類型驅動程式
7.2.1 input 驅動程式概述
7.2.2 三個主要結構
7.2.3 Input 驅動程式步驟
7.3 觸控式螢幕驅動程式
7.4 I2C 驅動程式
7.4.1 I2C 匯流排界面
7.4.2 I2C 核心驅動程式層及相關檔案分析
7.4.3 重要的資料結構及相關聯繫
7.4.4 流程分析
7.4.5 i2c-tools
7.5 區塊裝置驅動程式
7.5.1 區塊裝置驅動程式分析
7.5.2 製作一個區塊裝置實例:RamDisk 驅動程式7.3 刪除索引
Chapter 08?? 虛擬檔案系統
8.1 核心線上視窗——虛擬檔案系統
8.2 proc 檔案系統
8.2.1 目錄介紹
8.2.2 建立目錄與檔案
8.2.3 相關應用
8.3 sys 檔案系統
8.3.1 sys 檔案系統概述
8.3.2 sys 檔案目錄
8.3.3 sys 檔案系統介面函數與建立資料夾範本
Chapter 09?? 裝置驅動程式模型
9.1 裝置驅動程式模型概述
9.2 sys 檔案系統與裝置驅動程式模型
9.3 認識裝置驅動程式模型
9.4 兩大基礎kobject 和kset
9.4.1 核心物件kobject
9.4.2 另外一個基礎kset
9.5 subsystem
9.6 三角關係核心——匯流排、裝置、驅動程式
9.6.1 匯流排
9.6.2 裝置
9.6.3 驅動程式
9.7 platform 匯流排
9.8 serio 匯流排
9.8.1 serio 子系統介紹
9.8.2 serio 子系統架構
9.8.3 主要資料結構
Chapter 10? 嵌入式Linux 檔案系統
10.1 檔案系統介紹
10.2 建立最簡單的root 檔案系統
10.3 YAFFS 檔案系統移植
10.4 JFFS2 檔案系統製作
10.5 ramdisk 檔案系統製作
10.6 cramfs 檔案系統製作
Chapter 11?? 開發與校正技巧
11.1 vim 使用
11.2 工具使用
11.3 printk 使用技巧
11.4 使用proc 線上開啟列印開關
11.5 例外(Exception) 當機oops 處理
11.6 動態修改模組參數
11.7 使用devmem2 操作實體位址
11.8 時間測量
11.9 善於使用開放原始碼專案
Chapter 12?? 底層驅動程式規劃與管理探索
12.1 底層驅動程式規劃探索
12.1.1 設計理念概述
12.1.2 底層平台軟體設計
12.1.3 底層平台軟體管理規則
12.1.4 獨立驅動程式模組的版本管理
12.1.5 提供最基本的系統
12.1.6 驅動程式開發注意事項
12.1.7 版本函數庫
12.1.8 平台版本建置發佈
12.2 研發管理
12.2.1 嵌入式軟體研發管理天馬行空
12.2.2 嵌入式軟體V 字形開發模式
12.3 軟體開發文件
12.3.1 可行性分析報告
12.3.2 嵌入式軟體系統設計方案文件
12.3.3 嵌入式軟體概要設計
12.3.4 嵌入式軟體詳細設計
12.3.5 案例分析
Chapter 13? Linux 裝置驅動程式設計標準
13.1 基本原則
13.2 規劃
13.3 基本格式
13.4 對齊
13.5 空行空格
13.6 註釋
13.7 命名
13.8 函數
13.9 可用性
13.10 其他
?