TOP
從紙書中看見香港,指定港書滿888再折100
深入理解嵌入式Linux設備驅動程序(簡體書)
滿額折

深入理解嵌入式Linux設備驅動程序(簡體書)

商品資訊

人民幣定價:49 元
定價
:NT$ 294 元
優惠價
87256
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :7 點
商品簡介
名人推薦
目次
書摘/試閱

商品簡介

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

名人推薦

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

目次

第1章嵌入式ARM系統開發基礎1
1.1嵌入式ARM系統開發概述1
1.1.1ARM系統可執行映像文件格式1
1.1.2ARM開發調試工具2
1.1.3加載地址和運行地址3
1.2嵌入式ARM系統的啟動代碼分析4
1.2.1ARM上電啟動概述4
1.2.2ARM上電初始化啟動代碼分析5
1.3嵌入式ARM系統的中斷系統10
1.3.1ARM中斷機制代碼分析10
1.3.2ARM中斷服務處理程序的響應過程13
1.4按鍵中斷實驗15
第2章嵌入式Linux設備驅動程序開發環境的構建16
2.1安裝虛擬機軟件VMware6.0.216
2.2新建虛擬機17
2.3安裝Linux操作系統ubuntu19
2.4安裝VMwaretools工具軟件23
2.5網絡配置26
2.6設置軟件源服務器27
2.7安裝libncurses5—dev軟件包28
2.8安裝交叉編譯器arm—linux—gcc28
第3章嵌入式Linux內核的裁剪與編譯31
3.1嵌入式Linux內核的本質31
3.2嵌入式Linux內核源碼的組織32
3.3嵌入式Linux內核的移植與裁剪34
3.4嵌入式Linux內核配置、編譯的基本原理39
3.5構建嵌入式Linux根文件系統40
第4章嵌入式系統BootLoader代碼分析與移植46
4.1嵌入式系統BootLoader功能概述46
4.1.1嵌入式Linux系統的軟件組成及分布46
4.1.2嵌入式Linux中為什么要有BootLoader47
4.1.3BootLoader的功能和選擇47
4.2u—boot源碼分析48
4.2.1u—boot源碼文件的組成及配置編譯48
4.2.2u—boot的執行過程及Linux內核加載流程50
4.2.3start.s源碼文件分析50
4.2.4board.c源碼文件分析51
4.3u—boot中的環境變量52
4.4Linux系統的加載過程53
4.4.1u—boot命令執行過程54
4.4.2bootm的執行流程55
4.5u—boot向Linux傳遞參數的過程57
4.6u—boot的移植58
第5章嵌入式Linux內核模塊與字符設備驅動61
5.1嵌入式Linux內核模塊61
5.1.1嵌入式Linux內核模塊的概念61
5.1.2嵌入式Linux內核模塊編程61
5.1.3嵌入式Linux內核模塊的編譯62
5.1.4嵌入式Linux內核模塊的安裝與卸載63
5.1.5直接編譯嵌入式Linux內核模塊到內核63
5.2嵌入式Linux字符設備驅動63
5.2.1嵌入式Linux設備驅動程序的概念63
5.2.2嵌入式Linux設備管理機制64
5.2.3嵌入式Linux字符設備驅動程序的主要數據結構分析65
5.2.4嵌入式Linux字符設備驅動的工作原理66
5.2.5嵌入式Linux字符設備驅動程序設計實例68
第6章嵌入式Linux系統的內存管理72
6.1虛擬地址和物理地址概述72
6.2虛擬地址到物理地址轉換的基本原理73
6.3基于ARMS3C2440的GPIO端口地址映射實驗76
6.3.1問題描述76
6.3.2分析與思路76
6.4Linux內核中內存分配和釋放函數的用法77
第7章嵌入式Linux設備驅動開發的核心技術78
7.1嵌入式Linux中斷處理和定時器78
7.1.1嵌入式Linux系統中斷服務程序的編寫78
7.1.2嵌入式Linux系統硬件定時器的使用79
7.1.3中斷的下半部分80
7.1.4嵌入式Linux軟件定時器的使用80
7.2嵌入式Linux設備驅動程序中的并發及并發控制81
7.2.1并發的概念81
7.2.2嵌入式Linux設備驅動程序中的并發控制方式82
7.2.3信號量與自旋鎖的使用場景83
7.3嵌入式Linux設備驅動中的阻塞與非阻塞84
7.3.1概述84
7.3.2Linux設備驅動程序中阻塞的工作原理84
7.3.3進程阻塞訪問設備的基本原理85
7.3.4Linux設備驅動程序中的阻塞編程86
7.4嵌入式Linux設備驅動中的異步通知編程87
7.4.1概述87
7.4.2Linux異步通知工作原理88
7.4.3Linux異步通知應用的編程方法90
7.4.4Linux異步通知驅動的編程方法91
7.5嵌入式Linux設備驅動中的輪詢操作92
7.5.1概述92
7.5.2Linux設備驅動輪詢操作的工作原理及源碼分析92
7.5.3Linux輪詢操作的應用層編程97
7.5.4Linux輪詢操作的驅動層編程97
第8章嵌入式Linux平臺設備驅動程序開發99
8.1Linux設備和設備驅動模型99
8.1.1Linux內核中的BUS(總線)99
8.1.2Linux內核中的設備100
8.1.3Linux內核中的設備驅動101
8.2Linux平臺設備驅動程序開發過程103
8.3嵌入式Linux系統中利用mdev自動創建設備文件節點105
第9章嵌入式LinuxLCD屏驅動程序設計107
9.1LCD屏的工作原理概述107
9.2LCD屏硬件原理及驅動程序設計108
9.2.1TFTLCD屏的顯示原理109
9.2.2S3C2440LCD控制器TFTLCD的控制時序分析110
9.2.3S3C2440LCD控制器顯示的數據格式111
9.2.4S3C2440LCD控制器的顯示數據流程112
9.2.5VBPD、VFPD、VSPW和HBPD、HFPD、HSPW的設置113
9.3嵌入式LinuxLCD屏驅動程序框架114
9.4嵌入式LinuxLCD屏驅動源碼分析115
9.4.1S3c2410fb.c源碼分析116
9.4.2LCD屏Linux驅動主要數據結構117
9.4.3Probe函數處理流程及源碼分析121
9.4.4Fbmem.c源碼分析124
9.5嵌入式LinuxLCD屏驅動的移植125
第10章嵌入式Linux觸摸屏驅動程序設計128
10.1觸摸屏工作原理概述128
10.2S3C2440觸摸屏接口及硬件驅動程序設計129
10.2.1S3C2440觸摸屏控制器接口129
10.2.2S3C2440裸機下觸摸屏控制器的接口編程131
10.3嵌入式Linux觸摸屏驅動程序框架133
10.4嵌入式Linux觸摸屏驅動的源碼分析134
10.4.1Linux觸摸設備驅動的處理流程134
10.4.2觸摸屏驅動模塊的初始化函數s3c2410ts_init135
10.4.3筆針按下中斷服務處理程序stylus_updown137
10.5嵌入式Linux輸入子系統的工作原理及實現機制140
10.5.1Linux輸入子系統的主要數據結構與全局變量140
10.5.2輸入設備的注冊流程145
10.5.3事件處理器的注冊流程146
10.5.4輸入事件的報告流程149
10.5.5應用程序訪問輸入設備的流程152
第11章嵌入式LinuxMTD子系統與FLASH驅動程序設計154
11.1MTD子系統概述154
11.2Linux中NorFLASH驅動的源碼分析157
11.3MTD子系統的源碼分析160
11.3.1MTD子系統源碼組織160
11.3.2MTD子系統主要數據的結構分析161
11.4NorFLASH芯片手冊解讀163
第12章嵌入式LinuxNandFLASH驅動程序設計165
12.1NandFLASH芯片硬件及接口介紹165
12.1.1NandFLASH存儲空間的組織165
12.1.2NandFLASH的硬件接口及讀寫操作時序166
12.1.3S3C2440對NandFLASH芯片的訪問167
12.2嵌入式Linux下NandFLASH驅動分析168
12.2.1NandFLASH驅動源碼組織168
12.2.2NandFLASH驅動架構168
12.2.3NandFLASH相關操作流程171
12.2.4s3c24xx_nand_probe函數分析172
12.3應用程序對NandFLASH設備的讀/寫操作175
12.3.1MTD字符設備寫NandFLASH的操作分析175
12.3.2s3c2440_nand_hwcontrol函數178
12.3.3nand_command函數178
第13章嵌入式LinuxI2C總線驅動程序設計182
13.1I2C總線概述182
13.2S3C2440I2C總線控制器的硬件工作原理183
13.3S3C2440I2C控制器的硬件編程185
13.3.1初始化S3C2440I2C主控制器185
13.3.2I2C總線寫AT24C02操作185
13.3.3I2C總線讀AT24C02操作187
13.4嵌入式LinuxI2C總線驅動架構188
13.4.1I2C體系架構的硬件實體189
13.4.2I2C驅動的軟件實體189
13.5嵌入式LinuxI2C總線驅動源碼的組織190
13.6嵌入式LinuxI2C總線控制器驅動的程序設計及源碼分析190
13.6.1I2C總線控制器驅動的主要數據結構191
13.6.2寫AT24C02一個字節操作192
13.6.3I2C總線驅動框架192
13.6.4I2C總線控制器設備驅動探測函數probe的工作流程194
13.6.5i2c_add_adapter處理流程分析196
13.6.6定義和實現I2C適配器的底層操作接口Algorithm197
13.7嵌入式LinuxI2C設備驅動程序的設計及源碼分析198
13.7.1I2C設備驅動程序框架200
13.7.2i2c_add_driver函數203
13.7.3at24c02b_probe函數203
13.8應用程序通過I2C設備驅動寫AT24C02一個字節的流程204
第14章嵌入式Linux網卡驅動程序設計207
14.1概述207
14.2DM9000網絡芯片與S3C2440的硬件原理圖207
14.3DM9000A網卡芯片內部寄存器的訪問208
14.4DM9000數據發送/接收的流程209
14.5嵌入式LinuxDM9000網卡驅動的框架及源碼分析210
14.5.1DM9000設備211
14.5.2DM9000設備驅動211
14.5.3DM9000平臺設備驅動的工作流程212
14.5.4應用層網絡應用程序的操作215
第15章嵌入式LinuxUSB設備驅動程序設計230
15.1USB通信系統概述230
15.2USB通信系統的拓撲結構圖230
15.3USB通信的分時復用技術231
15.4USB通信系統的基本概念231
15.5USB通信的數據格式232
15.5.1域233
15.5.2包233
15.5.3事務234
15.5.4傳輸236
15.5.5USB標識域(PID)236
15.6USB設備的枚舉過程237
15.7USB設備端USB通信固件的程序設計239
15.7.1USB芯片CY7C68013概述239
15.7.2EZ—USB固件程序的啟動模式242
15.7.3EZ—USB芯片的中斷系統242
15.7.4USB固件程序的功能244
15.7.5USB固件程序的框架及源碼分析244
15.8嵌入式LinuxUSB驅動程序框架246
15.9嵌入式LinuxUSB主控制器驅動的源碼分析247
15.9.1S3C2440USB主控制器平臺設備驅動的源碼分析248
15.9.2USB主機驅動枚舉USB設備的過程250
15.10嵌入式LinuxUSB設備驅動的程序設計方法255

書摘/試閱



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

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 256
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區