舉報

會員
Linux設備驅動開發詳解:基于最新的Linux4.0內核
宋寶華 著
更新時間:2018-12-31 20:26:33
開會員,本書免費讀 >
最新章節:
21.13 總結
對于嵌入式工程師來說,進入更高階段后,學linux設備驅動開發無疑是職業生涯的一次“重生”。這是因為linux設備驅動開發不僅僅涉及作系統的轉換,開發方式的轉換,更重要的是思維上的轉變。對于linux這樣一個復雜系統,如何從復雜的代碼中抓住設備驅動開發的關鍵是任何一個linux設備驅動開發者入門時需要面對的挑戰。除了知識、工具之外,往往還需要思路上的指導。宋寶華編著的linux設備驅動開發詳解不但幫助linux設備驅動開發的初學者厘清必要的概念,還從具體的實例、設備驅動開發的指導原則循序漸進地引導讀者漸入學佳境。為了讓讀者能夠達到linux設備驅動開發的至臻境界,作者更是從軟件工程的角度抽象出設備驅動開發的一般思想。毫無疑問,本書將成為讀者學unux設備驅動開發過程中的一座“燈塔”。
- 21.13 總結 更新時間:2018-12-31 20:26:33
- 21.12 Linux性能監控與調優工具
- 21.11 應用程序調試
- 21.10 使用仿真器調試內核
- 21.9 KGDB
- 21.8 strace
- 21.7 BUG_ON()和WARN_ON()
- 21.6 Oops
- 21.5 使用“/proc”
- 21.4 DEBUG_LL和EARLY_PRINTK
- 21.3 內核打印信息——printk()
- 21.2 Linux內核調試
- 21.1.2 DDD圖形界面調試工具
- 21.1.1 GDB的基本用法
- 21.1 GDB調試器的用法
- 第21章 Linux設備驅動的調試
- 20.10 總結
- 20.9 dmaengine驅動
- 20.8 時鐘驅動
- 20.7 pinctrl驅動
- 20.6 GPIO驅動
- 20.5 DEBUG_LL和EARLY_PRINTK的設置
- 20.4 SMP多核啟動以及CPU熱插拔驅動
- 20.3 中斷控制器驅動
- 20.2 內核節拍驅動
- 20.1 ARM Linux底層驅動的組成和現狀
- 第20章 Linux芯片級移植及底層驅動
- 19.11 總結
- 19.10 運行時的PM
- 19.9 掛起到RAM
- 19.8 CPU熱插拔
- 19.7 PM QoS
- 19.6 OPP
- 19.5 Regulator驅動
- 19.4 PowerTop
- 19.3 CPUIdle驅動
- 19.2.4 CPUFreq通知
- 19.2.3 CPUFreq的性能測試和調優
- 19.2.2 CPUFreq的策略
- 19.2.1 SoC的CPUFreq驅動實現
- 19.2 CPUFreq驅動
- 19.1 Linux電源管理的全局架構
- 第19章 Linux電源管理的系統架構和驅動
- 18.5 總結
- 18.4 常用的OF API
- 18.3 由設備樹引發的BSP和驅動變更
- 18.2.7 GPIO、時鐘、pinmux連接
- 18.2.6 中斷連接
- 18.2.5 地址編碼
- 18.2.4 設備節點及label的命名
- 18.2.3 設備節點兼容性
- 18.2.2 根節點兼容性
- 18.2.1 DTS、DTC和DTB等
- 18.2 設備樹的組成和結構
- 18.1 ARM設備樹起源
- 第18章 ARM Linux設備樹
- 17.2 I2C主機和外設眼里的Linux世界
- 17.1 I2C、SPI、USB驅動架構
- 第17章 I2C、SPI、USB驅動架構類比
- 16.6 總結
- 16.5 USB OTG驅動
- 16.4.3 實例:Loopback Function驅動
- 16.4.2 實例:Chipidea USB UDC驅動
- 16.4.1 UDC和Gadget驅動的關鍵數據結構與API
- 16.4 USB UDC與Gadget驅動
- 16.3.5 實例:USB鍵盤驅動
- 16.3.4 USB骨架程序
- 16.3.3 探測和斷開函數
- 16.3.2 USB請求塊
- 16.3.1 USB設備驅動的整體結構
- 16.3 USB設備驅動
- 16.2.2 實例:Chipidea USB主機驅動
- 16.2.1 USB主機控制器驅動的整體結構
- 16.2 USB主機控制器驅動
- 16.1.2 設備、配置、接口、端點
- 16.1.1 主機側與設備側USB驅動
- 16.1 Linux USB驅動層次
- 第16章 USB主機、設備與Gadget驅動
- 15.7 總結
- 15.6 AT24xx EEPROM的I2C設備驅動實例
- 15.5 Tegra I2C總線驅動實例
- 15.4.3 Linux的i2c-dev.c文件分析
- 15.4.2 Linux I2C設備驅動的數據傳輸
- 15.4.1 Linux I2C設備驅動的模塊加載與卸載
- 15.4 Linux I2C設備驅動
- 15.3.2 I2C總線的通信方法
- 15.3.1 I2C適配器驅動的注冊與注銷
- 15.3 Linux I2C適配器驅動
- 15.2 Linux I2C核心
- 15.1 Linux I2C體系結構
- 第15章 Linux I2C核心、總線與設備驅動
- 14.10 總結
- 14.9.2 DM9000網卡驅動設計分析
- 14.9.1 DM9000網卡硬件描述
- 14.9 DM9000網卡設備驅動實例
- 14.8 參數設置和統計數據
- 14.7 網絡連接狀態
- 14.6 數據接收流程
- 14.5 數據發送流程
- 14.4 網絡設備的打開與釋放
- 14.3 網絡設備的初始化
- 14.2 網絡設備驅動的注冊與注銷
- 14.1.3 設備驅動功能層
- 14.1.2 網絡設備接口層
- 14.1.1 網絡協議接口層
- 14.1 Linux網絡設備驅動的結構
- 第14章 Linux網絡設備驅動
- 13.9 總結
- 13.8 Linux MMC子系統
- 13.7.4 vmem_disk的I/O請求處理
- 13.7.3 vmem_disk設備驅動的block_device_operations
- 13.7.2 vmem_disk驅動模塊的加載與卸載
- 13.7.1 vmem_disk的硬件原理
- 13.7 實例:vmem_disk驅動
- 13.6.2 不使用請求隊列
- 13.6.1 使用請求隊列
- 13.6 塊設備驅動的I/O請求處理
- 13.5 塊設備驅動的ioctl函數
- 13.4 塊設備的打開與釋放
- 13.3 Linux塊設備驅動的初始化
- 13.2.4 I/O調度器
- 13.2.3 bio、request和request_queue
- 13.2.2 gendisk結構體
- 13.2.1 block_device_operations結構體
- 13.2 Linux塊設備驅動結構
- 13.1 塊設備的I/O操作特點
- 第13章 Linux塊設備驅動
- 12.5 總結
- 12.4.2 Linux SPI主機和設備驅動
- 12.4.1 主機驅動與外設驅動分離
- 12.4 主機驅動與外設驅動分離的設計思想
- 12.3.7 驅動核心層
- 12.3.6 misc設備驅動
- 12.3.5 終端設備驅動
- 12.3.4 Framebuffer設備驅動
- 12.3.3 RTC設備驅動
- 12.3.2 輸入設備驅動
- 12.3.1 設備驅動核心層和例化
- 12.3 設備驅動的分層思想
- 12.2.3 platform設備資源和數據
- 12.2.2 將globalfifo作為platform設備
- 12.2.1 platform總線、設備與驅動
- 12.2 platform設備驅動
- 12.1 Linux驅動的軟件架構
- 第12章 Linux設備驅動的軟件架構思想
- 11.7 總結
- 11.6.2 Linux下的DMA編程
- 11.6.1 DMA與Cache一致性
- 11.6 DMA
- 11.5 I/O內存靜態映射
- 11.4.4 將設備地址映射到用戶空間
- 11.4.3 設備I/O端口和I/O內存訪問流程
- 11.4.2 申請與釋放設備的I/O端口和I/O內存
- 11.4.1 Linux I/O端口和I/O內存訪問接口
- 11.4 設備I/O端口和I/O內存的訪問
- 11.3.2 內核空間內存動態申請
- 11.3.1 用戶空間內存動態申請
- 11.3 內存存取
- 11.2 Linux內存管理
- 11.1.2 內存管理單元
- 11.1.1 內存空間與I/O空間
- 11.1 CPU與內存、I/O
- 第11章 內存與I/O訪問
- 10.7 總結
- 10.6.3 睡著延遲
- 10.6.2 長延遲
- 10.6.1 短延遲
- 10.6 內核延時
- 10.5.3 實例:秒字符設備
- 10.5.2 內核中延遲的工作delayed_work
- 10.5.1 內核定時器編程
- 10.5 內核定時器
- 10.4 中斷共享
- 10.3.4 實例:GPIO按鍵的中斷
- 10.3.3 底半部機制
- 10.3.2 使能和屏蔽中斷
- 10.3.1 申請和釋放中斷
- 10.3 Linux中斷編程
- 10.2 Linux中斷處理程序架構
- 10.1 中斷與定時器
- 第10章 中斷與時鐘
- 9.5 總結
- 9.4.3 AIO與設備驅動
- 9.4.2 Linux內核AIO與libaio
- 9.4.1 AIO概念與GNU C庫AIO
- 9.4 Linux異步I/O
- 9.3.2 在用戶空間中驗證globalfifo的異步通知
- 9.3.1 在globalfifo驅動中增加異步通知
- 9.3 支持異步通知的globalfifo驅動
- 9.2.3 信號的釋放
- 9.2.2 信號的接收
- 9.2.1 Linux信號
- 9.2 Linux異步通知編程
- 9.1 異步通知的概念與作用
- 第9章 Linux設備驅動中的異步通知與異步I/O
- 8.4 總結
- 8.3.2 在用戶空間中驗證globalfifo設備的輪詢
- 8.3.1 在globalfifo驅動中增加輪詢操作
- 8.3 支持輪詢操作的globalfifo驅動
- 8.2.3 設備驅動中的輪詢編程
- 8.2.2 應用程序中的輪詢編程
- 8.2.1 輪詢的概念與作用
- 8.2 輪詢操作
- 8.1.3 在用戶空間驗證globalfifo的讀寫
- 8.1.2 支持阻塞操作的globalfifo設備驅動
- 8.1.1 等待隊列
- 8.1 阻塞與非阻塞I/O
- 第8章 Linux設備驅動中的阻塞與非阻塞I/O
- 7.10 總結
- 7.9 增加并發控制后的globalmem的設備驅動
- 7.8 完成量
- 7.7 互斥體
- 7.6 信號量
- 7.5.4 讀-復制-更新
- 7.5.3 順序鎖
- 7.5.2 讀寫自旋鎖
- 7.5.1 自旋鎖的使用
- 7.5 自旋鎖
- 7.4.2 位原子操作
- 7.4.1 整型原子操作
- 7.4 原子操作
- 7.3 中斷屏蔽
- 7.2 編譯亂序和執行亂序
- 7.1 并發與競態
- 第7章 Linux設備驅動中的并發控制
- 6.5 總結
- 6.4 globalmem驅動在用戶空間中的驗證
- 6.3.6 使用文件私有數據
- 6.3.5 ioctl函數
- 6.3.4 seek函數
- 6.3.3 讀寫函數
- 6.3.2 加載與卸載設備驅動
- 6.3.1 頭文件、宏及設備結構體
- 6.3 globalmem設備驅動
- 6.2 globalmem虛擬設備實例描述
- 6.1.4 Linux字符設備驅動的組成
- 6.1.3 file_operations結構體
- 6.1.2 分配和釋放設備號
- 6.1.1 cdev結構體
- 6.1 Linux字符設備驅動結構
- 第6章 字符設備驅動
- 5.5 總結
- 5.4.4 udev規則文件
- 5.4.3 udev的組成
- 5.4.2 sysfs文件系統與Linux設備模型
- 5.4.1 udev與devfs的區別
- 5.4 udev用戶空間設備管理
- 5.3 devfs
- 5.2.2 Linux文件系統與設備驅動
- 5.2.1 Linux文件系統目錄結構
- 5.2 Linux文件系統
- 5.1.2 C庫文件操作
- 5.1.1 文件操作系統調用
- 5.1 Linux文件操作
- 第5章 Linux文件系統與設備文件
- 4.11 總結
- 4.10 使用模塊“繞開”GPL
- 4.9 模塊的編譯
- 4.8 模塊的使用計數
- 4.7 模塊聲明與描述
- 4.6 導出符號
- 4.5 模塊參數
- 4.4 模塊卸載函數
- 4.3 模塊加載函數
- 4.2 Linux內核模塊程序結構
- 4.1 Linux內核模塊簡介
- 第4章 Linux內核模塊
- 3.9 總結
- 3.8 串口工具
- 3.7 實驗室建設
- 3.6 工具鏈
- 3.5.4 goto語句
- 3.5.3 do{}while(0)語句
- 3.5.2 GNU C與ANSI C
- 3.5.1 Linux編碼風格
- 3.5 Linux下的C編程特點
- 3.4.3 Linux內核的引導
- 3.4.2 Kconfig和Makefile
- 3.4.1 Linux內核的編譯
- 3.4 Linux內核的編譯及加載
- 3.3.3 Linux內核空間與用戶空間
- 3.3.2 Linux內核的組成部分
- 3.3.1 Linux內核源代碼的目錄結構
- 3.3 Linux內核的組成
- 3.2 Linux 2.6后的內核特點
- 3.1 Linux內核的發展與演變
- 第3章 Linux內核及內核編程
- 2.9 總結
- 2.8.3 邏輯分析儀
- 2.8.2 示波器
- 2.8.1 萬用表
- 2.8 儀器儀表使用
- 2.7 芯片數據手冊閱讀方法
- 2.6.2 典型的硬件時序
- 2.6.1 時序分析的概念
- 2.6 硬件時序分析
- 2.5 原理圖分析
- 2.4 CPLD和FPGA
- 2.3.7 SD和SDIO
- 2.3.6 PCI和PCI-E
- 2.3.5 以太網接口
- 2.3.4 USB
- 2.3.3 SPI
- 2.3.2 I2C
- 2.3.1 串口
- 2.3 接口與總線
- 2.2 存儲器
- 2.1.2 數字信號處理器
- 2.1.1 通用處理器
- 2.1 處理器
- 第2章 驅動設計的硬件基礎
- 1.6.2 Linux下的LED驅動
- 1.6.1 無操作系統時的LED驅動
- 1.6 設備驅動Hello World:LED驅動
- 1.5.3 源代碼閱讀和編輯
- 1.5.2 QEMU實驗平臺
- 1.5.1 PC上的Linux環境
- 1.5 Linux設備驅動的開發環境構建
- 1.4.3 Linux設備驅動的重點、難點
- 1.4.2 Linux設備驅動與整個軟硬件系統的關系
- 1.4.1 設備的分類及特點
- 1.4 Linux設備驅動
- 1.3 有操作系統時的設備驅動
- 1.2 無操作系統時的設備驅動
- 1.1 設備驅動的作用
- 第1章 Linux設備驅動概述及開發環境構建
- 前言
- 推薦序二
- 推薦序一
- 版權信息
- 封面
- 封面
- 版權信息
- 推薦序一
- 推薦序二
- 前言
- 第1章 Linux設備驅動概述及開發環境構建
- 1.1 設備驅動的作用
- 1.2 無操作系統時的設備驅動
- 1.3 有操作系統時的設備驅動
- 1.4 Linux設備驅動
- 1.4.1 設備的分類及特點
- 1.4.2 Linux設備驅動與整個軟硬件系統的關系
- 1.4.3 Linux設備驅動的重點、難點
- 1.5 Linux設備驅動的開發環境構建
- 1.5.1 PC上的Linux環境
- 1.5.2 QEMU實驗平臺
- 1.5.3 源代碼閱讀和編輯
- 1.6 設備驅動Hello World:LED驅動
- 1.6.1 無操作系統時的LED驅動
- 1.6.2 Linux下的LED驅動
- 第2章 驅動設計的硬件基礎
- 2.1 處理器
- 2.1.1 通用處理器
- 2.1.2 數字信號處理器
- 2.2 存儲器
- 2.3 接口與總線
- 2.3.1 串口
- 2.3.2 I2C
- 2.3.3 SPI
- 2.3.4 USB
- 2.3.5 以太網接口
- 2.3.6 PCI和PCI-E
- 2.3.7 SD和SDIO
- 2.4 CPLD和FPGA
- 2.5 原理圖分析
- 2.6 硬件時序分析
- 2.6.1 時序分析的概念
- 2.6.2 典型的硬件時序
- 2.7 芯片數據手冊閱讀方法
- 2.8 儀器儀表使用
- 2.8.1 萬用表
- 2.8.2 示波器
- 2.8.3 邏輯分析儀
- 2.9 總結
- 第3章 Linux內核及內核編程
- 3.1 Linux內核的發展與演變
- 3.2 Linux 2.6后的內核特點
- 3.3 Linux內核的組成
- 3.3.1 Linux內核源代碼的目錄結構
- 3.3.2 Linux內核的組成部分
- 3.3.3 Linux內核空間與用戶空間
- 3.4 Linux內核的編譯及加載
- 3.4.1 Linux內核的編譯
- 3.4.2 Kconfig和Makefile
- 3.4.3 Linux內核的引導
- 3.5 Linux下的C編程特點
- 3.5.1 Linux編碼風格
- 3.5.2 GNU C與ANSI C
- 3.5.3 do{}while(0)語句
- 3.5.4 goto語句
- 3.6 工具鏈
- 3.7 實驗室建設
- 3.8 串口工具
- 3.9 總結
- 第4章 Linux內核模塊
- 4.1 Linux內核模塊簡介
- 4.2 Linux內核模塊程序結構
- 4.3 模塊加載函數
- 4.4 模塊卸載函數
- 4.5 模塊參數
- 4.6 導出符號
- 4.7 模塊聲明與描述
- 4.8 模塊的使用計數
- 4.9 模塊的編譯
- 4.10 使用模塊“繞開”GPL
- 4.11 總結
- 第5章 Linux文件系統與設備文件
- 5.1 Linux文件操作
- 5.1.1 文件操作系統調用
- 5.1.2 C庫文件操作
- 5.2 Linux文件系統
- 5.2.1 Linux文件系統目錄結構
- 5.2.2 Linux文件系統與設備驅動
- 5.3 devfs
- 5.4 udev用戶空間設備管理
- 5.4.1 udev與devfs的區別
- 5.4.2 sysfs文件系統與Linux設備模型
- 5.4.3 udev的組成
- 5.4.4 udev規則文件
- 5.5 總結
- 第6章 字符設備驅動
- 6.1 Linux字符設備驅動結構
- 6.1.1 cdev結構體
- 6.1.2 分配和釋放設備號
- 6.1.3 file_operations結構體
- 6.1.4 Linux字符設備驅動的組成
- 6.2 globalmem虛擬設備實例描述
- 6.3 globalmem設備驅動
- 6.3.1 頭文件、宏及設備結構體
- 6.3.2 加載與卸載設備驅動
- 6.3.3 讀寫函數
- 6.3.4 seek函數
- 6.3.5 ioctl函數
- 6.3.6 使用文件私有數據
- 6.4 globalmem驅動在用戶空間中的驗證
- 6.5 總結
- 第7章 Linux設備驅動中的并發控制
- 7.1 并發與競態
- 7.2 編譯亂序和執行亂序
- 7.3 中斷屏蔽
- 7.4 原子操作
- 7.4.1 整型原子操作
- 7.4.2 位原子操作
- 7.5 自旋鎖
- 7.5.1 自旋鎖的使用
- 7.5.2 讀寫自旋鎖
- 7.5.3 順序鎖
- 7.5.4 讀-復制-更新
- 7.6 信號量
- 7.7 互斥體
- 7.8 完成量
- 7.9 增加并發控制后的globalmem的設備驅動
- 7.10 總結
- 第8章 Linux設備驅動中的阻塞與非阻塞I/O
- 8.1 阻塞與非阻塞I/O
- 8.1.1 等待隊列
- 8.1.2 支持阻塞操作的globalfifo設備驅動
- 8.1.3 在用戶空間驗證globalfifo的讀寫
- 8.2 輪詢操作
- 8.2.1 輪詢的概念與作用
- 8.2.2 應用程序中的輪詢編程
- 8.2.3 設備驅動中的輪詢編程
- 8.3 支持輪詢操作的globalfifo驅動
- 8.3.1 在globalfifo驅動中增加輪詢操作
- 8.3.2 在用戶空間中驗證globalfifo設備的輪詢
- 8.4 總結
- 第9章 Linux設備驅動中的異步通知與異步I/O
- 9.1 異步通知的概念與作用
- 9.2 Linux異步通知編程
- 9.2.1 Linux信號
- 9.2.2 信號的接收
- 9.2.3 信號的釋放
- 9.3 支持異步通知的globalfifo驅動
- 9.3.1 在globalfifo驅動中增加異步通知
- 9.3.2 在用戶空間中驗證globalfifo的異步通知
- 9.4 Linux異步I/O
- 9.4.1 AIO概念與GNU C庫AIO
- 9.4.2 Linux內核AIO與libaio
- 9.4.3 AIO與設備驅動
- 9.5 總結
- 第10章 中斷與時鐘
- 10.1 中斷與定時器
- 10.2 Linux中斷處理程序架構
- 10.3 Linux中斷編程
- 10.3.1 申請和釋放中斷
- 10.3.2 使能和屏蔽中斷
- 10.3.3 底半部機制
- 10.3.4 實例:GPIO按鍵的中斷
- 10.4 中斷共享
- 10.5 內核定時器
- 10.5.1 內核定時器編程
- 10.5.2 內核中延遲的工作delayed_work
- 10.5.3 實例:秒字符設備
- 10.6 內核延時
- 10.6.1 短延遲
- 10.6.2 長延遲
- 10.6.3 睡著延遲
- 10.7 總結
- 第11章 內存與I/O訪問
- 11.1 CPU與內存、I/O
- 11.1.1 內存空間與I/O空間
- 11.1.2 內存管理單元
- 11.2 Linux內存管理
- 11.3 內存存取
- 11.3.1 用戶空間內存動態申請
- 11.3.2 內核空間內存動態申請
- 11.4 設備I/O端口和I/O內存的訪問
- 11.4.1 Linux I/O端口和I/O內存訪問接口
- 11.4.2 申請與釋放設備的I/O端口和I/O內存
- 11.4.3 設備I/O端口和I/O內存訪問流程
- 11.4.4 將設備地址映射到用戶空間
- 11.5 I/O內存靜態映射
- 11.6 DMA
- 11.6.1 DMA與Cache一致性
- 11.6.2 Linux下的DMA編程
- 11.7 總結
- 第12章 Linux設備驅動的軟件架構思想
- 12.1 Linux驅動的軟件架構
- 12.2 platform設備驅動
- 12.2.1 platform總線、設備與驅動
- 12.2.2 將globalfifo作為platform設備
- 12.2.3 platform設備資源和數據
- 12.3 設備驅動的分層思想
- 12.3.1 設備驅動核心層和例化
- 12.3.2 輸入設備驅動
- 12.3.3 RTC設備驅動
- 12.3.4 Framebuffer設備驅動
- 12.3.5 終端設備驅動
- 12.3.6 misc設備驅動
- 12.3.7 驅動核心層
- 12.4 主機驅動與外設驅動分離的設計思想
- 12.4.1 主機驅動與外設驅動分離
- 12.4.2 Linux SPI主機和設備驅動
- 12.5 總結
- 第13章 Linux塊設備驅動
- 13.1 塊設備的I/O操作特點
- 13.2 Linux塊設備驅動結構
- 13.2.1 block_device_operations結構體
- 13.2.2 gendisk結構體
- 13.2.3 bio、request和request_queue
- 13.2.4 I/O調度器
- 13.3 Linux塊設備驅動的初始化
- 13.4 塊設備的打開與釋放
- 13.5 塊設備驅動的ioctl函數
- 13.6 塊設備驅動的I/O請求處理
- 13.6.1 使用請求隊列
- 13.6.2 不使用請求隊列
- 13.7 實例:vmem_disk驅動
- 13.7.1 vmem_disk的硬件原理
- 13.7.2 vmem_disk驅動模塊的加載與卸載
- 13.7.3 vmem_disk設備驅動的block_device_operations
- 13.7.4 vmem_disk的I/O請求處理
- 13.8 Linux MMC子系統
- 13.9 總結
- 第14章 Linux網絡設備驅動
- 14.1 Linux網絡設備驅動的結構
- 14.1.1 網絡協議接口層
- 14.1.2 網絡設備接口層
- 14.1.3 設備驅動功能層
- 14.2 網絡設備驅動的注冊與注銷
- 14.3 網絡設備的初始化
- 14.4 網絡設備的打開與釋放
- 14.5 數據發送流程
- 14.6 數據接收流程
- 14.7 網絡連接狀態
- 14.8 參數設置和統計數據
- 14.9 DM9000網卡設備驅動實例
- 14.9.1 DM9000網卡硬件描述
- 14.9.2 DM9000網卡驅動設計分析
- 14.10 總結
- 第15章 Linux I2C核心、總線與設備驅動
- 15.1 Linux I2C體系結構
- 15.2 Linux I2C核心
- 15.3 Linux I2C適配器驅動
- 15.3.1 I2C適配器驅動的注冊與注銷
- 15.3.2 I2C總線的通信方法
- 15.4 Linux I2C設備驅動
- 15.4.1 Linux I2C設備驅動的模塊加載與卸載
- 15.4.2 Linux I2C設備驅動的數據傳輸
- 15.4.3 Linux的i2c-dev.c文件分析
- 15.5 Tegra I2C總線驅動實例
- 15.6 AT24xx EEPROM的I2C設備驅動實例
- 15.7 總結
- 第16章 USB主機、設備與Gadget驅動
- 16.1 Linux USB驅動層次
- 16.1.1 主機側與設備側USB驅動
- 16.1.2 設備、配置、接口、端點
- 16.2 USB主機控制器驅動
- 16.2.1 USB主機控制器驅動的整體結構
- 16.2.2 實例:Chipidea USB主機驅動
- 16.3 USB設備驅動
- 16.3.1 USB設備驅動的整體結構
- 16.3.2 USB請求塊
- 16.3.3 探測和斷開函數
- 16.3.4 USB骨架程序
- 16.3.5 實例:USB鍵盤驅動
- 16.4 USB UDC與Gadget驅動
- 16.4.1 UDC和Gadget驅動的關鍵數據結構與API
- 16.4.2 實例:Chipidea USB UDC驅動
- 16.4.3 實例:Loopback Function驅動
- 16.5 USB OTG驅動
- 16.6 總結
- 第17章 I2C、SPI、USB驅動架構類比
- 17.1 I2C、SPI、USB驅動架構
- 17.2 I2C主機和外設眼里的Linux世界
- 第18章 ARM Linux設備樹
- 18.1 ARM設備樹起源
- 18.2 設備樹的組成和結構
- 18.2.1 DTS、DTC和DTB等
- 18.2.2 根節點兼容性
- 18.2.3 設備節點兼容性
- 18.2.4 設備節點及label的命名
- 18.2.5 地址編碼
- 18.2.6 中斷連接
- 18.2.7 GPIO、時鐘、pinmux連接
- 18.3 由設備樹引發的BSP和驅動變更
- 18.4 常用的OF API
- 18.5 總結
- 第19章 Linux電源管理的系統架構和驅動
- 19.1 Linux電源管理的全局架構
- 19.2 CPUFreq驅動
- 19.2.1 SoC的CPUFreq驅動實現
- 19.2.2 CPUFreq的策略
- 19.2.3 CPUFreq的性能測試和調優
- 19.2.4 CPUFreq通知
- 19.3 CPUIdle驅動
- 19.4 PowerTop
- 19.5 Regulator驅動
- 19.6 OPP
- 19.7 PM QoS
- 19.8 CPU熱插拔
- 19.9 掛起到RAM
- 19.10 運行時的PM
- 19.11 總結
- 第20章 Linux芯片級移植及底層驅動
- 20.1 ARM Linux底層驅動的組成和現狀
- 20.2 內核節拍驅動
- 20.3 中斷控制器驅動
- 20.4 SMP多核啟動以及CPU熱插拔驅動
- 20.5 DEBUG_LL和EARLY_PRINTK的設置
- 20.6 GPIO驅動
- 20.7 pinctrl驅動
- 20.8 時鐘驅動
- 20.9 dmaengine驅動
- 20.10 總結
- 第21章 Linux設備驅動的調試
- 21.1 GDB調試器的用法
- 21.1.1 GDB的基本用法
- 21.1.2 DDD圖形界面調試工具
- 21.2 Linux內核調試
- 21.3 內核打印信息——printk()
- 21.4 DEBUG_LL和EARLY_PRINTK
- 21.5 使用“/proc”
- 21.6 Oops
- 21.7 BUG_ON()和WARN_ON()
- 21.8 strace
- 21.9 KGDB
- 21.10 使用仿真器調試內核
- 21.11 應用程序調試
- 21.12 Linux性能監控與調優工具
- 21.13 總結 更新時間:2018-12-31 20:26:33