linux內核epub,Android底層開發技術實戰詳解——內核、移植和驅動(第2版)[EPUB][MOBI][AZW3][42.33MB]...

內容簡介

本書從底層原理開始講起,結合真實的案例向讀者詳細介紹了Android內核、移植和驅動開發的整個流程。全書分為21章,依次講解驅動移植的必要性, Goldfish、OMAP內核和驅動解析,顯示系統、輸入系統、振動器系統、音頻系統、視頻輸出系統的驅動,OpenMax多媒體和多媒體插件框架,傳感器,照相機,Wi-Fi,藍牙和GPS,USB Gadget驅動,Lights光系統和Battery電池系統等。在每一章中,重點介紹了與Android驅動開發相關的底層知識,并對Android源碼進行了剖析。

目錄

第1章 Android底層開發基礎

1.1 什么是驅動

1.1.1 驅動程序的魅力

1.1.2 手機中的驅動程序

1.2 開源還是不開源的問題

1.2.1 霧里看花的開源

1.2.2 從為什么選擇Java談為什么不開源驅動程序

1.2.3 對驅動開發者來說是一把雙刃劍

1.3 Android和Linux

1.3.1 Linux簡介

1.3.2 Android和Linux的關系

1.4 簡析Linux內核

1.4.1 內核的體系結構

1.4.2 和Android密切相關的Linux內核知識

1.5 分析Linux內核源代碼很有必要

1.5.1 源代碼目錄結構

1.5.2 Linux 3.10的特性

1.5.3 瀏覽源代碼的工具

1.5.4 為什么用匯編語言編寫內核代碼

1.5.5 Linux內核的顯著特性

1.5.6 學習Linux內核的方法

第2章 分析Android源代碼

2.1 搭建Linux開發環境和工具

2.1.1 搭建Linux開發環境

2.1.2 設置環境變量

2.1.3 安裝編譯工具

2.2 獲取Android源代碼

2.3 分析并編譯Android源代碼

2.3.1 Android源代碼的結構

2.3.2 編譯Android源代碼

2.3.3 運行Android源代碼

2.3.4 實踐演練――演示編譯Android程序的兩種方法

2.4 編譯Android Kernel

2.4.1 獲取Goldfish內核代碼

2.4.2 獲取MSM內核代碼

2.4.3 獲取OMAP內核代碼

2.4.4 編譯Android的Linux內核

2.5 運行模擬器

2.5.1 Linux環境下運行模擬器的方法

2.5.2 模擬器輔助工具――adb

第3章 驅動需要移植

3.1 驅動開發需要做的工作

3.2 Android移植

3.2.1 移植的任務

3.2.2 移植的內容

3.2.3 驅動開發的任務

3.3 Android對Linux的改造

3.3.1 Android對Linux內核文件的改動

3.3.2 為Android構建Linux的操作系統

3.4 內核空間和用戶空間接口是一個媒介

3.4.1 內核空間和用戶空間的相互作用

3.4.2 系統和硬件之間的交互

3.4.3 使用Relay實現內核到用戶空間的數據傳輸

3.5 三類驅動程序

3.5.1 字符設備驅動程序

3.5.2 塊設備驅動程序

3.5.3 網絡設備驅動程序

第4章 HAL層深入分析

4.1 認識HAL層

4.1.1 HAL層的發展

4.1.2 過去和現在的區別

4.2 分析HAL層源代碼

4.2.1 分析HAL moudle

4.2.2 分析mokoid工程

4.3 總結HAL層的使用方法

4.4 傳感器在HAL層的表現

4.4.1 HAL層的Sensor代碼

4.4.2 總結Sensor編程的流程

4.4.3 分析Sensor源代碼看Android API與硬件平臺的銜接

4.5 移植總結

4.5.1 移植各個Android部件的方式

4.5.2 移植技巧之一――不得不說的輔助工作

4.6 開發一個硬件驅動程序

4.6.1 源代碼文件wuming.h和

wuming.c

4.6.2 編譯配置處理

4.6.3 修改配置文件

4.6.4 驗證驅動程序

第5章 分析Goldfish內核系統

5.1 Android專有驅動介紹

5.2 Goldfish基礎

5.3 Android專用驅動簡介

5.3.1 Logger驅動介紹

5.3.2 Low Memory Killer組件介紹

5.3.3 Timed Output驅動介紹

5.3.4 Timed Gpio驅動介紹

5.3.5 Ram Console驅動介紹

5.4 Ashmem驅動介紹

5.5 Pmem驅動介紹

5.6 Alarm驅動程序

5.7 USB Gadget驅動程序

5.8 Paranoid驅動介紹

5.9 Goldfish的設備驅動

第6章 MSM內核和驅動解析

6.1 MSM基礎

6.1.1 常見MSM處理器產品

6.1.2 Snapdragon內核介紹

6.2 移植MSM內核簡介

6.3 移植MSM

6.3.1 Makefile文件

6.3.2 驅動和組件

6.3.3 設備驅動

6.3.4 高通特有的組件

第7章 OMAP內核和驅動解析

7.1 OMAP基礎

7.1.1 OMAP簡析

7.1.2 常見OMAP處理器產品

7.1.3 開發平臺

7.2 OMAP內核

7.3 移植OMAP體系結構

7.3.1 移植OMAP平臺

7.3.2 移植OMAP處理器

7.4 移植Android專用驅動和組件

7.5 OMAP的設備驅動

7.5.1 顯示驅動程序

7.5.2 I2C總線驅動程序

7.5.3 攝像頭和視頻輸出驅動程序

7.5.4 觸摸屏和鍵盤驅動程序

7.5.5 實時時鐘驅動程序

7.5.6 音頻驅動程序

7.5.7 藍牙驅動程序

第8章 顯示系統驅動應用

8.1 顯示系統介紹

8.2 分析內核層

8.2.1 分析接口文件fb.h

8.2.2 分析內核實現文件fbmem.c

8.3 分析硬件抽象層

8.3.1 分析頭文件

8.3.2 分析硬件幀緩沖區

8.3.3 實現緩沖區的分配

8.3.4 顯示緩沖映射

8.3.5 分析管理庫文件LayerBuffer.cpp

8.4 分析顯示系統的驅動程序

8.4.1 Goldfish中的FrameBuffer驅動程序

8.4.2 使用Gralloc模塊的驅動程序

8.4.3 分析MSM高通處理器中的顯示驅動實現

8.4.4 分析OMAP處理器中的顯示驅動實現

第9章 輸入系統驅動應用

9.1 輸入系統介紹

9.1.1 Android輸入系統結構元素介紹

9.1.2 移植Android輸入系統時的工作

9.2 分析Input(輸入)系統驅動

9.2.1 分析頭文件

9.2.2 分析核心文件input.c

9.2.3 分析event機制

9.3 分析硬件抽象層

9.3.1 分析文件KeycodeLabels.h

9.3.2 分析文件KeyCharacterMap.h

9.3.3 分析Kl格式文件

9.3.4 分析kcm格式文件

9.3.5 分析文件EventHub.cpp

第10章 振動器系統驅動

10.1 振動器系統結構

10.2 分析硬件抽象層

10.3 分析JNI層部分

10.4 分析Java層部分

10.5 實現移植工作

10.5.1 移植振動器驅動程序

10.5.2 實現硬件抽象層

10.6 在MSM平臺實現振動器驅動

第11章 音頻系統驅動

11.1 音頻系統結構

11.2 分析音頻系統的層次

11.2.1 層次說明

11.2.2 Media庫中的Audio框架

11.2.3 本地代碼

11.2.4 分析JNI代碼

11.2.5 Java層代碼簡介

11.3 移植Audio系統的工作

11.3.1 我們的工作

11.3.2 分析硬件抽象層

11.3.3 分析AudioFlinger中的Audio

硬件抽象層的實現

11.3.4 真正實現Audio硬件抽象層

11.4 在MSM平臺實現Audio驅動系統

11.4.1 實現Audio驅動程序

11.4.2 實現硬件抽象層

第12章 視頻輸出系統驅動

12.1 視頻輸出系統結構

12.2 需要移植的部分

12.3 分析硬件抽象層

12.3.1 Overlay系統硬件抽象層的接口

12.3.2 實現Overlay系統的硬件抽象層

12.3.3 實現接口

12.4 實現Overlay硬件抽象層

12.5 在OMAP平臺實現Overlay系統

12.5.1 實現輸出視頻驅動程序

12.5.2 實現Overlay硬件抽象層

12.6 系統層調用Overlay HAL的架構

12.6.1 調用Overlay HAL的架構的

流程

12.6.2 S3C6410 Android Overlay的測試代碼

第13章 OpenMax多媒體框架

13.1 OpenMax基本層次結構

13.2 分析OpenMax框架構成

13.2.1 OpenMax總體層次結構

13.2.2 OpenMax IL層的結構

13.2.3 Android中的OpenMax

13.3 實現OpenMax IL層接口

13.3.1 OpenMax IL層的接口

13.3.2 在OpenMax IL層中需要做什么

13.3.3 研究Android中的OpenMax適配層

13.4 在OMAP平臺實現OpenMax IL

13.4.1 實現文件

13.4.2 分析TI OpenMax IL的核心

13.4.3 實現TI OpenMax IL組件實例

第14章 多媒體插件框架

14.1 Android多媒體插件

14.2 需要移植的內容

14.3 OpenCore引擎

14.3.1 OpenCore層次結構

14.3.2 OpenCore代碼結構

14.3.3 OpenCore編譯結構

14.3.4 OpenCore OSCL

14.3.5 實現OpenCore中的OpenMax部分

14.3.6 OpenCore的擴展

14.4 Stagefright引擎

14.4.1 Stagefright代碼結構

14.4.2 Stagefright實現OpenMax接口

14.4.3 Video Buffer傳輸流程

第15章 傳感器系統

15.1 傳感器系統的結構

15.2 分析需要移植的內容

15.2.1 移植驅動程序

15.2.2 移植硬件抽象層

15.2.3 實現上層部分

15.3 在模擬器中實現傳感器驅動

第16章 照相機系統

16.1 Camera系統的結構

16.2 分析需要移植的內容

16.3 移植和調試

16.3.1 V4L2驅動程序

16.3.2 硬件抽象層

16.4 實現Camera系統的硬件抽象層

16.4.1 Java程序部分

16.4.2 Camera的Java本地調用部分

16.4.3 Camera的本地庫libui.so

16.4.4 Camera服務libcameraservice.so

16.5 在MSM平臺實現Camera驅動系統

16.6 在OMAP平臺實現Camera驅動系統

第17章 Wi-Fi系統、藍牙系統和GPS系統

17.1 Wi-Fi系統

17.1.1 Wi-Fi系統的結構

17.1.2 需要移植的內容

17.1.3 移植和調試

17.1.4 OMAP平臺實現Wi-Fi

17.1.5 配置Wi-Fi的流程

17.1.6 具體演練――在Android下實現Ethernet

17.2 藍牙系統

17.2.1 藍牙系統的結構

17.2.2 需要移植的內容

17.2.3 具體移植

17.2.4 MSM平臺的藍牙驅動

17.3 定位系統

17.3.1 定位系統的結構

17.3.2 分析需要移植的內容

17.3.3 分析驅動程序

17.3.4 分析硬件抽象層

17.3.5 分析上層應用部分

第18章 電話系統

18.1 電話系統基礎

18.1.1 電話系統簡介

18.1.2 電話系統結構

18.2 需要移植的內容

18.3 移植和調試

18.3.1 驅動程序

18.3.2 RIL接口

18.4 電話系統實現流程分析

18.4.1 初始啟動流程

18.4.2 request流程

18.4.3 response流程

第19章 分析時鐘系統驅動

19.1 Alarm系統基礎

19.1.1 Alarm層次結構介紹

19.1.2 我們需要移植的內容

19.2 分析RTC驅動程序

19.3 分析Alarm驅動程序

19.3.1 分析文件android_alarm.h

19.3.2 分析文件alarm.c

19.3.3 分析文件alarm-dev.c

19.4 分析JNI層

19.5 分析Java層

19.5.1 分析AlarmManagerService類

19.5.2 分析AlarmManager類

19.6 模擬器環境的具體實現

第20章 分析USB Gadget驅動

20.1 分析Linux內核的USB驅動程序

20.1.1 USB設備基礎

20.1.2 分析USB 和sysfs的聯系

20.1.3 分析urb通信方式

20.1.4 分析USB驅動的例程

20.2 分析USB Gadget驅動

20.2.1 分析軟件結構

20.2.2 層次整合

20.2.3 USB設備枚舉

第21章 其他系統

21.1 Lights光系統

21.1.1 Lights光系統的結構

21.1.2 需要移植的內容

21.1.3 移植和調試

21.1.4 MSM平臺實現光系統

21.2 Battery電池系統

21.2.1 Battery系統的結構

21.2.2 需要移植的內容

21.2.3 移植和調試

21.2.4 在模擬器中實現電池系統

文檔截圖

ddfb5a72270b65c6c612ac01b22e5e3a.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393833.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393833.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習崗位太少_太多的東西要學習,很少的時間

機器學習崗位太少by Rick West由里克韋斯特(Rick West) 太多的東西要學習,很少的時間 (So much to learn, so little time) 我學習,保持動力并實現目標的主要技巧 (My top tips for learning, staying motivated, and achieving your goals) One of the…

用9種辦法解決 JS 閉包經典面試題之 for 循環取 i

2017-01-06Tomson JavaScript轉自 https://segmentfault.com/a/1190000003818163 閉包 1.正確的說,應該是指一個閉包域,每當聲明了一個函數,它就產生了一個閉包域(可以解釋為每個函數都有自己的函數棧),每個閉包域(Function 對象)都有一個 function scope(不是屬性),function s…

bzoj 2296: 【POJ Challenge】隨機種子

Time Limit: 1 Sec Memory Limit: 128 MBSec Special JudgeDescription1tthinking除了隨機算法,其他什么都不會。但是他還是可以ac很多題目,他用的是什么呢?他會選擇一個好的隨機種子,然后輸出答案。往往他選擇的一個好的種子可…

英特爾第十代處理器為什么不支持win7_5GHz動力澎湃 高主頻多核處理器成就巔峰玩家...

頻率之爭永遠是處理器領域無法回避的話題。高主頻在游戲中所帶來的高速運行,穩定幀數等特性永遠是玩家們所追求的目標。隨著英特爾第十代桌面及移動版酷睿處理器的發布,無論是臺式整機或是筆記本平臺,都已全面進入了5GHz時代。選擇英特爾處理…

leetcode46. 全排列(回溯)

給定一個 沒有重復 數字的序列&#xff0c;返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 代碼 class Solution {List<List<Integer>> cListnew ArrayList<>();public List<List<…

初級算法-12.反轉字符串

題目描述: 編寫一個函數&#xff0c;其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 char[] 的形式給出。 不要給另外的數組分配額外的空間&#xff0c;你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。 你可以假設數組中的所有字符都是 ASCII 碼表中的可打…

linux python源碼目錄結構,TensorFlow0.8源碼閱讀 -- 代碼目錄結構講解

TensorFlow0.8發布以來受到了大量機器學習領域愛好者的關注&#xff0c;目前其項目在github上的follow人數在同類項目中排名第一。作為google的第一個開源項目&#xff0c;TensorFlow的源碼結構較為清晰&#xff0c;相關的代碼注釋覆蓋較全。本文首先從代碼結構入手&#xff0c…

在VirtualBox里復制VDI文件[轉]

原文地址:http://blog.sina.com.cn/s/blog_591a2c940100aree.html 在VirtualBox的快速修復界面里&#xff0c;可以隨時生成當前狀態的備份。當生成了備份之后&#xff0c;會在Snapshots目錄下創建一個新的VDI文件&#xff0c;之后對當前狀態所做的一切操作都將針對最新的VDI文件…

軟件開發重要性_在軟件開發中考慮時間的重要性

軟件開發重要性by Crunch Tech通過Crunch Tech 在軟件開發中考慮時間的重要性 (The importance of time to think in Software Development) Modern Technology teams operate in a fast-paced environment. With a Technology team of only 35 people, we average over 50 re…

自動登錄360,百度

方便登錄&#xff0c;寫的小工具 1 import win.ui;2 import web.ui;3 /*DSG{{*/4 var winform ..win.form(text"AAuto Form";right599;bottom399)5 winform.add(6 button{cls"button";text"百度";left41;top25;right163;bottom59;z1};7 button2…

arm linux 開機電路_【技術角度看問題之一】ARM到底是個啥?

【小宅按】近期公司推出來基于ARM芯片的服務器&#xff0c;本文就一些基本概念&#xff0c;比如ARM&#xff0c; ARM64, ARMv8, ARM7&#xff0c;ARMv7, 64位等讓人費解的概念進行了粗淺地分析&#xff0c;涉及的關鍵字已用粗體標出。文中觀點僅僅是一家之言&#xff0c;拙劣之…

leetcode77. 組合(回溯)

給定兩個整數 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 個數的組合。 示例: 輸入: n 4, k 2 輸出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 代碼 class Solution {List<List<Integer>> cListnew ArrayList<>();public List<List<I…

linux系統配置腳本,Linux系統配置腳本開機自啟

在日常使用過程中&#xff0c;當有時候需要運行開機自啟腳本&#xff0c;同時想看到輸出結果的時候&#xff0c;不免就需要將系統配置為免密登錄模式&#xff0c;本文主要介紹再init3模式(多用戶命令行界面)&#xff0c;運行開機自啟腳本及輸出腳本指令運行數據結果。本文使用的…

WPF多線程UI更新

前言 在WPF中&#xff0c;在使用多線程在后臺進行計算限制的異步操作的時候&#xff0c;如果在后臺線程中對UI進行了修改&#xff0c;則會出現一個錯誤&#xff1a;&#xff08;調用線程無法訪問此對象&#xff0c;因為另一個線程擁有該對象。&#xff09;這是很常見的一個錯誤…

iOS------App之間傳遞數據的幾種方式

UIDocumentInteractionController UIActivityViewController Shared Keychain Access Custom URL Scheme Web Service iCloud API UIPasteboard 參考 http://enharmonichq.com/sharing-data-locally-between-ios-apps/http://stackoverflow.com/questions/9425706/share-data-b…

了解如何使用Vue.js CLI

Interested in learning Vue.js? Get my ebook at vuehandbook.com有興趣學習Vue.js嗎&#xff1f; 在vuehandbook.com上獲取我的電子書 One of them is the Vue Command Line Interface (CLI).其中之一是Vue命令行界面(CLI)。 Note: There is a huge rework of the CLI goin…

rabbitmq學習——隊列

public class Send { public static final String routingKey "wuqidi_task_durable"; /*工作隊列 也叫任務隊列 目的是將任務發送到隊列中 由工作者進行處理 在后臺的多個工作者中 任務是共享的*/ public static void main(String[] args) throws Exception{ Conne…

python 戰艦_簡單Python戰艦

我最近開始學習python&#xff0c;并決定嘗試制作我的第一個項目。我正在嘗試做一個戰艦游戲&#xff0c;隨機放置兩個3塊長的船在一塊板上。但效果不太好。我為2號飛船做了一個臨時的循環&#xff0c;它應該檢查一下旁邊的兩個空間是否空閑&#xff0c;然后在那里建立自己的空…

leetcode面試題 08.12. 八皇后(回溯)

設計一種算法&#xff0c;打印 N 皇后在 N N 棋盤上的各種擺法&#xff0c;其中每個皇后都不同行、不同列&#xff0c;也不在對角線上。這里的“對角線”指的是所有的對角線&#xff0c;不只是平分整個棋盤的那兩條對角線。 注意&#xff1a;本題相對原題做了擴展 示例: 輸…

linux 進入redis 數據庫,Linux下Redis數據庫的安裝方法與自動啟動腳本分享

安裝Redis(1) 下載Rediswget http://redis.googlecode.com/files/redis-2.2.11.tar.gztar xzvf redis-2.2.11.tar.gz(2) 編譯并安裝Redismake && make install(3) 復制并修改配置文件cp redis.conf /etc/redis.confvi /etc/redis.conf注意修改以下幾項&#xff1a;daem…