第一篇 嵌入式ARM Linux裸机开发初体验 2
第1章 S5PV210处理器的前世今生 2
1.1 数据类型 3
1.2 处理器状态 4
1.3 存储器格式 4
1.4 工作模式 5
1.5 寄存器介绍 6
1.5.1 堆栈指针寄存器R13和链接寄存器R14 6
1.5.2 程序计数器R15 7
1.5.3 程序状态寄存器 7
1.6 存储器映射 8
1.6.1 S5PV210处理器的地址空间 9
1.6.2 S5PV210处理器的存储器地址映射 9
1.7 天嵌TQ210开发板硬件资源概述 10
1.8 本章小结 12
第2章 搭建嵌入式交叉编译环境 13
2.1 交叉编译简介 14
2.2 在主机上构建嵌入式Linux开发环境 15
2.2.1 VMware Workstation的安装 15
2.2.2 Ubuntu12.04的安装 18
2.3 主机与虚拟机之间文件传输方法的介绍 25
2.4 交叉编译器的安装 30
2.5 Windows环境下远程登录工具SecureCRT的安装 31
2.6 S5PV210程序烧写方法概述 33
2.6.1 使用SD卡方式烧写及SD启动卡的制作方法 33
2.6.2 使用U-Boot方式烧写程序 36
2.7 本章小结 36
第3章 ARM指令集及汇编语言编程介绍 37
3.1 ARM指令集介绍 37
3.1.1 ARM指令集 38
3.1.2 ARM寻址方式 44
3.1.3 GNU ARM伪操作和伪指令介绍 47
3.2 GNU ARM汇编程序编程规范 50
3.2.1 GNU ARM汇编程序基本结构 50
3.2.2 GNU ARM汇编程序中的标号 50
3.2.3 GNU ARM汇编程序中的段 51
3.2.4 GNU ARM汇编程序中的入口点 52
3.2.5 GNU ARM汇编程序中的宏定义 52
3.3 常用汇编语言程序子模块实例分析 52
3.3.1 特殊功能寄存器的访问 52
3.3.2 内存数据搬移 53
3.3.3 批量加载与存储 54
3.3.4 堆栈操作 55
3.3.5 实现查表功能 57
3.4 GNU交叉编译工具链简介 57
3.4.1 arm-linux-gcc编译器 58
3.4.2 arm-linux-Id链接器 60
3.4.3 arm-linux-objcopy格式转换工具 64
3.4.4 arm-linux-objdump工具 64
3.5 Makefile简介 65
3.5.1 Makefile规则和命令 66
3.5.2 Makefile变量 68
3.5.3 Makefile内嵌函数 69
3.6 本章小结 72
第4章 传递C语言的正能量 73
4.1 数据类型基础 73
4.1.1 用typedef和#define定义类型 74
4.1.2 用signed和unsigned修饰数据类型 74
4.1.3 volatile和强制类型转换 75
4.2 深入理解位运算符和位运算 76
4.2.1 按位与运算符(&) 76
4.2.2 按位或运算符(|) 76
4.2.3按位取反运算符(~) 77
4.2.4左移和右移运算符(<<)、(>>) 77
4.2.5位运算应用实例分析 77
4.3防止文件重复包含技巧 78
4.4本章小结 79
第5章 ARM汇编与C语言混合编程的那些事儿 80
5.1一个混合编程实例的实现 80
5.2 APCS规则概述 82
5.2.1寄存器的使用 82
5.2.2参数传递 82
5.2.3函数的返回值 83
5.3本章小结 83
第6章 点亮神奇的流水灯 84
6.1 S5PV210处理器GPIO接口概述 84
6.1.1 GPIO的结构简介 85
6.1.2 GPIO的操作方法 86
6.1.3 GPIO应用实例 89
6.2点亮LED流水灯 91
6.2.1 LED硬件电路分析 91
6.2.2新建一个LED流水灯工程 91
6.2.3代码编写与详解 93
6.2.4编写Makefile文件 96
6.2.5编译链接LED流水灯程序 98
6.2.6下载可执行程序到开发板运行 101
6.3让TQ210开发板发出声音 105
6.3.1蜂鸣器硬件电路分析 106
6.3.2代码编写与详解 107
6.3.3蜂鸣器的Makefile文件 112
6.3.4编译、链接蜂鸣器源程序 113
6.3.5下载、测试蜂鸣器实验可执行程序 114
6.4本章小结 118
第7章 探究时钟滴答的奥秘 119
7.1 S5PV210处理器时钟体系结构概述 119
7.1.1 S5PV210处理器的顶层时钟 120
7.1.2 各类时钟频率之间的关系 122
7.2 PLL的配置及时钟初始化 124
7.2.1 APLL和MPLL的相关寄存器 125
7.2.2 与时钟相关的其他寄存器及初始化流程 130
7.2.3 时钟初始化应用实例 133
7.3 PWM定时器的原理及应用 135
7.3.1 PWM定时器概述 136
7.3.2 PWM定时器相关寄存器 138
7.3.3 PWM定时器的操作方法 143
7.3.4 PWM定时器应用实例 144
7.4 PWM定时器拓展实验——蜂鸣器实验 153
7.5 本章小结 157
第8章 玩转UART 158
8.1 UART概述 158
8.2 UART的操作 160
8.3 UART的工作模式 163
8.4 UART的相关寄存器 166
8.5 UART接口应用实例 178
8.5.1 UART接口硬件电路分析 178
8.5.2 UART的操作方法与步骤 179
8.5.3 UART程序设计与代码详解 180
8.5.4 UART实例测试 184
8.6 本章小结 189
第9章 挑战启动流程 191
9.1 S5PV210处理器启动流程概述 191
9.1.1 启动流程的3部曲 193
9.1.2 安全启动(Secure Booting) 196
9.2 深入理解S5PV210处理器的启动流程 197
9.2.1 启动设备的选择 197
9.2.2 S5PV210处理器的启动流程图 200
9.2.3 BL1阶段代码的结构 202
9.2.4 BL1头部信息的制作工具 204
9.2.5 启动过程中的内存映射 207
9.3 本章小结 209
第二篇 Android应用开发连连看 212
第10章 传说中的Android 212
10.1 什么是Android 212
10.2 Android历史 216
10.3 Android开发介绍 217
10.4 Android初体验 218
10.5 本章小结 218
第11章 Android开发平台搭建 219
11.1 操作系统平台 219
11.2 软件安装 220
11.2.1 JDK安装 220
11.2.2 Eclipse、Android SDK安装 223
11.2.3 开发平台测试 225
11.3 本章小结 226
第12章 第一个Android应用程序 227
12.1 Hello World项目分析 227
12.1.1 新建工程 228
12.1.2 编译运行 231
12.1.3 导入工程 233
12.1.4 程序实现 235
12.2 程序调试技巧 235
12.2.1 设置断点 236
12.2.2 单步执行 237
12.2.3 查看变量 238
12.2.4 下载到TQ210开发板 239
12.3 本章小结 241
第13章 Android基本组件大串烧 242
13.1 文本框(TextView) 243
13.1.1 实例编程实现 243
13.1.2 实例演示 247
13.2 编辑框(EditText) 250
13.2.1 实例编程实现 250
13.2.2 实例演示 252
13.3 按钮(Button) 253
13.3.1 实例编程实现 253
13.3.2 实例演示 255
13.3.3 Button扩展实验——消息响应 256
13.4 进度条 257
13.4.1 实例编程实现 257
13.4.2 实例演示 261
13.5 Android进阶——Intent和Activity 261
13.5.1 实例编程实现 262
13.5.2 实例演示 267
参考文献 268