Android深度探索(卷1)

出版時(shí)間:2013-1  出版社:人民郵電出版社  作者:李寧  頁(yè)數(shù):637  字?jǐn)?shù):969000  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

  全書分為4篇,分別從搭建開發(fā)環(huán)境,Linux驅(qū)動(dòng)和Android
HAL的基礎(chǔ)知識(shí),開發(fā)Linux驅(qū)動(dòng)的高級(jí)技術(shù)和分析典型的Linux驅(qū)動(dòng)源代碼4個(gè)方面介紹Android和Linux的底層開發(fā)。本書使用的試驗(yàn)環(huán)境是Ubuntu
Linux12.04
LTS、Android模擬器和S3C6410開發(fā)板。在第1篇詳細(xì)介紹了如何搭建和使用這3個(gè)試驗(yàn)環(huán)境。第2篇通過(guò)3個(gè)Linux驅(qū)動(dòng)的完整案例(統(tǒng)計(jì)單詞個(gè)數(shù)驅(qū)動(dòng)、LED驅(qū)動(dòng)和蜂鳴器驅(qū)動(dòng))從不同角度來(lái)討論如何開發(fā)一個(gè)完整的Linux驅(qū)動(dòng)。并且通過(guò)完整的案例介紹了如何編寫Android
HAL,以及如何與Linux驅(qū)動(dòng)交互。第3篇?jiǎng)t介紹了開發(fā)Linux驅(qū)動(dòng)所需要的高級(jí)技術(shù),這些技術(shù)包括并發(fā)控制、阻塞和非阻塞I/O、異步編程、Linux中斷和底半部、時(shí)間管理、內(nèi)存管理和I/O訪問(wèn)。最后一部分分析了一些典型Linux驅(qū)動(dòng)的源代碼(RTC驅(qū)動(dòng)、LCD驅(qū)動(dòng)、音頻驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)和USB驅(qū)動(dòng))?!  禔ndroid深度探索(卷1):HAL與驅(qū)動(dòng)開發(fā)》注重理論和實(shí)踐相結(jié)合。在介紹了大量的基礎(chǔ)知識(shí)的同時(shí),為每一個(gè)知識(shí)點(diǎn)提供了完整的案例,使讀者可以通過(guò)實(shí)際的代碼更好地理解Linux驅(qū)動(dòng)和Android底層技術(shù)?! 榱耸棺x者更好地實(shí)踐本書提供的實(shí)例代碼,在隨書光盤中除了提供源代碼文件外,還提供了一個(gè)VMWare
Ubuntu Linux12.04 LTS的虛擬環(huán)境。讀者可以在Windows、Linux和Mac OS
X上,通過(guò)VMWare打開該虛擬機(jī)文件來(lái)學(xué)習(xí)和測(cè)試本書的例子(虛擬環(huán)境中也帶了一套本書提供的例子代碼)?!  禔ndroid深度探索(卷1):HAL與驅(qū)動(dòng)開發(fā)》適合底層開發(fā)的程序員和編程愛好者使用,也適合作為相關(guān)培訓(xùn)學(xué)校的Android底層開發(fā)培訓(xùn)教材。

作者簡(jiǎn)介

  擁有超過(guò)10年的軟件開發(fā)經(jīng)驗(yàn),曾任某知名企業(yè)項(xiàng)目經(jīng)理,對(duì)Android有深入的研究,是國(guó)內(nèi)第一批Android實(shí)踐者。

書籍目錄

第一篇 Android驅(qū)動(dòng)開發(fā)前的準(zhǔn)備 
第1章 Android系統(tǒng)移植與驅(qū)動(dòng)開發(fā)概述 
1.1 Android系統(tǒng)架構(gòu) 
1.2 Android系統(tǒng)移植的主要工作 
1.3 查看Linux內(nèi)核版本 
1.4 Linux內(nèi)核版本號(hào)的定義規(guī)則 
1.5 如何學(xué)習(xí)Linux驅(qū)動(dòng)開發(fā) 
1.6 Linux設(shè)備驅(qū)動(dòng) 
1.6.1 設(shè)備驅(qū)動(dòng)的發(fā)展和作用 
1.6.2 設(shè)備的分類及特點(diǎn) 
1.7  見識(shí)一下什么叫Linux驅(qū)動(dòng):LED 
1.8 小結(jié) 
第2章 搭建Android開發(fā)環(huán)境 
2.1 Android底層開發(fā)需要哪些工具 
2.2 安裝JDK 
2.3 搭建Android應(yīng)用程序開發(fā)環(huán)境 
2.3.1 安裝Android SDK 
2.3.2 安裝Eclipse 
2.3.3 安裝ADT 
2.3.4 配置ADT 
2.3.5 建立AVD 
2.4 安裝Android NDK開發(fā)環(huán)境 
2.4.1 下載Android NDK 
2.4.2 安裝CDT 
2.4.3 命令行方式編譯Android NDK程序 
2.4.4 導(dǎo)入Android NDK的例子 
2.4.5 配置Android NDK的集成開發(fā)環(huán)境 
2.5 安裝交叉編譯環(huán)境 
2.6 小結(jié) 
第3章 Git使用入門 
3.1 安裝Git 
3.2 查看Git文檔 
3.3 源代碼的提交與獲取 
3.3.1 創(chuàng)建版本庫(kù):git init 
3.3.2 將文件提交到本地版本庫(kù):git commit 
3.3.3 創(chuàng)建本地分支:git branch 
3.3.4 切換本地分支:git checkout 
3.3.5 在GitHub上創(chuàng)建開源項(xiàng)目 
3.3.6 上傳源代碼到GitHub:git push 
3.3.7 從GitHub下載源代碼:git clone 
3.4 小結(jié) 
第4章 源代碼的下載和編譯 
4.1 下載、編譯和測(cè)試Android源代碼 
4.1.1 配置Android源代碼下載環(huán)境 
4.1.2 Android源代碼目錄結(jié)構(gòu)解析 
4.1.3 下載Android源代碼中的一部分 
4.1.4 編譯Android 源代碼 
4.1.5 out目錄結(jié)構(gòu)分析 
4.1.6 將自己的APK作為Android內(nèi)置程序發(fā)布 
4.1.7 用模擬器測(cè)試system.img文件 
4.2 下載和編譯Linux內(nèi)核源代碼 
4.2.1 下載Linux內(nèi)核源代碼 
4.2.2 Linux內(nèi)核源代碼的目錄結(jié)構(gòu) 
4.2.3 安裝Android內(nèi)核的編譯環(huán)境 
4.2.4 配置和編譯Linux內(nèi)核 
4.3 小結(jié) 
第5章 搭建S3C6410開發(fā)板的測(cè)試環(huán)境 
5.1 S3C6410開發(fā)板簡(jiǎn)介 
5.2 安裝串口調(diào)試工具:minicom 
5.3 燒寫Android系統(tǒng) 
5.4 配置有線網(wǎng)絡(luò) 
5.5 小結(jié) 
第二篇 Android底層開發(fā)入門 
第6章 第一個(gè)Linux驅(qū)動(dòng)程序:統(tǒng)計(jì)單詞個(gè)數(shù) 
6.1 Linux驅(qū)動(dòng)到底是個(gè)什么東西 
6.2 編寫Linux驅(qū)動(dòng)程序的步驟 
6.3 第一個(gè)Linux驅(qū)動(dòng):統(tǒng)計(jì)單詞個(gè)數(shù) 
6.3.1 編寫Linux驅(qū)動(dòng)程序前的準(zhǔn)備工作 
6.3.2 編寫Linux驅(qū)動(dòng)程序的骨架(初始化和退出驅(qū)動(dòng)) 
6.3.3 指定與驅(qū)動(dòng)相關(guān)的信息 
6.3.4 注冊(cè)和注銷設(shè)備文件 
6.3.5 指定回調(diào)函數(shù) 
6.3.6 實(shí)現(xiàn)統(tǒng)計(jì)單詞數(shù)的算法 
6.3.7 編譯、安裝、卸載Linux驅(qū)動(dòng)程序 
6.4 使用多種方式測(cè)試Linux驅(qū)動(dòng) 
6.4.1 使用Ubuntu Linux測(cè)試Linux驅(qū)動(dòng) 
6.4.2 在Android模擬器上通過(guò)原生(Native)C程序測(cè)試Linux驅(qū)動(dòng) 
6.4.3 使用Android NDK測(cè)試Linux驅(qū)動(dòng) 
6.4.4 使用Java代碼直接操作設(shè)備文件來(lái)測(cè)試Linux驅(qū)動(dòng) 
6.4.5 使用S3C6410開發(fā)板測(cè)試Linux驅(qū)動(dòng) 
6.4.6 將驅(qū)動(dòng)編譯進(jìn)Linux內(nèi)核進(jìn)行測(cè)試 
6.5 使用Eclipse開發(fā)和測(cè)試Linux驅(qū)動(dòng)程序 
6.5.1 在Eclipse中開發(fā)Linux驅(qū)動(dòng)程序 
6.5.2 在Eclipse中測(cè)試Linux驅(qū)動(dòng) 
6.6 小結(jié) 
第7章 LED將為我閃爍:控制發(fā)光二級(jí)管 
7.1 LED驅(qū)動(dòng)的實(shí)現(xiàn)原理 
7.2 編寫LED驅(qū)動(dòng) 
7.2.1 體驗(yàn)LED驅(qū)動(dòng)的奇妙 
7.2.2 創(chuàng)建LED驅(qū)動(dòng)的設(shè)備文件 
7.2.3 卸載LED驅(qū)動(dòng)的設(shè)備文件 
7.2.4 設(shè)置寄存器與初始化LED驅(qū)動(dòng) 
7.2.5 控制LED 
7.2.6 LED驅(qū)動(dòng)的模塊參數(shù) 
7.2.7 LED驅(qū)動(dòng)的完整代碼 
7.3 測(cè)試LED驅(qū)動(dòng) 
7.3.1 編寫測(cè)試I/O控制命令的通用程序 
7.3.2 使用NDK測(cè)試LED驅(qū)動(dòng) 
7.3.3 使用Java測(cè)試LED驅(qū)動(dòng) 
7.4 LED驅(qū)動(dòng)的移植 
7.5 小結(jié) 
第8章 讓開發(fā)板發(fā)出聲音:蜂鳴器驅(qū)動(dòng) 
8.1 Linux驅(qū)動(dòng)的代碼重用 
8.1.1 編譯是由多個(gè)文件組成的Linux驅(qū)動(dòng) 
8.1.2 Linux驅(qū)動(dòng)模塊的依賴(導(dǎo)出符號(hào)) 
8.2 強(qiáng)行卸載Linux驅(qū)動(dòng) 
8.3 蜂鳴器(PWM)驅(qū)動(dòng) 
8.3.1 蜂鳴器驅(qū)動(dòng)的原理 
8.3.2 實(shí)現(xiàn)蜂鳴器驅(qū)動(dòng) 
8.3.3 測(cè)試蜂鳴器驅(qū)動(dòng) 
8.4 小結(jié) 
第9章 硬件抽象層:HAL 
9.1 為什么要在Android中加入HAL 
9.2 Android HAL架構(gòu) 
9.3 為L(zhǎng)ED驅(qū)動(dòng)增加HAL 
9.3.1 編寫一款支持HAL的Linux驅(qū)動(dòng)程序的步驟 
9.3.2 顛覆Linux驅(qū)動(dòng)的設(shè)計(jì)理念:精簡(jiǎn)LED驅(qū)動(dòng) 
9.3.3 測(cè)試讀寫寄存器操作 
9.3.4 編寫調(diào)用LED驅(qū)動(dòng)的HAL模塊 
9.3.5 編寫調(diào)用HAL模塊的Service 
9.3.6 HAL模塊的存放路徑和命名規(guī)則 
9.3.7 編寫調(diào)用Service的Java庫(kù) 
9.3.8 測(cè)試LED驅(qū)動(dòng) 
9.4 小結(jié) 
第10章 嵌入式Linux的調(diào)試技術(shù) 
10.1 打印內(nèi)核調(diào)試信息:printk 
10.2 防止printk函數(shù)降低Linux 驅(qū)動(dòng)性能 
10.3 通過(guò)虛擬文件系統(tǒng)(/proc)進(jìn)行數(shù)據(jù)交互 
10.4 調(diào)試工具 
10.4.1 用gdb調(diào)試用戶空間程序 
10.4.2 用gdbserver遠(yuǎn)程調(diào)試用戶空間程序 
10.4.3 用kgdb遠(yuǎn)程調(diào)試內(nèi)核程序 
10.5 小結(jié) 
第三篇 Linux驅(qū)動(dòng)開發(fā)高級(jí)技術(shù) 
第11章 Linux驅(qū)動(dòng)程序中的并發(fā)控制 
11.1 并發(fā)和競(jìng)態(tài) 
11.2 原子操作 
11.2.1 整型原子操作 
11.2.2 64位整型原子操作 
11.2.3 位原子操作 
11.2.4 用原子操作阻止設(shè)備文件被多個(gè)進(jìn)程打開 
11.3 自旋鎖(Spin Lock) 
11.3.1 自旋鎖的使用方法 
11.3.2 使用自旋鎖保護(hù)臨界區(qū) 
11.3.3 讀寫自旋鎖 
11.3.4 使用讀寫自旋鎖保護(hù)臨界區(qū) 
11.3.5 順序鎖(seqlock) 
11.3.6 使用順序鎖寫入正在讀取的共享資源 
11.4 讀—復(fù)制—更新(RCU)機(jī)制 
11.4.1 RCU的原理 
11.4.2 RCU API 
11.4.3 RCU的應(yīng)用 
11.5 信號(hào)量(Semaphore) 
11.5.1 信號(hào)量的使用 
11.5.2 信號(hào)量用于同步 
11.5.3 讀寫信號(hào)量 
11.5.4 使用讀寫信號(hào)量保護(hù)臨界區(qū) 
11.6 互斥體(Mutex) 
11.7 完成量(Completion) 
11.8 小結(jié) 
第12章 Linux驅(qū)動(dòng)程序中的阻塞和非阻塞I/O 
12.1 等待隊(duì)列 
12.1.1 等待隊(duì)列原理 
12.1.2 等待隊(duì)列的API 
12.1.3 等待隊(duì)列的使用方法 
12.1.4 支持休眠和喚醒的Linux驅(qū)動(dòng) 
12.2 輪詢操作 
12.2.1 用戶空間的select函數(shù) 
12.2.2 內(nèi)核空間的poll函數(shù) 
12.2.3 以非阻塞的方式訪問(wèn)Linux驅(qū)動(dòng) 
12.3 小結(jié) 
第13章 Linux驅(qū)動(dòng)程序中的異步編程 
13.1 信號(hào)與異步通知 
13.1.1 Linux信號(hào) 
13.1.2 接收Linux信號(hào) 
13.1.3 發(fā)送信號(hào) 
13.2 異步I/O(AIO) 
13.2.1 異步操作的API 
13.2.2 異步讀寫本地文件 
13.2.3 Linux驅(qū)動(dòng)中的異步函數(shù)(aio_read和aio_write) 
13.2.4 接收信號(hào)時(shí)異步讀取數(shù)據(jù) 
13.2.5 AIO中的回調(diào)函數(shù) 
13.3 小結(jié) 
第14章 Linux中斷和底半部 
14.1 什么是中斷 
14.2 中斷處理程序 
14.3 Linux 中斷處理的核心:頂半部和底半部 
14.4 獲取Linux 系統(tǒng)的中斷統(tǒng)計(jì)信息 
14.5 Linux 中斷編程 
14.5.1 注冊(cè)中斷處理程序 
14.5.2 注銷中斷處理程序 
14.5.3 編寫中斷處理函數(shù) 
14.5.4 共享中斷處理程序 
14.5.5 禁止和激活中斷 
14.5.6 禁止和激活中斷線 
14.5.7 獲取中斷系統(tǒng)的狀態(tài) 
14.5.8 與中斷編程相關(guān)的函數(shù)和宏 
14.6 實(shí)例:S3C6410實(shí)時(shí)鐘中斷 
14.7 中斷中下文 
14.8 中斷的實(shí)現(xiàn)原理 
14.9 底半部 
14.9.1 為什么要使用底半部 
14.9.2 實(shí)現(xiàn)底半部的機(jī)制 
14.9.3 軟中斷 
14.9.4 Tasklet 
14.9.5 實(shí)例:Tasklet演示 
14.9.6 軟中斷處理線程(ksoftirqd) 
14.9.7 工作隊(duì)列(work queue) 
14.9.8 與工作隊(duì)列相關(guān)的API 
14.9.9 實(shí)例:工作隊(duì)列演示 
14.10 小結(jié) 
第15章 時(shí)間管理 
15.1 Linux內(nèi)核中的時(shí)間概念 
15.1.1 時(shí)鐘頻率 
15.1.2 提高時(shí)鐘頻率的優(yōu)點(diǎn)和缺點(diǎn) 
15.2 節(jié)拍總數(shù)(jiffies) 
15.2.1 訪問(wèn)jiffies 
15.2.2 jiffies、時(shí)間和時(shí)鐘頻率之間的轉(zhuǎn)換 
15.2.3 jiffies的回繞 
15.2.4 用戶空間和時(shí)鐘頻率 
15.3 實(shí)時(shí)時(shí)鐘和定時(shí)器 
15.4 時(shí)鐘中斷處理程序的實(shí)現(xiàn) 
15.5 讀寫本地時(shí)間 
15.6 內(nèi)核定時(shí)器 
15.6.1 如何使用內(nèi)核定時(shí)器 
15.6.2 實(shí)例:秒表定時(shí)器 
15.7 內(nèi)核延遲 
15.7.1 忙等待 
15.7.2 短延遲 
15.7.3 休眠延遲(schedule_timeout) 
15.8 小結(jié) 
第16章 內(nèi)存管理與I/O訪問(wèn) 
16.1 內(nèi)存管理模式 
16.1.1 內(nèi)存的基本單位:頁(yè)(Page) 
16.1.2 頁(yè)的邏輯劃分:區(qū)(zone) 
16.1.3 獲取頁(yè) 
16.1.4 釋放頁(yè) 
16.2 分配連續(xù)的內(nèi)存空間(Kmalloc) 
16.2.1 gfp_mask標(biāo)志 
16.2.2 釋放內(nèi)存(kfree) 
16.3 分配不連續(xù)的內(nèi)存空間(vmalloc) 
16.4 全局緩存(slab) 
16.4.1 Slab層的實(shí)現(xiàn)原理 
16.4.2 Slab分配器 
16.4.3 示例:從Slab高速緩存中分配和釋放對(duì)象 
16.5 Linux內(nèi)存池 
16.5.1 內(nèi)存池的實(shí)現(xiàn)原理 
16.5.2 示例:從內(nèi)存池獲取對(duì)象 
16.6 虛擬地址與物理地址之間的轉(zhuǎn)換 
16.7 設(shè)備I/O端口與I/O內(nèi)存 
16.7.1 讀寫I/O端口 
16.7.2 讀寫I/O內(nèi)存 
16.7.3 將I/O端口映射為I/O內(nèi)存 
16.7.4 申請(qǐng)和釋放設(shè)備I/O端口和I/O內(nèi)存 
16.7.5 使用設(shè)備I/O端口和I/O內(nèi)存的一般步驟 
16.8 內(nèi)核空間與用戶空間共享數(shù)據(jù) 
16.8.1 內(nèi)存映射與VMA 
16.8.2 示例:用戶程序讀取內(nèi)核空間數(shù)據(jù) 
16.9 I/O內(nèi)存靜態(tài)映射 
16.10 小結(jié) 
第四篇 Linux設(shè)備驅(qū)動(dòng)與Android底層開發(fā) 
第17章 RTC驅(qū)動(dòng) 
17.1 實(shí)時(shí)時(shí)鐘(RTC)結(jié)構(gòu)與移植內(nèi)容 
17.1.1 RTC系統(tǒng)的結(jié)構(gòu) 
17.1.2 RTC驅(qū)動(dòng)主要的移植工作 
17.2 RTC系統(tǒng)中的Android部分 
17.2.1 警報(bào)管理:AlarmManager 
17.2.2 警報(bào)服務(wù):AlarmManagerService 
17.2.3 直接與Alarm驅(qū)動(dòng)交互的JNI代碼 
17.3 Alarm驅(qū)動(dòng)的分析與移植 
17.3.1 Alarm驅(qū)動(dòng)簡(jiǎn)介 
17.3.2 Alarm驅(qū)動(dòng)中的關(guān)鍵數(shù)據(jù)結(jié)構(gòu) 
17.3.3 Alarm驅(qū)動(dòng)的應(yīng)用層接口(alarm_dev.c)代碼分析 
17.3.4 Alarm驅(qū)動(dòng)的通用文件(alarm.c)代碼分析 
17.4 RTC驅(qū)動(dòng)的分析與移植 
17.4.1 實(shí)時(shí)時(shí)鐘(RTC)的特性 
17.4.2 RTC的結(jié)構(gòu) 
17.4.3 RTC芯片的寄存器 
17.4.4 RTC驅(qū)動(dòng)的用戶空間接口 
17.4.5 RTC系統(tǒng)組件之間的調(diào)用關(guān)系 
17.4.6 設(shè)備文件(/dev/rtc0)的I/O命令 
17.4.7 sysfs虛擬文件處理函數(shù) 
17.4.8 proc虛擬文件處理函數(shù) 
17.5 小結(jié) 
第18章 LCD驅(qū)動(dòng) 
18.1 LCD簡(jiǎn)介 
18.1.1 液晶的工作原理 
18.1.2 LCD的種類 
18.1.3 LCD的技術(shù)參數(shù) 
18.1.4 LCD時(shí)序圖 
18.2 LCD驅(qū)動(dòng)結(jié)構(gòu)分析和移植要點(diǎn) 
18.3 幀緩沖(FrameBuffer)驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) 
18.3.1 FrameBuffer設(shè)備 
18.3.2 示例:通過(guò)dd命令與FrameBuffer設(shè)備文件交互 
18.3.3 示例:編寫訪問(wèn)FrameBuffer設(shè)備文件的程序 
18.3.4 FrameBuffer驅(qū)動(dòng)的架構(gòu) 
18.3.5 FrameBuffer驅(qū)動(dòng)主要的數(shù)據(jù)結(jié)構(gòu) 
18.3.6 如何在Linux內(nèi)核中查找指定的內(nèi)容 
18.3.7 FrameBuffer驅(qū)動(dòng)設(shè)備事件的處理(fbmem.c) 
18.3.8 FrameBuffer驅(qū)動(dòng)源代碼分析與移植 
18.4 FrameBuffer驅(qū)動(dòng)的HAL層分析 
18.4.1 Gralloc庫(kù) 
18.4.2 初始化HAL Gralloc的核心結(jié)構(gòu)體 
18.4.3 獲取Gralloc HAL模塊 
18.4.4 與FrameBuffer設(shè)備文件交互 
18.5 調(diào)用Gralloc HAL庫(kù) 
18.6 小結(jié) 
第19章 音頻驅(qū)動(dòng) 
19.1 音頻驅(qū)動(dòng)基礎(chǔ) 
19.1.1 數(shù)字音頻簡(jiǎn)介 
19.1.2 ALSA架構(gòu)簡(jiǎn)介 
19.1.3 ALSA設(shè)備文件 
19.1.4 數(shù)字采樣與數(shù)字錄音 
19.1.5 混音器 
19.1.6 音頻驅(qū)動(dòng)的目錄結(jié)構(gòu) 
19.1.7 音頻設(shè)備硬件接口 
19.1.8 ALSA架構(gòu)支持的聲卡芯片 
19.2 AC97芯片的寄存器 
19.2.1 控制寄存器 
19.2.2 狀態(tài)寄存器 
19.2.3 編解碼器命令寄存器 
19.2.4 編解碼器狀態(tài)寄存器 
19.2.5 PCM輸出/輸入通道FIFO數(shù)據(jù)寄存器 
19.2.6 MIC輸入通道FIFO地址寄存器 
19.2.7 PCM輸出/輸入通道FIFO數(shù)據(jù)寄存器 
19.2.8 MIC輸入通道FIFO數(shù)據(jù)寄存器 
19.3 創(chuàng)建聲卡 
19.3.1 聲卡的頂層數(shù)據(jù)結(jié)構(gòu) 
19.3.2 創(chuàng)建聲卡的步驟 
19.3.3 示例:基于ARM的AC97音頻驅(qū)動(dòng) 
19.4 音頻邏輯設(shè)備 
19.4.1 創(chuàng)建PCM設(shè)備 
19.4.2 創(chuàng)建錄音和播放設(shè)備文件節(jié)點(diǎn) 
19.4.3 創(chuàng)建Control設(shè)備數(shù)據(jù)結(jié)構(gòu) 
19.4.4 創(chuàng)建Control設(shè)備 
19.4.5 注冊(cè)與打開音頻字符設(shè)備 
19.5 嵌入式設(shè)備中的ALSA(ASoC) 
19.5.1 什么是ASoC 
19.5.2 ASoC的硬件架構(gòu) 
19.5.3 ASoC的軟件架構(gòu) 
19.5.4 如何確定S3C開發(fā)板使用了哪個(gè)音頻驅(qū)動(dòng) 
19.5.5 ASoC架構(gòu)中的Machine 
19.5.6 ASoC架構(gòu)中的Codec 
19.5.7 ASoC架構(gòu)中的Platform 
19.6 音頻驅(qū)動(dòng)的HAL分析 
19.6.1 實(shí)現(xiàn)HAL Library 
19.6.2 調(diào)用HAL Library 
19.7 小結(jié) 
第20章 Linux塊設(shè)備驅(qū)動(dòng) 
20.1 塊設(shè)備簡(jiǎn)介 
20.2 塊設(shè)備的體系架構(gòu) 
20.3 塊設(shè)備的數(shù)據(jù)結(jié)構(gòu)與相關(guān)操作 
20.3.1 磁盤設(shè)備(gendisk結(jié)構(gòu)體) 
20.3.2 block_device_operations結(jié)構(gòu)體 
20.3.3 I/O請(qǐng)求(request結(jié)構(gòu)體) 
20.3.4 請(qǐng)求隊(duì)列(request_queue結(jié)構(gòu)體) 
20.3.5 塊I/O(bio結(jié)構(gòu)體) 
20.4 塊設(shè)備的加載和卸載 
20.5 塊設(shè)備的打開和釋放 
20.6 塊設(shè)備的ioctl函數(shù) 
20.7 塊設(shè)備驅(qū)動(dòng)的I/O請(qǐng)求處理 
20.7.1 依賴請(qǐng)求隊(duì)列 
20.7.2 不依賴請(qǐng)求隊(duì)列 
20.8 實(shí)例1:依賴請(qǐng)求隊(duì)列的RamDisk 
20.9 在嵌入式設(shè)備上測(cè)試塊設(shè)備驅(qū)動(dòng) 
20.9.1 編譯、配置和安裝Busybox 
20.9.2 測(cè)試塊設(shè)備驅(qū)動(dòng) 
20.10 實(shí)例2:不依賴請(qǐng)求隊(duì)列的RamDisk 
20.11 扇區(qū)與磁盤碎片整理 
20.12 小結(jié) 
第21章 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng) 
21.1 Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)的結(jié)構(gòu) 
21.1.1 網(wǎng)絡(luò)協(xié)議接口層 
21.1.2 網(wǎng)絡(luò)設(shè)備接口層 
21.1.3 設(shè)備驅(qū)動(dòng)功能層 
21.1.4 網(wǎng)絡(luò)設(shè)備與媒介層 
21.2 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) 
21.2.1 網(wǎng)絡(luò)設(shè)備的注冊(cè)與注銷 
21.2.2 網(wǎng)絡(luò)設(shè)備的初始化 
21.2.3 網(wǎng)絡(luò)設(shè)備的打開與釋放 
21.2.4 發(fā)送數(shù)據(jù) 
21.2.5 接收數(shù)據(jù) 
21.2.6 網(wǎng)絡(luò)連接狀態(tài) 
21.3 示例:DM9000網(wǎng)卡設(shè)備驅(qū)動(dòng) 
21.3.1 如何確定S3C6410開發(fā)板使用的網(wǎng)絡(luò)設(shè)備 
21.3.2 DM9000網(wǎng)卡硬件描述 
21.3.3 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)的定義與安裝 
21.3.4 初始化DM9000網(wǎng)卡設(shè)備驅(qū)動(dòng) 
21.3.5 移出網(wǎng)絡(luò)設(shè)備 
21.3.6 打開和停止DM9000網(wǎng)卡 
21.3.7 發(fā)送數(shù)據(jù) 
21.3.8 接收數(shù)據(jù) 
21.3.9 設(shè)置廣播地址 
21.4 小結(jié) 
第22章 USB驅(qū)動(dòng) 
22.1 USB設(shè)備簡(jiǎn)介 
22.2 USB驅(qū)動(dòng)與USB核心之間的交互 
22.2.1 端點(diǎn)(Endpoint) 
22.2.2 接口(Interfaces) 
22.2.3 配置(Config) 
22.3 USB設(shè)備的核心數(shù)據(jù)結(jié)構(gòu) 
22.3.1 USB設(shè)備:usb_device結(jié)構(gòu)體 
22.3.2 USB驅(qū)動(dòng):usb_driver結(jié)構(gòu)體 
22.3.3 識(shí)別USB設(shè)備:usb_device_id結(jié)構(gòu)體 
22.3.4 USB端點(diǎn):usb_host_endpoint結(jié)構(gòu)體 
22.3.5 USB接口:usb_interface結(jié)構(gòu)體 
22.3.6 USB配置:usb_host_config結(jié)構(gòu)體 
22.4 描述符數(shù)據(jù)結(jié)構(gòu) 
22.4.1 設(shè)備描述符 
22.4.2 配置描述符 
22.4.3 接口描述符 
22.4.4 端點(diǎn)描述符 
22.4.5 字符串描述符 
22.4.6 查看描述符信息 
22.5 USB和sysfs 
22.6 URB(USB請(qǐng)求塊) 
22.6.1 URB結(jié)構(gòu)體 
22.6.2 URB的處理流程 
22.6.3 簡(jiǎn)單的批量與控制URB 
22.7 USB驅(qū)動(dòng)程序的結(jié)構(gòu) 
22.8 鼠標(biāo)驅(qū)動(dòng)分析 
22.9 小結(jié)

章節(jié)摘錄

版權(quán)頁(yè):   插圖:   那么液晶為什么會(huì)顯示字符、圖像呢?原來(lái)這種液態(tài)光電顯示材料,利用液晶的電光效應(yīng)把電信號(hào)轉(zhuǎn)換成字符、圖像等可見信號(hào)。液晶在正常隋況下,其分子排列很有秩序,顯得清澈透明,一旦加上直流電場(chǎng)后,分子的排列被打亂,一部分液晶變得不透明,顏色加深,因而能顯示字符和圖像。 液晶的電光效應(yīng)是指它的干涉、散射、衍射、旋光、吸收等受電場(chǎng)調(diào)制的光學(xué)現(xiàn)象。一些有機(jī)化合物和高分子聚合物,在一定溫度或濃度的溶液中,既具有液體的流動(dòng)性,又具有晶體的各向異性,這就是液晶。液晶光電效應(yīng)受溫度條件控制的液晶稱為熱致液晶;溶致液晶則受控于濃度條件。顯示用液晶一般是低分子熱致液晶。 根據(jù)液晶會(huì)變色的特點(diǎn),人們利用它來(lái)指示溫度、報(bào)警毒氣等。例如,液晶能隨著溫度的變化,使顏色從紅變綠、藍(lán)。這樣可以指示出某個(gè)實(shí)驗(yàn)中的溫度。液晶遇上氯化氫、氫氰酸之類的有毒氣體,也會(huì)變色。在化工廠,人們把液晶片掛在墻上,一旦有微量毒氣逸出,液晶變色了,就提醒人們趕緊去檢查、補(bǔ)漏。 液晶的工作原理如圖18—1所示。從背景燈射出的光線穿過(guò)液晶體后(可能只有部分光線穿過(guò)),再由濾光器處理色彩像素。 18.1.2 LCD的種類 LCD是LiquidCrystalDisplay的簡(jiǎn)稱,目前被廣泛應(yīng)用在手機(jī)等低耗電的計(jì)算設(shè)備中。手機(jī)的彩色屏幕因?yàn)長(zhǎng)CD品質(zhì)和研發(fā)技術(shù)不同而有所差異,其種類大致有STN、UFB、TFD、TFT和OLED幾種。一般來(lái)說(shuō)能顯示的顏色越多越能顯示復(fù)雜的圖像,畫面的層次也更豐富。 STN是SuperTwistedNematic的縮寫,是我們接觸得最多的LCD了,因?yàn)槲覀冞^(guò)去使用的灰階手機(jī)的屏幕都是STN的(即FSTN)。和TFT相比STN型液晶屬于被動(dòng)矩陣式LCD器件,它的好處是功耗小,具有省電的最大優(yōu)勢(shì)。 彩色STN的顯示原理是在傳統(tǒng)單色STN液晶顯示器上加一層彩色濾光片,并將單色顯示矩陣中的每一像素分成三個(gè)子像素,分別通過(guò)彩色濾光片顯示紅、綠、藍(lán)三原色,就可顯示出彩色畫面。與TFT不同,STN屬于被動(dòng)矩陣式LCD,一般最高能顯示65536種色彩,色澤不是特別好,亮度不高,所以一般在陽(yáng)光強(qiáng)的地方,圖像看起來(lái)比較費(fèi)勁。由于價(jià)格低廉,是眾多中底端彩屏手機(jī)的選擇,少量高端機(jī)型也采用STN。 撇開灰階STN不提,現(xiàn)在STN主要有CSTN和DSTN之分。 CSTN即Color STN,一般采用傳送式(transmissive)照明方式,傳送式屏幕要使用外加光源照明,稱為背光(backlight),照明光源要安裝在LCD的背后。傳送式LCD在正常光線及暗光線下,顯示效果都很好;但在戶外,尤其在日光下,很難辨清顯示內(nèi)容;而背光需要電源產(chǎn)生照明光線,要消耗電功率。 DSTN(double—layer super—twisted nematic)即雙層STN,過(guò)去主要應(yīng)用在一些筆記本電腦上。也是一種無(wú)源顯示技術(shù),使用兩個(gè)顯示層,這種顯示技術(shù)解決了傳統(tǒng)STN顯示器中的漂移問(wèn)題,而且由于DSTN還采用了雙掃描技術(shù),因而顯示效果較STN有大幅度的提高。由于DSTN分上下兩屏同時(shí)掃描,所以在使用中有可能在顯示屏中央出現(xiàn)一條亮線。

媒體關(guān)注與評(píng)論

一直想找一個(gè)在三種平臺(tái)上開發(fā)的書(Ubuntu Linux、Android模擬器和開發(fā)板),本書正好符合我的需求,翻看了一下,作者對(duì)Android底層和驅(qū)動(dòng)層的介紹十分詳細(xì),配圖和代碼片段都是選取的很典型很有特點(diǎn)的,說(shuō)明作者具有很強(qiáng)的理論基礎(chǔ)和實(shí)戰(zhàn)能力,是本不錯(cuò)的驅(qū)動(dòng)開發(fā)工具書,總體來(lái)說(shuō),物有所值~~贊一個(gè)!

編輯推薦

3大真實(shí)的實(shí)驗(yàn)環(huán)境:Ubuntu Linux12.04 LTS、Android模擬器和S3C6410開發(fā)板。必知必會(huì)的驅(qū)動(dòng)開發(fā)技術(shù),包括并發(fā)控制、阻塞和非阻塞I/O、異步編程、Linux中斷和底半部、時(shí)間管理、內(nèi)存管理和I/O訪問(wèn)等。6大核心Linux驅(qū)動(dòng)代碼分析與實(shí)戰(zhàn):RTC驅(qū)動(dòng)、LCD驅(qū)動(dòng)、音頻驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)和USB驅(qū)動(dòng)

圖書封面

圖書標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Android深度探索(卷1) PDF格式下載


用戶評(píng)論 (總計(jì)47條)

 
 

  •   很不錯(cuò)的驅(qū)動(dòng)入門書籍。從零開始講解,深入淺出,推薦
  •   深入理解android,希望講的深入淺出
  •   書很不錯(cuò),但是要結(jié)合開發(fā)板一起學(xué)習(xí)才更好
  •   書的內(nèi)容不錯(cuò), 值得學(xué)習(xí), 有的章節(jié)還要買開發(fā)板啊, 又是銀子啊1,整體滿意, 新書有點(diǎn)油墨味,
  •   有趣的書,值得玩玩。前提是盡快獲得開發(fā)板
  •   內(nèi)容比較全,開發(fā)各方面都有所講解,還給張光盤,比較值。
  •   比較適合現(xiàn)在的潮流,但是內(nèi)容挺深的,正在學(xué)習(xí)
  •   安卓的第一本書
  •   寫的非常好,思路清晰,具體,很實(shí)用
  •   全面深入,關(guān)鍵是操作性也很強(qiáng),是一本難得的好書。
  •   非常有幫助,但后幾章作用不大。
  •   從此書的標(biāo)題與厚度來(lái)看,今夜又要不眠了
  •   才開始看。。。書的質(zhì)量還可以,貌似才印刷出來(lái)不多久,用手一摸有油印。。。
  •   好書?。?!不錯(cuò)不錯(cuò)?。?!值得一讀!
  •   內(nèi)容不錯(cuò),就是講linux的時(shí)候太多,應(yīng)該側(cè)重android就好了!
  •   這本書和實(shí)際結(jié)合比較好,適合工作時(shí)參考用
  •   剛好有個(gè)OK6410的板就買了。內(nèi)容初看還不錯(cuò),還沒(méi)有細(xì)看。不過(guò)光盤是壞的,怎么都讀不了。讓人很不爽。
  •   還好,就是有些小錯(cuò)誤
  •   就是光盤質(zhì)量太次
  •   感覺書不是很新,蠻舊的感覺。
  •   剛買來(lái),還沒(méi)仔細(xì)看
  •   幫助比較大,但是有些細(xì)的地方講的不夠
  •   適合有驅(qū)動(dòng)經(jīng)驗(yàn)的人
  •   書還行,幫助入門??墒枪獗P中文件不能讀換了一次,第二次也很快送來(lái)居然還是壞的,里面的文件打不開,不能復(fù)制。等待當(dāng)當(dāng)客服處理。
  •   試著看看吧。
  •   書的內(nèi)容還不錯(cuò), 還是比較有幫助的.但是:買的新書, 紙張居然像被水浸濕過(guò), 皺的很.
  •   所有B2C中,當(dāng)當(dāng)是我見過(guò)送貨最慢的,同城送了四天!實(shí)在佩服
  •   物流很差,實(shí)在是沒(méi)心情在當(dāng)當(dāng)網(wǎng)上買東西。
  •   此書介紹的HAL層比較詳細(xì),通過(guò)對(duì)比突出HAL層的特點(diǎn)以及編寫模式。
  •   像這樣用6410講android driver的書還是頭一本。作者很用心的說(shuō)明方法和注意點(diǎn)。期待卷二。
  •   此書適合搞驅(qū)動(dòng)的人看,如果沒(méi)有接觸過(guò)驅(qū)動(dòng)程序,請(qǐng)先了解一下驅(qū)動(dòng)的開發(fā),再來(lái)看此書,會(huì)有一定收獲,希望卷2快出來(lái)。
  •   本書講得一般,適合入門。
  •   前面有20頁(yè)左右是被穿洞的,估計(jì)之前已被裝訂過(guò)...書還是不錯(cuò)的......
  •   很好學(xué)習(xí)ANDRIOD好書
  •   不錯(cuò)的一本書,值得購(gòu)買~
  •   大致看了下 感覺還行吧
  •   感覺內(nèi)容有些太多片面,而且有些內(nèi)容在原則上來(lái)講是不夠全面
  •   拿到手里面之后翻了翻,書的質(zhì)量很差感覺像盜版,完全對(duì)不起這個(gè)價(jià)格。有些地方都沒(méi)有印刷好。
  •   還不錯(cuò),對(duì)實(shí)際使用有幫助
  •   感覺內(nèi)容很好~~~~~~能看懂~~~
  •   這本跟Android沒(méi)多大關(guān)系,除了前面幾章與Android相關(guān),后面的都是Linux常見的驅(qū)動(dòng)了.
  •   1):HAL與驅(qū)動(dòng)開發(fā)(附DVD光盤1張
  •   android探索
  •   質(zhì)量不錯(cuò),內(nèi)容是我需要的東西
  •   動(dòng)開發(fā)(附DVD光盤1張)
  •   東西很不錯(cuò),物美價(jià)廉,很好
  •   書本裝訂及印刷質(zhì)量及價(jià)格
 

250萬(wàn)本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7