深入理解嵌入式Linux設備驅(qū)動程序

出版時間:2012-8  出版社:電子工業(yè)出版社  作者:曹國輝  頁數(shù):268  字數(shù):420000  
Tag標簽:無  

內(nèi)容概要

本書詳細闡述了嵌入式Linux設備驅(qū)動程序基本理論及開發(fā)方法。詳細講解了嵌入式系統(tǒng)的硬件體系架構,Linux系統(tǒng)的引導原理、啟動過程,Linux設備驅(qū)動模型及基本理論,具體的硬件設備驅(qū)動程序的源碼分析。在分析具體設備驅(qū)動程序源碼的基礎上,詳細講解了具體設備驅(qū)動程序的設計和移植方法。

書籍目錄

第1章 嵌入式arm系統(tǒng)開發(fā)基礎
1.1 嵌入式arm系統(tǒng)開發(fā)概述
1.1.1 arm系統(tǒng)可執(zhí)行映像文件格式
1.1.2 arm開發(fā)調(diào)試工具
1.1.3 加載地址和運行地址
1.2 嵌入式arm系統(tǒng)的啟動代碼分析
1.2.1 arm上電啟動概述
1.2.2 arm上電初始化啟動代碼分析
1.3 嵌入式arm系統(tǒng)的中斷系統(tǒng)
1.3.1 arm中斷機制代碼分析
1.3.2 arm中斷服務處理程序的響應過程
1.4 按鍵中斷實驗
第2章 嵌入式linux設備驅(qū)動程序開發(fā)環(huán)境的構建
2.1 安裝虛擬機軟件vmware 6.0.2
2.2 新建虛擬機
2.3 安裝linux操作系統(tǒng)ubuntu
2.4 安裝vmware tools工具軟件
2.5 網(wǎng)絡配置
2.6 設置軟件源服務器
.2.7 安裝libncurses5-dev軟件包
2.8 安裝交叉編譯器arm-linux-gcc
第3章 嵌入式linux內(nèi)核的裁剪與編譯
3.1 嵌入式linux內(nèi)核的本質(zhì)
3.2 嵌入式linux內(nèi)核源碼的組織
3.3 嵌入式linux內(nèi)核的移植與裁剪
3.4 嵌入式linux內(nèi)核配置、編譯的基本原理
3.5 構建嵌入式linux根文件系統(tǒng)
第4章 嵌入式系統(tǒng)bootloader代碼分析與移植
4.1 嵌入式系統(tǒng)bootloader功能概述
4.1.1 嵌入式linux系統(tǒng)的軟件組成及分布
4.1.2 嵌入式linux中為什么要有bootloader
4.1.3 bootloader的功能和選擇
4.2 u-boot源碼分析
4.2.1 u-boot源碼文件的組成及配置編譯
4.2.2 u-boot的執(zhí)行過程及l(fā)inux內(nèi)核加載流程
4.2.3 start.s源碼文件分析
4.2.4 board.c源碼文件分析
4.3 u-boot中的環(huán)境變量
4.4 linux系統(tǒng)的加載過程
4.4.1 u-boot命令執(zhí)行過程
4.4.2 bootm的執(zhí)行流程
4.5 u-boot向linux傳遞參數(shù)的過程
4.6 u-boot的移植
第5章 嵌入式linux內(nèi)核模塊與字符設備驅(qū)動
5.1 嵌入式linux內(nèi)核模塊
5.1.1 嵌入式linux內(nèi)核模塊的概念
5.1.2 嵌入式linux內(nèi)核模塊編程
5.1.3 嵌入式linux內(nèi)核模塊的編譯
5.1.4 嵌入式linux內(nèi)核模塊的安裝與卸載
5.1.5 直接編譯嵌入式linux內(nèi)核模塊到內(nèi)核
5.2 嵌入式linux字符設備驅(qū)動
5.2.1 嵌入式linux設備驅(qū)動程序的概念
5.2.2 嵌入式linux設備管理機制
5.2.3 嵌入式linux字符設備驅(qū)動程序的主要數(shù)據(jù)結(jié)構分析
5.2.4 嵌入式linux字符設備驅(qū)動的工作原理
5.2.5 嵌入式linux字符設備驅(qū)動程序設計實例
第6章 嵌入式linux系統(tǒng)的內(nèi)存管理
6.1 虛擬地址和物理地址概述
6.2 虛擬地址到物理地址轉(zhuǎn)換的基本原理
6.3 基于arm s3c2440的gpio端口地址映射實驗
6.3.1 問題描述
6.3.2 分析與思路
6.4 linux內(nèi)核中內(nèi)存分配和釋放函數(shù)的用法
第7章 嵌入式linux設備驅(qū)動開發(fā)的核心技術
7.1 嵌入式linux中斷處理和定時器
7.1.1 嵌入式linux系統(tǒng)中斷服務程序的編寫
7.1.2 嵌入式linux系統(tǒng)硬件定時器的使用
7.1.3 中斷的下半部分
7.1.4 嵌入式linux軟件定時器的使用
7.2 嵌入式linux設備驅(qū)動程序中的并發(fā)及并發(fā)控制
7.2.1 并發(fā)的概念
7.2.2 嵌入式linux設備驅(qū)動程序中的并發(fā)控制方式
7.2.3 信號量與自旋鎖的使用場景
7.3 嵌入式linux設備驅(qū)動中的阻塞與非阻塞
7.3.1 概述
7.3.2 linux設備驅(qū)動程序中阻塞的工作原理
7.3.3 進程阻塞訪問設備的基本原理
7.3.4 linux設備驅(qū)動程序中的阻塞編程
7.4 嵌入式linux設備驅(qū)動中的異步通知編程
7.4.1 概述
7.4.2 linux異步通知工作原理
7.4.3 linux異步通知應用的編程方法
7.4.4 linux異步通知驅(qū)動的編程方法
7.5 嵌入式linux設備驅(qū)動中的輪詢操作
7.5.1 概述
7.5.2 linux設備驅(qū)動輪詢操作的工作原理及源碼分析
7.5.3 linux輪詢操作的應用層編程
7.5.4 linux輪詢操作的驅(qū)動層編程
第8章 嵌入式linux平臺設備驅(qū)動程序開發(fā)
8.1 linux設備和設備驅(qū)動模型
8.1.1 linux內(nèi)核中的bus(總線)
8.1.2 linux內(nèi)核中的設備
8.1.3 linux內(nèi)核中的設備驅(qū)動
8.2 linux平臺設備驅(qū)動程序開發(fā)過程
8.3 嵌入式linux系統(tǒng)中利用mdev自動創(chuàng)建設備文件節(jié)點
第9章 嵌入式linux lcd屏驅(qū)動程序設計
9.1 lcd屏的工作原理概述
9.2 lcd屏硬件原理及驅(qū)動程序設計
9.2.1 tft lcd屏的顯示原理
9.2.2 s3c2440 lcd控制器tft lcd的控制時序分析
9.2.3 s3c2440 lcd控制器顯示的數(shù)據(jù)格式
9.2.4 s3c2440 lcd控制器的顯示數(shù)據(jù)流程
9.2.5 vbpd、vfpd、vspw和hbpd、hfpd、hspw的設置
9.3 嵌入式linux lcd屏驅(qū)動程序框架
9.4 嵌入式linux lcd屏驅(qū)動源碼分析
9.4.1 s3c2410fb.c源碼分析
9.4.2 lcd屏linux驅(qū)動主要數(shù)據(jù)結(jié)構
9.4.3 probe函數(shù)處理流程及源碼分析
9.4.4 fbmem.c源碼分析
9.5 嵌入式linux lcd屏驅(qū)動的移植
第10章 嵌入式linux觸摸屏驅(qū)動程序設計
10.1 觸摸屏工作原理概述
10.2 s3c2440觸摸屏接口及硬件驅(qū)動程序設計
10.2.1 s3c2440觸摸屏控制器接口
10.2.2 s3c2440裸機下觸摸屏控制器的接口編程
10.3 嵌入式linux觸摸屏驅(qū)動程序框架
10.4 嵌入式linux觸摸屏驅(qū)動的源碼分析
10.4.1 linux觸摸設備驅(qū)動的處理流程
10.4.2 觸摸屏驅(qū)動模塊的初始化函數(shù)s3c2410ts_init
10.4.3 筆針按下中斷服務處理程序stylus_updown
10.5 嵌入式linux輸入子系統(tǒng)的工作原理及實現(xiàn)機制
10.5.1 linux輸入子系統(tǒng)的主要數(shù)據(jù)結(jié)構與全局變量
10.5.2 輸入設備的注冊流程
10.5.3 事件處理器的注冊流程
10.5.4 輸入事件的報告流程
10.5.5 應用程序訪問輸入設備的流程
第11章 嵌入式linux mtd子系統(tǒng)與 flash驅(qū)動程序設計
11.1 mtd子系統(tǒng)概述
11.2 linux中nor flash驅(qū)動的源碼分析
11.3 mtd子系統(tǒng)的源碼分析
11.3.1 mtd子系統(tǒng)源碼組織
11.3.2 mtd子系統(tǒng)主要數(shù)據(jù)的結(jié)構分析
11.4 nor flash芯片手冊解讀
第12章 嵌入式linux nand flash 驅(qū)動程序設計
12.1 nand flash芯片硬件及接口介紹
12.1.1 nand flash存儲空間的組織
12.1.2 nand flash的硬件接口及讀寫操作時序
12.1.3 s3c2440對nand flash芯片的訪問
12.2 嵌入式linux下nand flash驅(qū)動分析
12.2.1 nand flash驅(qū)動源碼組織
12.2.2 nand flash驅(qū)動架構
12.2.3 nand flash相關操作流程
12.2.4 s3c24xx_nand_probe函數(shù)分析
12.3 應用程序?qū)and flash設備的讀/寫操作
12.3.1 mtd字符設備寫nand flash的操作分析
12.3.2 s3c2440_nand_hwcontrol函數(shù)
12.3.3 nand_command函數(shù)
第13章 嵌入式linux i2c總線驅(qū)動程序設計
13.1 i2c總線概述
13.2 s3c2440 i2c總線控制器的硬件工作原理
13.3 s3c2440 i2c控制器的硬件編程
13.3.1 初始化s3c2440 i2c主控制器
13.3.2 i2c總線寫at24c02操作
13.3.3 i2c總線讀at24c02操作
13.4 嵌入式linux i2c總線驅(qū)動架構
13.4.1 i2c體系架構的硬件實體
13.4.2 i2c驅(qū)動的軟件實體
13.5 嵌入式linux i2c總線驅(qū)動源碼的組織
13.6 嵌入式linux i2c總線控制器驅(qū)動的程序設計及源碼分析
13.6.1 i2c總線控制器驅(qū)動的主要數(shù)據(jù)結(jié)構
13.6.2 寫at24c02一個字節(jié)操作
13.6.3 i2c總線驅(qū)動框架
13.6.4 i2c總線控制器設備驅(qū)動探測函數(shù)probe的工作流程
13.6.5 i2c_add_adapter處理流程分析
13.6.6 定義和實現(xiàn)i2c適配器的底層操作接口algorithm
13.7 嵌入式linux i2c 設備驅(qū)動程序的設計及源碼分析
13.7.1 i2c設備驅(qū)動程序框架
13.7.2 i2c_add_driver函數(shù)
13.7.3 at24c02b_probe函數(shù)
13.8 應用程序通過i2c設備驅(qū)動寫at24c02一個字節(jié)的流程
第14章 嵌入式linux網(wǎng)卡驅(qū)動程序設計
14.1 概述
14.2 dm9000網(wǎng)絡芯片與s3c2440的硬件原理圖
14.3 dm9000a網(wǎng)卡芯片內(nèi)部寄存器的訪問
14.4 dm9000數(shù)據(jù)發(fā)送/接收的流程
14.5 嵌入式linux dm9000網(wǎng)卡驅(qū)動的框架及源碼分析
14.5.1 dm9000設備
14.5.2 dm9000設備驅(qū)動
14.5.3 dm9000平臺設備驅(qū)動的工作流程
14.5.4 應用層網(wǎng)絡應用程序的操作
第15章 嵌入式linux usb設備驅(qū)動程序設計
15.1 usb通信系統(tǒng)概述
15.2 usb通信系統(tǒng)的拓撲結(jié)構圖
15.3 usb通信的分時復用技術
15.4 usb通信系統(tǒng)的基本概念
15.5 usb通信的數(shù)據(jù)格式
15.5.1 域
15.5.2 包
15.5.3 事務
15.5.4 傳輸
15.5.5 usb標識域(pid)
15.6 usb設備的枚舉過程
15.7 usb設備端usb通信固件的程序設計
15.7.1 usb芯片cy7c68013概述
15.7.2 ez-usb固件程序的啟動模式
15.7.3 ez-usb芯片的中斷系統(tǒng)
15.7.4 usb固件程序的功能
15.7.5 usb固件程序的框架及源碼分析
15.8 嵌入式linux usb驅(qū)動程序框架
15.9 嵌入式linux usb主控制器驅(qū)動的源碼分析
15.9.1 s3c2440 usb主控制器平臺設備驅(qū)動的源碼分析
15.9.2 usb主機驅(qū)動枚舉usb設備的過程
15.10 嵌入式linux usb設備驅(qū)動的程序設計方法

章節(jié)摘錄

版權頁:   插圖:   由于Linux內(nèi)核觸摸屏屏驅(qū)動基于輸入子系統(tǒng)實現(xiàn),對于觸摸屏驅(qū)動開發(fā)人員來說,在大部分情況下只要自己編寫與具體硬件相關的設備驅(qū)動源碼即可,而事件核心層和事件處理層直接由內(nèi)核提供,不需要再重新編寫。這里以S3C2440 CPU、四線電阻式觸摸屏為例來分析Linux下觸摸屏的設備驅(qū)動開發(fā)方法和思路,其他觸摸屏的設備驅(qū)動開發(fā)與之類似。 10.4.1 Linux觸摸設備驅(qū)動的處理流程 前面我們已經(jīng)了解了觸摸屏的工作原理,觸摸屏的測量觸摸位置信息的過程基本步驟如下: (1)初始化設置觸摸屏控制器處于等待筆針按下狀態(tài),等待用戶按下觸摸筆。 (2)用戶按下筆針后,觸發(fā)筆針按下中斷,在筆針按下中斷服務處理程序中,開始測量X、Y位置坐標信息,X、Y坐標位置信息測量完成后,向輸入子系統(tǒng)事件處理層報告位置信息及筆針狀態(tài),設置觸摸屏控制器處于等待筆針抬起狀態(tài),等待用戶抬起筆針。 (3)用戶抬起筆針,觸發(fā)筆針抬起中斷,在筆針抬起中斷服務程序中,再設置觸摸屏控制器處于等待筆針按下狀態(tài),等待用戶按下觸摸筆,準備下一次觸摸的測量。 Linux觸摸屏驅(qū)動觸摸點位置信息測量流程如下圖所示。 了解了Linux下觸摸屏驅(qū)動的總體實現(xiàn)思路,下面分析Linux下觸摸屏設備驅(qū)動的源碼。以S3C2440 ARM CPU為例,Linux觸摸屏設備驅(qū)動的源碼文件為s3c2410_ts.c。 Linux的觸摸屏設備驅(qū)動是以模塊方式存在的,編寫一個Linux觸摸屏設備驅(qū)動主要分為以下幾個步驟: (1)初始化S3C2440的觸摸屏控制器相關寄存器,設置ADC轉(zhuǎn)換器的時鐘頻率的分頻系數(shù),A/D轉(zhuǎn)換器的工作模式等。 (2)創(chuàng)建Linux內(nèi)核中代表輸入設備的全局結(jié)構體變量struct input_dev*inpu_dev,在Linux內(nèi)核中,struct input_dev就代表一個設備驅(qū)動層的輸入設備。 (3)設置設備驅(qū)動層輸入設備struct input_dev所支持的事件類型及支持的按鍵編碼。 (4)初始化輸入設備struct input_dev的設備id,事件處理層通過設備的id來判斷是否支持該輸入設備。 (5)最后調(diào)用事件核心層提供的函數(shù)input_register_device來注冊輸入設備到核心層。 (6)觸摸屏的設備驅(qū)動還需要注冊兩個中斷以及完成兩個中斷處理函數(shù),分別是觸摸屏中斷IRQ_TC和IRQ_ADC中斷,IRQ_TC中斷用來檢測筆針按下和抬起信號;IRQ_ADC中斷用來處理X、Y坐標位置信息的A/D轉(zhuǎn)換及向事件處理層匯報輸入事件。 了解了觸摸屏驅(qū)動開發(fā)的基本步驟,接下來分析s3c2410_ts.C觸摸屏設備的驅(qū)動源碼。 觸摸屏設備驅(qū)動s3c2410_ts.C是一個驅(qū)動模塊,以模塊的方式存在,將觸摸屏驅(qū)動插入內(nèi)核后,首先執(zhí)行模塊初始化函數(shù)s3c2410ts_init,我們就從s3c2410ts_init開始分析。

編輯推薦

《深入理解嵌入式Linux設備驅(qū)動程序》可作為高校嵌入式專業(yè)教材以及廣大嵌入式愛好者的參考書。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    深入理解嵌入式Linux設備驅(qū)動程序 PDF格式下載


用戶評論 (總計20條)

 
 

  •   曹老師的《深入理解嵌入式linux設備驅(qū)動程序》前面就了解過,剛剛買了本拜讀。這本書是站在驅(qū)動開發(fā)工程師的角度,以實際開發(fā)板fl2440硬件為基礎,從簡到繁講解了linux驅(qū)動的開發(fā)方法。不但講了怎么做,也講了為什么這樣做,是linux驅(qū)動設備非常經(jīng)典的講解書籍!
  •   專業(yè)書,深入理解嵌入式Linux設備驅(qū)動程序
  •   設備驅(qū)動介紹的很詳細
  •   很適合初學者學習驅(qū)動程序編寫。。講的聽詳細的。。
  •   講解深入細致,讀者可能遇到的技術細節(jié)都做了恰當?shù)慕忉??;诶碚摰膶嵺`操作。
  •   看了幾章,非常的基礎,很適合初學者使用,講解的也很清晰
  •   書寫的很詳細,很實用。
  •   作為入門之書還是很不錯的,理論概念講的很透徹
  •   這個本書很適合我的的工作入門學習,學到了很多,基本都用上了。
  •   這書主要講ARM9的,寫得很新穎,不一般,好
  •   很好!是我需要的!
  •   看目錄很底層。
  •   書不錯 就是發(fā)的慢
  •   初步學習的人很值得看,就是書的質(zhì)量有點失望
  •   講的驅(qū)動還是比較全面,主要的設備都涉及到了,是一本還不錯的參考書,,。
  •   書內(nèi)容一般 有些東西并沒有說清楚 快遞很給力
  •   書的質(zhì)量還不錯,內(nèi)容也算全面。只是對初學者來說,仍讓有很多讓人迷惑的地方。
  •   簡單看了一下,挺適合初學者
  •   內(nèi)容非常一般 不建議購買
  •   是學習驅(qū)動的好助手!
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7