嵌入式Linux 在各行各業中已被廣泛應用,在物聯網、通訊企業、航太、消費電子、汽車電子等企業中,都急需掌握嵌入式Linux 軟體開發的研發人員。
本書特色
◎第一線研發實戰經驗累積,所有技巧及說明使用的工具都可以直接應用到實際開發工作中。
◎採用範本的方式對分散的各種驅動程式基礎知識說明,所有範本都可以直接參考。
◎對每個基礎知識都提供實際案例,從模組的原理介紹,到系統每次的分析,圖文並茂,力求分析透徹。
◎提供大量的驅動程式,可以快速應用在實際開發中,讀者可直接執行偵錯。
目錄
前言
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 其他
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 其他
序
前言
企業背景
嵌入式Linux 驅動程式開發的基礎知識較多,要求開發者掌握的技能也較多,且核心基礎知識比較分散,對初學者來說門檻較高,而嵌入式Linux 在各行各業中已被廣泛應用,在物聯網、通訊企業、航太、消費電子、汽車電子等企業中急需掌握嵌入式Linux 軟體開發的研發人員。近年來,隨著嵌入式應用越來越廣泛,嵌入式Linux 開發變得更加複雜,嵌入式Linux 驅動程式開發已經成為嵌入式應用領域的重大課題。
關於本書
本書大部分內容以專業教育訓練機構特訓為基礎。在嵌入式Linux 驅動程式的教學中獲得了很好的效果,並結合一線研發經驗對驅動程式開發進行戰略,其中很多關鍵點是花了很長時間整理出來,旨在揭曉嵌入式Linux 驅動程式中的各種機制,達到知其然且知其所以然的目的。
本書各章內容說明如下。
第1 章為驅動程式總論,是驅動程式開發在高層次上的介紹。
第2 章介紹的核心程式設計及基礎知識是驅動程式開發的基礎,旨在掃清對Linux 核心閱讀的障礙。
第3 章介紹驅動程式模組開發,有關各種模組移植中常見的裝置方法,其中各個範本可以直接應用到實際研發中。
第4 章結合Linux 作業系統說明互斥機制在各種情況下的使用,重點分析各種機制的使用注意事項。
第5 章重點介紹Linux 中斷的上下部機制及Linux 提供的各種介面,強調中斷程式設計的基本理念及設計方法。
第6 章介紹Linux 驅動程式中字元裝置驅動程式的進階裝置方法。
第7 章在Linux 子系統的層面上介紹各種進階裝置驅動程式。
第8 章重點介紹如何使用虛擬檔案系統,這些實用技巧是第一線研發的經驗歸納。
第9 章對裝置驅動程式模型各個元素說明,並介紹如何一步步手動建立裝置驅動程式模型範本。
第10 章一步步帶領讀者建立最基本的檔案系統,並製作各種常見的檔案系統,其中穿插介紹各種實用技巧及實際研發工具。
第11 章介紹第一線研發人員使用的開發偵錯技巧,重點強調實用。
第12 章結合V 字形開發模型在嵌入式Linux 驅動程式開發中的實際實施進行歸納。
第13 章介紹嵌入式Linux 裝置驅動程式設計標準。
書中的原始程式碼、目的檔案,以及各種相關的工具,按照書中各個基礎知識建立對應資料夾儲存,可在www.topteam.cc 下載。其中各個基礎知識搭配可以直接在Mini2440 開發板上執行。驅動程式對應範例含有對應搭配使用。各個範例也作為對應Linux 驅動程式開發的範本,可以直接修改並應用到實際專案開發中。
本書特色
◎ 一線研發實戰經驗累積,所有技巧及說明使用的工具都可以直接應用到實際開發工作中。
◎ 用範本的方式對分散的各種驅動程式基礎知識說明,所有範本都可以直接參考。
◎ 每個基礎知識都提供實際案例,從模組的原理介紹,到系統層次的分析,圖文並茂,力求分析透徹。
◎ 供了大量的驅動程式範例,這些範例可以快速應用在實際開發中,讀者可以直接執行偵錯。
◎ 結合實際研發工作對開發過程中的思考進行歸納,重在實用。
聯繫作者
筆者在寫作過程中查閱了大量開放原始碼工具及網際網路上的資料,對各種資料的作者無法一一列舉,在此表示謝意。
由於時間倉促,書中程式和圖表較多,錯誤之處在所難免,請讀者們批評指正。筆者電子郵件:[email protected]。
企業背景
嵌入式Linux 驅動程式開發的基礎知識較多,要求開發者掌握的技能也較多,且核心基礎知識比較分散,對初學者來說門檻較高,而嵌入式Linux 在各行各業中已被廣泛應用,在物聯網、通訊企業、航太、消費電子、汽車電子等企業中急需掌握嵌入式Linux 軟體開發的研發人員。近年來,隨著嵌入式應用越來越廣泛,嵌入式Linux 開發變得更加複雜,嵌入式Linux 驅動程式開發已經成為嵌入式應用領域的重大課題。
關於本書
本書大部分內容以專業教育訓練機構特訓為基礎。在嵌入式Linux 驅動程式的教學中獲得了很好的效果,並結合一線研發經驗對驅動程式開發進行戰略,其中很多關鍵點是花了很長時間整理出來,旨在揭曉嵌入式Linux 驅動程式中的各種機制,達到知其然且知其所以然的目的。
本書各章內容說明如下。
第1 章為驅動程式總論,是驅動程式開發在高層次上的介紹。
第2 章介紹的核心程式設計及基礎知識是驅動程式開發的基礎,旨在掃清對Linux 核心閱讀的障礙。
第3 章介紹驅動程式模組開發,有關各種模組移植中常見的裝置方法,其中各個範本可以直接應用到實際研發中。
第4 章結合Linux 作業系統說明互斥機制在各種情況下的使用,重點分析各種機制的使用注意事項。
第5 章重點介紹Linux 中斷的上下部機制及Linux 提供的各種介面,強調中斷程式設計的基本理念及設計方法。
第6 章介紹Linux 驅動程式中字元裝置驅動程式的進階裝置方法。
第7 章在Linux 子系統的層面上介紹各種進階裝置驅動程式。
第8 章重點介紹如何使用虛擬檔案系統,這些實用技巧是第一線研發的經驗歸納。
第9 章對裝置驅動程式模型各個元素說明,並介紹如何一步步手動建立裝置驅動程式模型範本。
第10 章一步步帶領讀者建立最基本的檔案系統,並製作各種常見的檔案系統,其中穿插介紹各種實用技巧及實際研發工具。
第11 章介紹第一線研發人員使用的開發偵錯技巧,重點強調實用。
第12 章結合V 字形開發模型在嵌入式Linux 驅動程式開發中的實際實施進行歸納。
第13 章介紹嵌入式Linux 裝置驅動程式設計標準。
書中的原始程式碼、目的檔案,以及各種相關的工具,按照書中各個基礎知識建立對應資料夾儲存,可在www.topteam.cc 下載。其中各個基礎知識搭配可以直接在Mini2440 開發板上執行。驅動程式對應範例含有對應搭配使用。各個範例也作為對應Linux 驅動程式開發的範本,可以直接修改並應用到實際專案開發中。
本書特色
◎ 一線研發實戰經驗累積,所有技巧及說明使用的工具都可以直接應用到實際開發工作中。
◎ 用範本的方式對分散的各種驅動程式基礎知識說明,所有範本都可以直接參考。
◎ 每個基礎知識都提供實際案例,從模組的原理介紹,到系統層次的分析,圖文並茂,力求分析透徹。
◎ 供了大量的驅動程式範例,這些範例可以快速應用在實際開發中,讀者可以直接執行偵錯。
◎ 結合實際研發工作對開發過程中的思考進行歸納,重在實用。
聯繫作者
筆者在寫作過程中查閱了大量開放原始碼工具及網際網路上的資料,對各種資料的作者無法一一列舉,在此表示謝意。
由於時間倉促,書中程式和圖表較多,錯誤之處在所難免,請讀者們批評指正。筆者電子郵件:[email protected]。
網路書店
類別
折扣
價格
-
新書85折$493
-
新書9折$522
-
新書9折$522