舉報

會員
Android底層接口與驅動開發技術詳解
陳強 著
更新時間:2019-10-12 15:40:45
開會員,本書免費讀 >
最新章節:
讀者意見反饋表
Android系統從誕生到現在短短的幾年時間,憑借其操作易用性和開發的簡潔性,贏得了廣大消費用戶和開發者的支持,目前一直位居智能手機操作系統市場占有率榜首的位置。本書分為三篇,共計24章,循序漸進地講解了Android系統中底層驅動方面的知識。本書從獲取源碼和源碼結構分析講起,依次講解了基礎知識篇、專用驅動篇和設備驅動篇三大部分的基本知識。在講解每一個驅動時,都從Android系統源碼開始入手,遵循“內核分析—驅動實現—JNI層分析—Java應用層—系統移植和改造”這一主線,透徹地剖析了每一個驅動系統的完整實現流程。本書幾乎涵蓋了Android驅動方面的所有主要內容,并且全書內容言簡意賅,講解方法通俗易懂,不但適用于應用高手們,也適合初學者學習并消化。本書定位于有一定基礎的Android開發人員,幫助其細致分析Android源碼和底層驅動開發,積累經驗,快速向Android殿堂級高手邁進。
- 讀者意見反饋表 更新時間:2019-10-12 15:40:45
- 24.3.5 分析上層應用部分
- 24.3.4 分析硬件抽象層
- 24.3.3 分析驅動程序
- 24.3.2 分析需要移植的內容
- 24.3.1 分析定位系統的結構
- 24.3 定位系統
- 24.2.5 在MSM平臺實現藍牙驅動系統
- 24.2.4 分析本地代碼
- 24.2.3 分析驅動程序
- 24.2.2 分析需要移植的內容
- 24.2.1 藍牙系統的結構
- 24.2 藍牙系統
- 24.1.6 分析Setting中的Wi-Fi設置
- 24.1.5 分析Java FrameWork層
- 24.1.4 分析JNI層
- 24.1.3 分析本地實現
- 24.1.2 分析需要移植的內容
- 24.1 .1 Wi-Fi系統的結構
- 24.1 Wi-Fi系統
- 第24章 Wi-Fi系統、藍牙系統和GPS系統
- 23.4.4 Camera服務libcameraservice.so
- 23.4.3 Camera的本地庫libui.so
- 23.4.2 Camera的Java本地調用部分
- 23.4.1 Java程序部分
- 23.4 實現Camera系統的硬件抽象層
- 23.3.2 硬件抽象層
- 23.3.1 V4L2驅動程序
- 23.3 移植和調試
- 23.2 分析需要移植的內容
- 23.1 Camera系統的結構
- 第23章 照相機系統
- 22.3 在模擬器中實現傳感器驅動
- 22.2.3 實現上層部分
- 22.2.2 移植硬件抽象層
- 22.2.1 移植驅動程序
- 22.2 分析需要移植的內容
- 22.1 傳感器系統的結構
- 第22章 傳感器系統驅動
- 21.6 在MSM平臺實現振動器驅動
- 21.5.2 實現硬件抽象層
- 21.5.1 移植振動器驅動程序
- 21.5 實現移植工作
- 21.4 分析Java層部分
- 21.3 分析JNI層部分
- 21.2 分析硬件抽象層
- 21.1 振動器系統結構
- 第21章 振動器系統驅動
- 20.4 實現Overlay硬件抽象層
- 20.3.3 實現接口
- 20.3.2 實現Overlay系統的硬件抽象層
- 20.3.1 Overlay系統硬件抽象層的接口
- 20.3 分析硬件抽象層
- 20.2 需要移植的部分
- 20.1 視頻輸出系統結構
- 第20章 視頻輸出系統驅動
- 19.4.2 實現硬件抽象層
- 19.4.1 實現Audio驅動程序
- 19.4 在MSM平臺實現Audio驅動系統
- 19.3.4 真正實現Audio硬件抽象層
- 19.3.3 分析AudioFlinger中的Audio硬件抽象層的實現
- 19.3.2 分析硬件抽象層
- 19.3.1 我們的工作
- 19.3 移植Audio系統的工作
- 19.2.5 Java層代碼簡介
- 19.2.4 分析JNI代碼
- 19.2.3 本地代碼
- 19.2.2 Media庫中的Audio框架
- 19.2.1 層次說明
- 19.2 分析音頻系統的層次
- 19.1 音頻系統基礎
- 第19章 音頻系統驅動
- 18.3.5 分析文件EventHub.cpp
- 18.3.4 分析KCM格式文件
- 18.3.3 分析Kl格式文件
- 18.3.2 分析文件KeyCharacterMap.h
- 18.3.1 分析文件KeycodeLabels.h
- 18.3 分析硬件抽象層
- 18.2.3 分析event機制
- 18.2.2 分析核心文件input.c
- 18.2.1 分析頭文件
- 18.2 分析Input(輸入)系統驅動
- 18.1.2 移植工作
- 18.1.1 Android輸入系統結構元素介紹
- 18.1 輸入系統介紹
- 第18章 輸入系統驅動應用
- 17.3.5 分析管理庫文件LayerBuffer.cpp
- 17.3.4 顯示緩沖映射
- 17.3.3 實現緩沖區的分配
- 17.3.2 分析硬件幀緩沖區
- 17.3.1 分析頭文件
- 17.3 分析硬件抽象層
- 17.2.2 分析內核實現文件fbmem.c
- 17.2.1 分析接口文件fb.h
- 17.2 分析內核層
- 17.1 顯示系統介紹
- 第17章 FrameBuffer顯示系統驅動
- 第3篇 設備驅動篇
- 16.2.3 USB設備枚舉
- 16.2.2 層次整合
- 16.2.1 分析軟件結構
- 16.2 分析USB Gadget驅動
- 16.1.4 分析USB驅動的例程
- 16.1.3 分析urb通信方式
- 16.1.2 分析USB和sysfs的聯系
- 16.1.1 USB設備基礎
- 16.1 分析Linux內核的USB驅動程序
- 第16章 分析USB Gadget驅動
- 15.6 模擬器環境的具體實現
- 15.5.2 分析AlarmManager類
- 15.5.1 分析AlarmManagerService類
- 15.5 分析Java層
- 15.4 分析JNI層
- 15.3.3 分析文件alarm-dev.c
- 15.3.2 分析文件alarm.c
- 15.3.1 分析文件android_alarm.h
- 15.3 分析Alarm驅動程序
- 15.2 分析RTC驅動程序
- 15.1.2 需要移植的內容
- 15.1.1 Alarm層次結構介紹
- 15.1 Alarm系統基礎
- 第15章 分析時鐘系統驅動Alarm
- 14.2.2 分析文件ram_console.c
- 14.2.1 分析文件ram_console.h
- 14.2 分析Ram Console的具體實現
- 14.1 Ram Console基礎
- 第14章 分析調試機制驅動Ram Console
- 13.2.2 分析Timed Gpio驅動的實現文件
- 13.2.1 Timed Gpio驅動的基本原理
- 13.2 分析Timed Gpio驅動程序
- 13.1.3 實現timed_output_dev設備的讀寫操作
- 13.1.2 分析Timed Output驅動的具體實現
- 13.1.1 設備類
- 13.1 分析Timed Output驅動程序
- 第13章 分析Time Device驅動
- 12.3.3 獲取位圖占用內存
- 12.3.2 釋放位圖內存空間
- 12.3.1 釋放位圖內存
- 12.3 分析用戶接口空間
- 12.2.3 總結PMEM驅動的調用流程
- 12.2.2 分析驅動的具體實現
- 12.2.1 分析設備實現
- 12.2 分析PMEM系統驅動程序
- 12.1.3 PMEM與Ashmem的區別
- 12.1.2 Platform設備基礎
- 12.1.1 PMEM概述
- 12.1 PMEM基礎
- 第12章 分析物理內存驅動
- 11.3.3 設置用戶接口
- 11.3.2 分析核心功能
- 11.3.1 Low Memory Killer驅動基礎
- 11.3 分析Low Memory Killer驅動
- 11.2 分析Low Memory Killer的原理和機制
- 11.1.2 分析OOM機制的具體實現
- 11.1.1 OOM機制基礎
- 11.1 分析OOM機制
- 第11章 分析低內存管理模塊
- 10.5.4 Android喚醒
- 10.5.3 Android休眠
- 10.5.2 early_suspend的原理
- 10.5.1 wake lock的原理
- 10.5 wake lock和early_suspend
- 10.4.7 proc文件
- 10.4.6 文件main.c
- 10.4.5 文件suspend.c
- 10.4.4 文件resume.c
- 10.4.3 文件wakelock.c
- 10.4.2 文件earlysuspend.c
- 10.4.1 文件power.c
- 10.4 Kernel(內核)層分析
- 10.3.2 文件power.c
- 10.3.1 文件android_os_Power.cpp
- 10.3 JNI層分析
- 10.2.2 文件PowerManagerService.java
- 10.2.1 文件PowerManager.java
- 10.2 Framework層分析
- 10.1 Android Power Management基礎
- 第10章 分析電源管理模塊
- 9.4 分析Java訪問接口層
- 9.3.2 接口MemoryBase
- 9.3.1 接口MemoryBase
- 9.3 分析C++訪問接口層
- 9.2.7 回收內存塊
- 9.2.6 鎖定和解鎖
- 9.2.5 讀/寫操作
- 9.2.4 內存映射
- 9.2.3 打開匿名共享內存設備文件
- 9.2.2 初始化處理
- 9.2.1 基礎數據結構
- 9.2 分析Ashmem驅動程序
- 9.1.2 Service Manager是Binder機制的上下文管理者
- 9.1.1 Android的進程間通信(IPC)機制Binder
- 9.1 分析Android的進程通信機制
- 第9章 內存系統驅動
- 8.4.2 分析Java層的寫入接口
- 8.4.1 分析C/C++層的寫入接口
- 8.4 分析日志寫入接口
- 8.3 日志庫liblog
- 8.2.2 分析文件logger.c
- 8.2.1 分析文件logger.h
- 8.2 分析Logger驅動程序
- 8.1 Logger系統基礎
- 第8章 Logger日志驅動
- 7.9.3 類IPCThreadState
- 7.9.2 類BpRefBase
- 7.9.1 類BBinder
- 7.9 Binder封裝庫
- 7.8.4 查詢內核緩沖區
- 7.8.3 釋放內核緩沖區
- 7.8.2 添加到紅黑樹
- 7.8.1 分配內核緩沖區函數
- 7.8 處理內核緩沖區
- 7.7 釋放物理頁面
- 7.6.2 分析具體代碼
- 7.6.1 分析流程
- 7.6 實現內存映射
- 7.5 打開Binder設備文件
- 7.4 設備初始化
- 7.3 分析Binder驅動程序的數據結構
- 7.2 Binder機制概述
- 7.1 引出Binder機制
- 第7章 Binder驅動程序
- 6.7.2 輔助工作
- 6.7.1 移植各個Android部件的方式
- 6.7 HAL和系統移植
- 6.6.2 Sensor編程的流程
- 6.6.1 HAL層的Sensor代碼
- 6.6 分析Sensor(傳感器)在HAL層的實現
- 6.5.2 通過Manager調用service的實現代碼
- 6.5.1 直接調用service方法的實現代碼
- 6.5 分析mokoid工程
- 6.4.2 實現硬件訪問服務
- 6.4.1 定義硬件訪問服務接口
- 6.4 分析硬件訪問服務
- 6.3 分析硬件抽象層的加載過程
- 6.2.3 文件hardware.c
- 6.2.2 文件hardware.h
- 6.2.1 分析HAL moudle
- 6.2 分析HAL層源碼
- 6.1.2 HAL_legacy和HAL的對比
- 6.1.1 HAL層簡介
- 6.1 初識HAL層
- 第6章 硬件設備驅動程序
- 5.6 開發自己的JNI程序
- 5.5.3 C/C++層的預覽函數
- 5.5.2 注冊預覽的JNI函數
- 5.5.1 Java層預覽接口
- 5.5 Camera模塊的JNI實例分析
- 5.4.10 JNI中的環境變量
- 5.4.9 JNIEnv接口
- 5.4.8 Java與JNI基本數據類型轉換
- 5.4.7 總結函數JNI_OnLoad()與函數JNI_OnUnload()的用途
- 5.4.6 添加TAG信息
- 5.4.5 掃描文件
- 5.4.4 處理路徑參數
- 5.4.3 動態注冊
- 5.4.2 完成注冊工作
- 5.4.1 注冊JNI函數
- 5.4 Native(本地)層
- 5.3.2 創建Native層的MediaScanner對象
- 5.3.1 將Native對象的指針保存到Java對象
- 5.3 分析JNI層
- 5.2.7 JNI中的異常處理
- 5.2.6 掃描函數scanFile()
- 5.2.5 processDirectory
- 5.2.4 刪除不是SD卡中的文件信息
- 5.2.3 讀取并保存信息
- 5.2.2 實現掃描工作
- 5.2.1 加載JNI庫
- 5.2 分析Java層
- 5.1 JNI的本質
- 第5章 分析JNI
- 第2篇 專用驅動篇
- 4.3.5 OMAP的設備驅動
- 4.3.4 移植Android專用驅動和組件
- 4.3.3 移植OMAP體系結構
- 4.3.2 OMAP內核
- 4.3.1 OMAP基礎
- 4.3 OMAP內核和驅動解析
- 4.2.3 移植MSM
- 4.2.2 移植MSM內核簡介
- 4.2.1 MSM基礎
- 4.2 MSM內核和驅動解析
- 4.1.8 Goldfish的設備驅動
- 4.1.7 Paranoid驅動介紹
- 4.1.6 USB Gadget驅動程序
- 4.1.5 Alarm驅動程序
- 4.1.4 Pmem驅動介紹
- 4.1.3 Ashmem驅動介紹
- 4.1.2 Android專用驅動簡介
- 4.1.1 Goldfish基礎
- 4.1 Goldfish內核和驅動解析
- 第4章 分析三大內核系統
- 3.5.3 網絡設備驅動
- 3.5.2 塊設備驅動
- 3.5.1 字符設備驅動
- 3.5 三類驅動程序
- 3.4.3 使用Relay實現內核到用戶空間的數據傳輸
- 3.4.2 系統和硬件之間的交互
- 3.4.1 內核空間和用戶空間的相互作用
- 3.4 內核空間和用戶空間之間接口
- 3.3.4 為Android構建Linux的操作系統
- 3.3.3 Android對Linux內核文件的改動
- 3.3.2 Android的核心驅動
- 3.3.1 Android的獨有驅動
- 3.3 Android對Linux的改造
- 3.2.3 驅動開發需要做的工作
- 3.2.2 需要移植的內容
- 3.2.1 移植的任務
- 3.2 Android移植基礎
- 3.1 驅動開發需要做的工作
- 第3章 Android驅動移植基礎
- 2.4.4 編譯Android的Linux內核
- 2.4.3 獲取OMAP內核代碼
- 2.4.2 獲取MSM內核代碼
- 2.4.1 獲取Goldfish內核代碼
- 2.4 編譯Android Kernel
- 2.3.5 實踐演練——演示兩種編譯Android程序的方法
- 2.3.4 常見的錯誤分析
- 2.3.3 在模擬器中運行
- 2.3.2 開始編譯
- 2.3.1 搭建編譯環境
- 2.3 編譯Android源碼
- 2.2 分析Android源碼結構
- 2.1.2 在Windows平臺獲取Android源碼
- 2.1.1 在Linux系統獲取Android源碼
- 2.1 獲取Android源碼
- 第2章 獲取并編譯Android源碼
- 1.6.4 學習Linux內核的方法
- 1.6.3 Linux內核的顯著特性
- 1.6.2 瀏覽源碼的工具
- 1.6.1 源碼目錄結構
- 1.6 分析Linux內核源碼
- 1.5.2 和Android密切相關的Linux內核知識
- 1.5.1 Linux內核的體系結構
- 1.5 簡析Linux內核
- 1.4.2 Android和Linux內核的區別
- 1.4.1 Android繼承于Linux
- 1.4 Android和Linux的關系
- 1.3.3 Linux的巨大前景
- 1.3.2 主要版本
- 1.3.1 Linux歷史簡介
- 1.3 Linux開發基礎
- 1.2.3 對驅動開發者來說是一把雙刃劍
- 1.2.2 從為什么選擇Java談為什么不開源驅動程序
- 1.2.1 霧里看花的開源
- 1.2 開源還是不開源
- 1.1.3 手機中的驅動程序
- 1.1.2 PC中的驅動
- 1.1.1 驅動程序的作用
- 1.1 認識什么是驅動
- 第1章 Android驅動開發基礎
- 第1篇 基礎知識篇
- 前言
- 內容簡介
- 版權信息
- 封面
- 封面
- 版權信息
- 內容簡介
- 前言
- 第1篇 基礎知識篇
- 第1章 Android驅動開發基礎
- 1.1 認識什么是驅動
- 1.1.1 驅動程序的作用
- 1.1.2 PC中的驅動
- 1.1.3 手機中的驅動程序
- 1.2 開源還是不開源
- 1.2.1 霧里看花的開源
- 1.2.2 從為什么選擇Java談為什么不開源驅動程序
- 1.2.3 對驅動開發者來說是一把雙刃劍
- 1.3 Linux開發基礎
- 1.3.1 Linux歷史簡介
- 1.3.2 主要版本
- 1.3.3 Linux的巨大前景
- 1.4 Android和Linux的關系
- 1.4.1 Android繼承于Linux
- 1.4.2 Android和Linux內核的區別
- 1.5 簡析Linux內核
- 1.5.1 Linux內核的體系結構
- 1.5.2 和Android密切相關的Linux內核知識
- 1.6 分析Linux內核源碼
- 1.6.1 源碼目錄結構
- 1.6.2 瀏覽源碼的工具
- 1.6.3 Linux內核的顯著特性
- 1.6.4 學習Linux內核的方法
- 第2章 獲取并編譯Android源碼
- 2.1 獲取Android源碼
- 2.1.1 在Linux系統獲取Android源碼
- 2.1.2 在Windows平臺獲取Android源碼
- 2.2 分析Android源碼結構
- 2.3 編譯Android源碼
- 2.3.1 搭建編譯環境
- 2.3.2 開始編譯
- 2.3.3 在模擬器中運行
- 2.3.4 常見的錯誤分析
- 2.3.5 實踐演練——演示兩種編譯Android程序的方法
- 2.4 編譯Android Kernel
- 2.4.1 獲取Goldfish內核代碼
- 2.4.2 獲取MSM內核代碼
- 2.4.3 獲取OMAP內核代碼
- 2.4.4 編譯Android的Linux內核
- 第3章 Android驅動移植基礎
- 3.1 驅動開發需要做的工作
- 3.2 Android移植基礎
- 3.2.1 移植的任務
- 3.2.2 需要移植的內容
- 3.2.3 驅動開發需要做的工作
- 3.3 Android對Linux的改造
- 3.3.1 Android的獨有驅動
- 3.3.2 Android的核心驅動
- 3.3.3 Android對Linux內核文件的改動
- 3.3.4 為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章 分析三大內核系統
- 4.1 Goldfish內核和驅動解析
- 4.1.1 Goldfish基礎
- 4.1.2 Android專用驅動簡介
- 4.1.3 Ashmem驅動介紹
- 4.1.4 Pmem驅動介紹
- 4.1.5 Alarm驅動程序
- 4.1.6 USB Gadget驅動程序
- 4.1.7 Paranoid驅動介紹
- 4.1.8 Goldfish的設備驅動
- 4.2 MSM內核和驅動解析
- 4.2.1 MSM基礎
- 4.2.2 移植MSM內核簡介
- 4.2.3 移植MSM
- 4.3 OMAP內核和驅動解析
- 4.3.1 OMAP基礎
- 4.3.2 OMAP內核
- 4.3.3 移植OMAP體系結構
- 4.3.4 移植Android專用驅動和組件
- 4.3.5 OMAP的設備驅動
- 第2篇 專用驅動篇
- 第5章 分析JNI
- 5.1 JNI的本質
- 5.2 分析Java層
- 5.2.1 加載JNI庫
- 5.2.2 實現掃描工作
- 5.2.3 讀取并保存信息
- 5.2.4 刪除不是SD卡中的文件信息
- 5.2.5 processDirectory
- 5.2.6 掃描函數scanFile()
- 5.2.7 JNI中的異常處理
- 5.3 分析JNI層
- 5.3.1 將Native對象的指針保存到Java對象
- 5.3.2 創建Native層的MediaScanner對象
- 5.4 Native(本地)層
- 5.4.1 注冊JNI函數
- 5.4.2 完成注冊工作
- 5.4.3 動態注冊
- 5.4.4 處理路徑參數
- 5.4.5 掃描文件
- 5.4.6 添加TAG信息
- 5.4.7 總結函數JNI_OnLoad()與函數JNI_OnUnload()的用途
- 5.4.8 Java與JNI基本數據類型轉換
- 5.4.9 JNIEnv接口
- 5.4.10 JNI中的環境變量
- 5.5 Camera模塊的JNI實例分析
- 5.5.1 Java層預覽接口
- 5.5.2 注冊預覽的JNI函數
- 5.5.3 C/C++層的預覽函數
- 5.6 開發自己的JNI程序
- 第6章 硬件設備驅動程序
- 6.1 初識HAL層
- 6.1.1 HAL層簡介
- 6.1.2 HAL_legacy和HAL的對比
- 6.2 分析HAL層源碼
- 6.2.1 分析HAL moudle
- 6.2.2 文件hardware.h
- 6.2.3 文件hardware.c
- 6.3 分析硬件抽象層的加載過程
- 6.4 分析硬件訪問服務
- 6.4.1 定義硬件訪問服務接口
- 6.4.2 實現硬件訪問服務
- 6.5 分析mokoid工程
- 6.5.1 直接調用service方法的實現代碼
- 6.5.2 通過Manager調用service的實現代碼
- 6.6 分析Sensor(傳感器)在HAL層的實現
- 6.6.1 HAL層的Sensor代碼
- 6.6.2 Sensor編程的流程
- 6.7 HAL和系統移植
- 6.7.1 移植各個Android部件的方式
- 6.7.2 輔助工作
- 第7章 Binder驅動程序
- 7.1 引出Binder機制
- 7.2 Binder機制概述
- 7.3 分析Binder驅動程序的數據結構
- 7.4 設備初始化
- 7.5 打開Binder設備文件
- 7.6 實現內存映射
- 7.6.1 分析流程
- 7.6.2 分析具體代碼
- 7.7 釋放物理頁面
- 7.8 處理內核緩沖區
- 7.8.1 分配內核緩沖區函數
- 7.8.2 添加到紅黑樹
- 7.8.3 釋放內核緩沖區
- 7.8.4 查詢內核緩沖區
- 7.9 Binder封裝庫
- 7.9.1 類BBinder
- 7.9.2 類BpRefBase
- 7.9.3 類IPCThreadState
- 第8章 Logger日志驅動
- 8.1 Logger系統基礎
- 8.2 分析Logger驅動程序
- 8.2.1 分析文件logger.h
- 8.2.2 分析文件logger.c
- 8.3 日志庫liblog
- 8.4 分析日志寫入接口
- 8.4.1 分析C/C++層的寫入接口
- 8.4.2 分析Java層的寫入接口
- 第9章 內存系統驅動
- 9.1 分析Android的進程通信機制
- 9.1.1 Android的進程間通信(IPC)機制Binder
- 9.1.2 Service Manager是Binder機制的上下文管理者
- 9.2 分析Ashmem驅動程序
- 9.2.1 基礎數據結構
- 9.2.2 初始化處理
- 9.2.3 打開匿名共享內存設備文件
- 9.2.4 內存映射
- 9.2.5 讀/寫操作
- 9.2.6 鎖定和解鎖
- 9.2.7 回收內存塊
- 9.3 分析C++訪問接口層
- 9.3.1 接口MemoryBase
- 9.3.2 接口MemoryBase
- 9.4 分析Java訪問接口層
- 第10章 分析電源管理模塊
- 10.1 Android Power Management基礎
- 10.2 Framework層分析
- 10.2.1 文件PowerManager.java
- 10.2.2 文件PowerManagerService.java
- 10.3 JNI層分析
- 10.3.1 文件android_os_Power.cpp
- 10.3.2 文件power.c
- 10.4 Kernel(內核)層分析
- 10.4.1 文件power.c
- 10.4.2 文件earlysuspend.c
- 10.4.3 文件wakelock.c
- 10.4.4 文件resume.c
- 10.4.5 文件suspend.c
- 10.4.6 文件main.c
- 10.4.7 proc文件
- 10.5 wake lock和early_suspend
- 10.5.1 wake lock的原理
- 10.5.2 early_suspend的原理
- 10.5.3 Android休眠
- 10.5.4 Android喚醒
- 第11章 分析低內存管理模塊
- 11.1 分析OOM機制
- 11.1.1 OOM機制基礎
- 11.1.2 分析OOM機制的具體實現
- 11.2 分析Low Memory Killer的原理和機制
- 11.3 分析Low Memory Killer驅動
- 11.3.1 Low Memory Killer驅動基礎
- 11.3.2 分析核心功能
- 11.3.3 設置用戶接口
- 第12章 分析物理內存驅動
- 12.1 PMEM基礎
- 12.1.1 PMEM概述
- 12.1.2 Platform設備基礎
- 12.1.3 PMEM與Ashmem的區別
- 12.2 分析PMEM系統驅動程序
- 12.2.1 分析設備實現
- 12.2.2 分析驅動的具體實現
- 12.2.3 總結PMEM驅動的調用流程
- 12.3 分析用戶接口空間
- 12.3.1 釋放位圖內存
- 12.3.2 釋放位圖內存空間
- 12.3.3 獲取位圖占用內存
- 第13章 分析Time Device驅動
- 13.1 分析Timed Output驅動程序
- 13.1.1 設備類
- 13.1.2 分析Timed Output驅動的具體實現
- 13.1.3 實現timed_output_dev設備的讀寫操作
- 13.2 分析Timed Gpio驅動程序
- 13.2.1 Timed Gpio驅動的基本原理
- 13.2.2 分析Timed Gpio驅動的實現文件
- 第14章 分析調試機制驅動Ram Console
- 14.1 Ram Console基礎
- 14.2 分析Ram Console的具體實現
- 14.2.1 分析文件ram_console.h
- 14.2.2 分析文件ram_console.c
- 第15章 分析時鐘系統驅動Alarm
- 15.1 Alarm系統基礎
- 15.1.1 Alarm層次結構介紹
- 15.1.2 需要移植的內容
- 15.2 分析RTC驅動程序
- 15.3 分析Alarm驅動程序
- 15.3.1 分析文件android_alarm.h
- 15.3.2 分析文件alarm.c
- 15.3.3 分析文件alarm-dev.c
- 15.4 分析JNI層
- 15.5 分析Java層
- 15.5.1 分析AlarmManagerService類
- 15.5.2 分析AlarmManager類
- 15.6 模擬器環境的具體實現
- 第16章 分析USB Gadget驅動
- 16.1 分析Linux內核的USB驅動程序
- 16.1.1 USB設備基礎
- 16.1.2 分析USB和sysfs的聯系
- 16.1.3 分析urb通信方式
- 16.1.4 分析USB驅動的例程
- 16.2 分析USB Gadget驅動
- 16.2.1 分析軟件結構
- 16.2.2 層次整合
- 16.2.3 USB設備枚舉
- 第3篇 設備驅動篇
- 第17章 FrameBuffer顯示系統驅動
- 17.1 顯示系統介紹
- 17.2 分析內核層
- 17.2.1 分析接口文件fb.h
- 17.2.2 分析內核實現文件fbmem.c
- 17.3 分析硬件抽象層
- 17.3.1 分析頭文件
- 17.3.2 分析硬件幀緩沖區
- 17.3.3 實現緩沖區的分配
- 17.3.4 顯示緩沖映射
- 17.3.5 分析管理庫文件LayerBuffer.cpp
- 第18章 輸入系統驅動應用
- 18.1 輸入系統介紹
- 18.1.1 Android輸入系統結構元素介紹
- 18.1.2 移植工作
- 18.2 分析Input(輸入)系統驅動
- 18.2.1 分析頭文件
- 18.2.2 分析核心文件input.c
- 18.2.3 分析event機制
- 18.3 分析硬件抽象層
- 18.3.1 分析文件KeycodeLabels.h
- 18.3.2 分析文件KeyCharacterMap.h
- 18.3.3 分析Kl格式文件
- 18.3.4 分析KCM格式文件
- 18.3.5 分析文件EventHub.cpp
- 第19章 音頻系統驅動
- 19.1 音頻系統基礎
- 19.2 分析音頻系統的層次
- 19.2.1 層次說明
- 19.2.2 Media庫中的Audio框架
- 19.2.3 本地代碼
- 19.2.4 分析JNI代碼
- 19.2.5 Java層代碼簡介
- 19.3 移植Audio系統的工作
- 19.3.1 我們的工作
- 19.3.2 分析硬件抽象層
- 19.3.3 分析AudioFlinger中的Audio硬件抽象層的實現
- 19.3.4 真正實現Audio硬件抽象層
- 19.4 在MSM平臺實現Audio驅動系統
- 19.4.1 實現Audio驅動程序
- 19.4.2 實現硬件抽象層
- 第20章 視頻輸出系統驅動
- 20.1 視頻輸出系統結構
- 20.2 需要移植的部分
- 20.3 分析硬件抽象層
- 20.3.1 Overlay系統硬件抽象層的接口
- 20.3.2 實現Overlay系統的硬件抽象層
- 20.3.3 實現接口
- 20.4 實現Overlay硬件抽象層
- 第21章 振動器系統驅動
- 21.1 振動器系統結構
- 21.2 分析硬件抽象層
- 21.3 分析JNI層部分
- 21.4 分析Java層部分
- 21.5 實現移植工作
- 21.5.1 移植振動器驅動程序
- 21.5.2 實現硬件抽象層
- 21.6 在MSM平臺實現振動器驅動
- 第22章 傳感器系統驅動
- 22.1 傳感器系統的結構
- 22.2 分析需要移植的內容
- 22.2.1 移植驅動程序
- 22.2.2 移植硬件抽象層
- 22.2.3 實現上層部分
- 22.3 在模擬器中實現傳感器驅動
- 第23章 照相機系統
- 23.1 Camera系統的結構
- 23.2 分析需要移植的內容
- 23.3 移植和調試
- 23.3.1 V4L2驅動程序
- 23.3.2 硬件抽象層
- 23.4 實現Camera系統的硬件抽象層
- 23.4.1 Java程序部分
- 23.4.2 Camera的Java本地調用部分
- 23.4.3 Camera的本地庫libui.so
- 23.4.4 Camera服務libcameraservice.so
- 第24章 Wi-Fi系統、藍牙系統和GPS系統
- 24.1 Wi-Fi系統
- 24.1 .1 Wi-Fi系統的結構
- 24.1.2 分析需要移植的內容
- 24.1.3 分析本地實現
- 24.1.4 分析JNI層
- 24.1.5 分析Java FrameWork層
- 24.1.6 分析Setting中的Wi-Fi設置
- 24.2 藍牙系統
- 24.2.1 藍牙系統的結構
- 24.2.2 分析需要移植的內容
- 24.2.3 分析驅動程序
- 24.2.4 分析本地代碼
- 24.2.5 在MSM平臺實現藍牙驅動系統
- 24.3 定位系統
- 24.3.1 分析定位系統的結構
- 24.3.2 分析需要移植的內容
- 24.3.3 分析驅動程序
- 24.3.4 分析硬件抽象層
- 24.3.5 分析上層應用部分
- 讀者意見反饋表 更新時間:2019-10-12 15:40:45