Android 嵌入式编程

978-7-115-49380-4
作者: [美] 罗杰·叶(Roger Ye)
译者: 师蓉
编辑: 吴晋瑜
分类: Android

图书目录:

目 录

第 一部分 裸 机 编 程

第 1章 嵌入式系统编程简介 3

1.1 什么是嵌入式系统 3

1.2 裸机编程 3

1.3 学习嵌入式系统编程 5

1.4 嵌入式系统的软件层 6

1.5 工具和硬件平台 9

1.6 虚拟硬件和真正的硬件之间的区别 9

1.7 小结 10

第 2章 Android模拟器内部 11

2.1 虚拟硬件概述 11

2.2 Android虚拟设备的配置 12

2.3 硬件接口 14

2.4 串口 15

2.5 定时器 16

2.6 小结 20

第3章 开发环境的设置 21

3.1 主机和客户端环境 21

3.2 开发环境的设置 22

3.3 下载并安装Android SDK 22

3.4 为ARM下载并安装GNU工具链 23

3.5 集成开发环境 24

3.6 用户的第 一个ARM程序 24

3.7 构建二进制文件 26

3.8 在Android模拟器中运行 27

3.9 示例项目的makefile 30

3.10 小结 31

第4章 链接器脚本和内存映射 32

4.1 内存映射 32

4.2 链接器 33

4.2.1 符号解析 34

4.2.2 重定位 37

4.2.3 段合并 40

4.2.4 段布局 41

4.3 链接器脚本 42

4.3.1 链接器脚本示例 43

4.4 RAM中数据的初始化 45

4.4.1 指定加载地址 47

4.4.2 将.data复制到RAM中 47

4.5 小结 49

第5章 使用C语言 50

5.1 裸机环境中的C启动 50

5.1.1 堆栈 52

5.1.2 全局变量 53

5.1.3 只读数据 54

5.1.4 启动代码 54

5.2 调用约定 61

5.2.1 从汇编语言代码中调用C

函数 62

5.2.2 从C代码调用汇编语言函数 64

5.3 Goldfish串口支持 64

5.3.1 检查数据缓冲区 68

5.3.2 数据输入和输出 69

5.3.3 串口函数的单元测试 70

5.4 小结 72

第6章 使用C库 73

6.1 C库的变体 73

6.1.1 操作系统中的C库变体 73

6.1.2 裸机环境中的C库变体 74

6.2 Newlib C库 75

6.3 通用启动代码序列 76

6.4 CS3链接器脚本 76

6.5 Goldfish平台的自定义CS启动代码 81

6.6 系统调用实现 81

6.7 运行并调试库 87

6.8 在QEMU ARM半主机中使用

Newlib 91

6.8.1 Newlib C中的半主机支持 91

6.8.2 半主机示例代码 91

6.9 小结 95

第7章 异常处理和定时器 96

7.1 Goldfish中断控制器 96

7.2 最简单的中断处理程序 98

7.2.1 中断支持函数 99

7.2.2 最简单中断处理程序的实现 101

7.3 嵌套中断处理程序 108

7.3.1 嵌套中断处理程序的实现 109

7.3.2 测试嵌套中断并探讨处理器

模式转换 118

7.4 测试系统调用/软件中断 126

7.5 定时器 127

7.5.1 Goldfish特有的定时器函数 131

7.5.2 U-Boot API 131

7.6 实时时钟 132

7.6.1 定时器和RTC的单元测试 133

7.7 小结 139

第8章 Goldfish中的NAND闪存支持 140

8.1 Android文件系统 140

8.2 NAND闪存属性 142

8.3 Goldfish平台中的NAND闪存编程

接口 143

8.4 内存技术设备支持 144

8.5 MTD API 145

8.5.1 支持NAND闪存的

U-Boot API 156

8.5.2 Goldfish NAND闪存驱动

程序函数 156

8.6 NAND闪存编程接口测试程序 157

8.6.1 来自Linux内核的NAND

闪存信息 157

8.6.2 NAND闪存测试程序 160

8.7 小结 164

第二部分 U-Boot

第9章 U-Boot移植 167

9.1 U-Boot简介 167

9.2 下载并编译U-Boot 168

9.3 使用GDB调试U-Boot 171

9.4 将U-Boot移植到Goldfish平台中 174

9.4.1 创建一个新板 174

9.4.2 针对处理器的修改 175

9.4.3 针对板的修改 176

9.4.4 设备驱动程序修改 183

9.5 小结 188

第 10章 使用U-Boot引导Goldfish

 内核 190

10.1 构建goldfish内核 190

10.2 内置工具链和内核源代码 191

10.3 在模拟器中运行并调试内核 192

10.4 从NOR闪存启动Android 194

10.4.1 创建RAMDISK映像 196

10.4.2 创建闪存映像 197

10.4.3 启动闪存映像 198

10.4.4 闪存映像的源级调试 203

10.5 从NAND闪存启动Android 207

10.5.1 准备system.img 207

10.5.2 从NAND闪存启动 208

10.6 小结 214

第三部分 Android系统集成

第 11章 创建自己的AOSP和

 CyanogenMod 217

11.1 AOSP和CyanogenMod简介 217

11.2 创建Android虚拟设备 218

11.3 AOSP Android模拟器构建 221

11.3.1 AOSP构建环境 221

11.3.2 下载AOSP源 222

11.3.3 构建AOSP Android模拟器

映像 223

11.3.4 测试AOSP映像 225

11.4 CyanogenMod Android模拟器

构建 229

11.4.1 下载CyanogenMod源 229

11.4.2 构建CyanogenMod Android

模拟器映像 230

11.4.3 测试CyanogenMod映像 233

11.5 小结 237

第 12章 定制Android并创建自己的

 Android ROM 238

12.1 在AOSP中支持新硬件 238

12.1.1 使用AOSP构建内核 245

12.1.2 使用AOSP构建U-Boot 248

12.1.3 使用U-Boot从NAND闪存

启动Android 249

12.2 在CyanogenMod中支持新硬件 256

12.2.1 使用CyanogenMod构建

内核 258

12.2.2 构建U-Boot并启动

CyanogenMod 260

12.3 小结 261

第四部分 附 录

附录A 构建本书的源代码 265

A.1 设置构建环境 265

A.2 创建虚拟机 267

A.3 源代码的组织 267

A.4 第 一部分的源代码 268

A.4.1 从命令行构建并测试 268

A.4.2 在Eclipse中构建并测试 269

A.5 第二部分的源代码 272

A.6 第三部分的源代码 273

A.6.1 构建AOSP 274

A.6.2 构建CyanogenMod 274

附录B 在本书中使用Repo 276

B.1 Repo的资源 276

B.2 几分钟内同步一个新的源树 276

B.3 使用local manifest下载git仓库 277

详情

本书展示了如何使用 C 来创建硬件接口与受欢迎的启动引导 Linux 内核程序。引导读者完成使用文件系统映像,学习打造自定义 Rom,支持任何新的安卓设备。读者可以建立一个完整的虚拟化的环境程序串行端口、获得用于移植 U-boot 到新环境的深入知识。

图书摘要

相关图书

Android Gradle权威指南
Android Gradle权威指南
爱上Android
爱上Android
深入解析Android 虚拟机
深入解析Android 虚拟机
Android系统安全和反编译实战
Android系统安全和反编译实战

相关文章

相关课程