出版時間:2011-4 出版社:機械工業(yè)出版社 作者:馮國進 頁數(shù):365 字?jǐn)?shù):580000
Tag標(biāo)簽:無
內(nèi)容概要
設(shè)備驅(qū)動程序是高級應(yīng)用程序與硬件設(shè)備之間的橋梁。驅(qū)動程序開發(fā)是軟硬件結(jié)合的技術(shù)。本書專門介紹Linux設(shè)備驅(qū)動程序開發(fā),涵蓋了Linux驅(qū)動程序基礎(chǔ)、內(nèi)核移植、I2C驅(qū)動程序、LCD驅(qū)動程序、網(wǎng)絡(luò)驅(qū)動程序、USB驅(qū)動程序、輸入子系統(tǒng)驅(qū)動程序、塊設(shè)備驅(qū)動程序等內(nèi)容。本書以實例為主線,是為Linux設(shè)備驅(qū)動程序開發(fā)人員量身打造的精品學(xué)習(xí)圖書和實戰(zhàn)指南。本書提供了豐富的實例代碼和詳細的注釋,并附贈完整代碼光盤一張。
本書主要面向各層次的嵌入式Linux開發(fā)工程師,也可以作為各類嵌入式系統(tǒng)培訓(xùn)機構(gòu)的培訓(xùn)教材和高校計算機課程的教輔書籍。
書籍目錄
出版說明
前言
第1章 Linux設(shè)備驅(qū)動程序模型
1.1 設(shè)備驅(qū)動程序基礎(chǔ)
1.1.1 驅(qū)動程序的概念
1.1.2 驅(qū)動程序的加載方式
1.1.3 編寫可加載模塊
1.1.4 帶參數(shù)的可加載模塊
1.1.5 設(shè)備驅(qū)動程序的分類
1.2 字符設(shè)備驅(qū)動程序原理
1.2.1 file 結(jié)構(gòu)
operations
1.2.2 使用register
注冊字符_chrdev設(shè)備
1.2.3 使用cdev add注冊字符設(shè)備
1.2.4 字符設(shè)備的讀寫
1.2.5 ioctl接U
1.2.6 seek接U
1.2.7 poll接[』
1.2.8 異步通知
1.3 proc文件系統(tǒng)
1.3.1 proc文件系統(tǒng)概述
1.3.2 seq file機制
1.3.3 使用proc文件系統(tǒng)
1.4 塊設(shè)備驅(qū)動程序
1.4.1 Linux塊設(shè)備驅(qū)動程序原理
1.4.2 簡單的塊設(shè)備驅(qū)動程序?qū)嵗?br /> 1.5 網(wǎng)絡(luò)設(shè)備驅(qū)動程序
1.5.1 網(wǎng)絡(luò)設(shè)備的特殊性
1.5.2 sk buff結(jié)構(gòu)
1.5.3 Linux網(wǎng)絡(luò)設(shè)備驅(qū)動程序架構(gòu)
1.5.4 虛擬網(wǎng)絡(luò)設(shè)備驅(qū)動程序?qū)嵗?br /> 1.6 Linux 2.6設(shè)備管理機制
1.6.1 kobject和kset
1.6.2 sysfs文件系統(tǒng)
1.6.3 設(shè)備模型層次
1.6.4 platform的概念
第2章 Linux內(nèi)核同步機制
1.1 鎖機制
2.1.1 自旋鎖
2.1.2 讀寫鎖
2.1.3 RCU
2.2 互斥
2.2.1 原子操作
2.2.2信號量
2.2.3 讀寫信號量
2.3 等待隊列
2.3.1 等待隊列原理
2.3.2 阻塞式I/O實例
2.3.3 完成事件
2.4 關(guān)閉中斷
第3章 內(nèi)存管理與鏈表
3.1 物理地址和虛擬地址
3.2 內(nèi)存分配與釋放
3.3 IO端口到虛擬地址的映射
3.3.1 靜態(tài)映射
3.3.2 動態(tài)映射
3.4 內(nèi)核空間到用戶空間酌映射
3.4.1 內(nèi)核中間到用戶空間的地址映射原理
3.4.2 mmap地址映射實例
3.5 內(nèi)核鏈表
3.5.1 Linux內(nèi)核中的鏈表
3.5.2 內(nèi)核鏈表實例
第4章 延遲處理
4.1 內(nèi)核線程
4.2 軟中斷機制
4.2.1 軟中斷原理
4.2.2 tasklet
……
第5章 簡單設(shè)備驅(qū)動程序
第6章 深入Linux內(nèi)核
第7章 I2C總線驅(qū)動程序
第8章 TTY與串口驅(qū)動程序
第9章 網(wǎng)絡(luò)設(shè)備驅(qū)動程序
第10章 frambuffer驅(qū)動程序
第11章 輸入子系統(tǒng)驅(qū)動程序
第12章 USB驅(qū)動程序
第13章 音頻設(shè)備驅(qū)動程序
第14章 video4linux2視頻驅(qū)動程序
第15章 CD卡驅(qū)動程序
參考文獻
章節(jié)摘錄
版權(quán)頁:插圖:在Linux操作系統(tǒng)中,設(shè)備驅(qū)動程序?qū)Ω鞣N設(shè)備提供了一致的訪問接口,用戶程序可以像對普通文件一樣對設(shè)備文件進行打開和讀寫操作。Linux包含如下3類設(shè)備驅(qū)動程序:(1)字符設(shè)備Linux下的字符設(shè)備是指發(fā)送和接收數(shù)據(jù)以字符的形式進行的設(shè)備。字符設(shè)備接口支持面向字符的I/O操作,不經(jīng)過系統(tǒng)的快速緩存,所以它們負責(zé)管理自己的緩沖區(qū)結(jié)構(gòu)。字符設(shè)備接口只支持順序存取的有限長度的I/O操作,典型的字符設(shè)備包括串行接口、LED燈、鍵盤等設(shè)備。(2)塊設(shè)備塊設(shè)備是以塊的方式進行I/0操作的設(shè)備。塊設(shè)備利用一塊系統(tǒng)內(nèi)存作緩沖區(qū),如果用戶進程對設(shè)備的請求能滿足用戶的要求,就返回請求的數(shù)據(jù),否則調(diào)用請求函數(shù)來進行實際的I/O操作。塊設(shè)備主要是針對磁盤等慢速設(shè)備設(shè)計的,以免耗費過多的CPU時間來等待響應(yīng)。塊設(shè)備支持隨機存取功能,幾乎可以支持任意位置和任意長度的I/O請求。典型的塊設(shè)備包括硬盤、CF卡、SD卡等存儲設(shè)備。(3)網(wǎng)絡(luò)設(shè)備Linux操作系統(tǒng)中的網(wǎng)絡(luò)設(shè)備是一類特殊的設(shè)備。Linux的網(wǎng)絡(luò)子系統(tǒng)主要基于BSDUNIX的socket機制,在網(wǎng)絡(luò)子系統(tǒng)和驅(qū)動程序之間定義有專門的數(shù)據(jù)結(jié)構(gòu)(skbuff)進行數(shù)據(jù)的傳遞。Linux操作系統(tǒng)支持對發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的緩存,提供流量控制機制,提供對多種網(wǎng)絡(luò)協(xié)議的支持。Linux系統(tǒng)為每個設(shè)備分配了一個主設(shè)備號與次設(shè)備號,主設(shè)備號唯一地標(biāo)識了設(shè)備類型,次設(shè)備號標(biāo)識具體設(shè)備的實例。由同一個設(shè)備驅(qū)動程序控制的所有設(shè)備具有相同的主設(shè)備號,從設(shè)備號則被用來區(qū)分具有相同主設(shè)備號的不同設(shè)備。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載