第1章 开发前的准备 1
1.1 Android系统移植准备及简介 1
1.1.1 Android系统架构 1
1.1.2 Android子系统 3
1.1.3 Android应用程序开发过程 4
1.1.4 Android源码开发过程 4
1.1.5 Android系统移植 4
1.1.6 Linux内核版本 5
1.1.7 Android驱动程序开发过程 6
1.2 开发环境搭建 7
1.2.1 从零开始搭建Ubuntu开发环境 7
1.2.2 安装开发环境 12
1.2.3 安装编译工具和源代码 16
1.3 使用Git管理源代码 25
1.3.1 用Git命令初始化代码 25
1.3.2 用smartgit工具进行图形化管理 26
1.4 常用编译命令 30
1.5 搭建开发板的测试环境 33
第2章 开发基础知识 38
2.1 BootLoader简介 38
2.1.1 BootLoader的概念 38
2.1.2 U-Boot简单分析 38
2.2 Kernel简介 44
2.2.1 内核基本概念 44
2.2.2 内核理论基础——如何阅读内核源码 48
2.2.3 内核理论基础——设备树DTS 65
2.2.4 内核理论基础——定时器 75
2.2.5 内核理论基础——内核异常中断 116
2.2.6 内核理论基础——SMP 134
2.2.7 内核理论基础——Linux驱动编写中的并发控制 176
2.3 常用工具及命令 187
2.3.1 ADB 187
2.3.2 Logcat 189
2.3.3 grep命令介绍 192
2.4 系统调试技巧 197
2.4.1 Android的调试及Log机制详解 197
2.4.2 Linux内核常用的调试方法 279
第3章 开发实战 283
3.1 PinCtrl(Pin Control)subsystem子系统 283
3.1.1 PinCtrl子系统介绍 284
3.1.2 PinCtrl源代码简单介绍 304
3.1.3 PinCtrl总结 319
3.2 内核Kernel移植 319
3.2.1 启动界面的更换 319
3.2.2 Linux引导过程 320
3.2.3 GPIO 驱动 322
3.2.4 设备按键驱动 324
3.2.5 触摸屏驱动 328
3.2.6 Wi-Fi驱动 331
3.2.7 G-sensor驱动 333
3.3 Android系统定制 338
3.3.1 Android HAL硬件抽象层简介 338
3.3.2 GPS Android HAL实现 345
3.3.3 Android定制(LED灯的Android程序)——硬件驱动程序及测试方法 348
3.3.4 Android定制(LED灯的Android程序)——增加HAL接口访问硬件驱动程序 350
3.3.5 Android定制(LED灯的Android程序)——编写服务的JNI方法 354
3.3.6 Android定制(LED灯的Android程序)——编写Framework层Java服务 357
3.3.7 Android定制(LED灯的Android程序)——编写通过Manager访问硬件服务 360
3.4 Android应用开发 365
3.4.1 Android APP基本结构 365
3.4.2 如何快速开发自己的AndroidAPP 373
参考文献 376