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.mzph.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…