Android嵌入式系统程序开发(基于Cortex-A8)

更多详情


内容简介: 《Android嵌入式系统程序开发(基于Cortex-A8)》主要分为三部分,包括软件篇、硬件篇和项目篇。软件篇从Android 体系结构和开发环境搭建,以及Android 应用程序开发等方面构造了一个完整的Android 开发流程;硬件篇重点讲解了S5PV210硬件结构和Android系统移植,详细介绍了底层驱动的封装、中间层jni 的制作,以及上层UI的设计;项目篇提供完整的综合应用项目的程序开发实例,详细介绍了开发过程和原始程序代码。并且安排了丰富的实验内容与实践,让读者深刻理解和掌握嵌入式系统开发的整个过程,了解底层驱动程序驱动硬件的原理和上层应用程序的设计方法。
《Android嵌入式系统程序开发(基于Cortex-A8)》内容丰富实用、层次清晰、叙述详尽,方便教学与自学。本书可作为高等院校计算机类、电子类和控制类等专业高年级本科生、研究生学习嵌入式Android程序开发的教材,也可作为全国大学生电子设计竞赛培训教材,以及工程技术人员进行嵌入式系统开发与应用的参考书。

目录: 《Android嵌入式系统程序开发(基于Cortex-A8)》
前言
软件篇
第 1 章 Android体系结构及开发环境 / 2
1. 1 Android体系结构介绍 / 2
1. 1. 1 应用程序 / 3
1. 1. 2 应用程序框架 / 3
1. 1. 3 函数库 / 4
1. 1. 4 Linux内核 / 4
1. 2 搭建Windows下的开发环境 / 5
1. 2. 1 安装JDK / 5
1. 2. 2 安装Eclipse / 6
1. 2. 3 安装ADT / 6
1. 2. 4 安装SDK / 7
1. 2. 5 创建Android虚拟设备 / 9
1. 3 搭建Linux下的开发环境 / 11
1. 3. 1 安装JDK / 11
1. 3. 2 安装Eclipse / 12
1. 3. 3 安装ADT / 13
1. 3. 4 安装SDK / 15
1. 3. 5 创建Android虚拟设备 / 17
1. 4 搭建NDK开发环境 / 20
1. 4. 1 NDK开发环境与安装目录 / 20
1. 4. 2 系统和软件需求 / 20
1. 4. 3 Windows 平台NDK环境搭建 / 21
1. 4. 4 Linux平台NDK环境搭建 / 25
第2章 第一个应用程序 / 28
2. 1 第一个HelloEveryone / 28
2. 1. 1 创建第一个Android项目HelloEveryone / 28
2. 1. 2 Android应用工程组成 / 29
2. 2 调试Android应用程序 / 30
2. 2. 1 修改Android项目 / 30
2. 2. 2 设置断点 / 34
2. 2. 3 启动调试 / 34
2. 2. 4 单步跟踪 / 34
2. 2. 5 真机调试 / 35
2. 3 Android应用程序组成 / 35
2. 3. 1 Activity介绍 / 36
2. 3. 2 Intent介绍 / 40
2. 3. 3 Broadcast Receiver介绍 / 43
2. 3. 4 Service介绍 / 43
2. 3. 5 Content Provider介绍 / 44
2.4 使用AndroidManifest文件定义应用程序 / 44
2. 4. 1 管理应用程序身份 / 46
2. 4. 2 注册Activity和其他应用程序组件 / 46
2. 4. 3 使用许可权限 / 48
2. 4. 4 指定应用程序所需输入设备和软件 / 49
2. 4. 5 使用库和Android SDK版本 / 50
2. 4. 6 定义应用程序的其他配置参数 / 50
第3章 Android应用程序开发 / 51
3. 1 控件简介 / 51
3. 1. 1 视图控件 / 51
3. 1. 2 布局控件 / 51
3. 1. 3 布局参数 / 51
3. 2 常用Widget控件介绍 / 52
3. 2. 1 用Widget控件创建Android项目 / 52
3. 2. 2 按钮 / 53
3. 2. 3 文字框 / 54
3. 2. 4 编辑框 / 55
3. 2. 5 多项选择框 / 57
3. 2. 6 单项选择框 / 59
3. 2. 7 下拉列表 / 60
3. 2. 8 自动完成文本 / 61
3. 2. 9 日期、时间选择器 / 62
3. 2. 10 进度条 / 64
3. 2. 11 拖动条 / 65
3. 2. 12 图片视图 / 66
3. 2. 13 基于网格索引的图片浏览器 / 67
3. 2. 14 选项卡 / 70
3. 2. 15 列表 / 72
3. 2. 16 图片按钮 / 73
3. 2. 17 拖动效果 / 74
3. 3 Activity转换和Intent消息传递 / 76
3. 3. 1 Activity转换 / 76
3. 3. 2 Intent消息传递 / 78
3. 4 Menu设计修改 / 80
3. 5 对话框实例 / 82
3. 6 Toast和Notification应用 / 85
3. 7 数据库应用 / 87
3. 7. 1 SQLite数据库介绍 / 87
3. 7. 2 Android平台对SQLite数据库的支持 / 88
3. 7. 3 SQLite数据库应用模式 / 89
3. 7. 4 SQLite数据库开发实例 / 90
3. 7. 5 基于SQLite数据库的日记账工具 / 97
硬件篇
第4章 Android系统移植 / 112
4. 1 Android 结构介绍 / 112
4. 2 Android 内核结构和设备驱动 / 113
4. 2. 1 Android内核源代码结构 / 113
4. 2 .2 Android常用设备驱动 / 115
4. 3 Android 内核基本配置 / 121
4. 3. 1 Android内核中的Kconfig文件 / 122
4. 3. 2 Android内核配置选项 / 122
4. 4 Android内核编译 / 125
4. 4. 1 Android内核中的Makefile文件 / 126
4. 4. 2 解压Android内核源代码 / 127
4. 4. 3 编译Android 内核 / 127
4. 5 DMA-210XP平台Android文件系统烧写 / 128
4. 5. 1 烧写u-boot到Nand Flash / 128
4. 5. 2 烧写zImage内核映像文件 / 131
4. 5. 3 烧写ramdisk-uboot.img映像文件 / 132
4. 5. 4 烧写Android System.img文件 / 132
4. 5. 5 烧写Android userdata.img文件 / 133
4. 5. 6 启动Android系统 / 133
4. 5. 7 TF卡自动更新kernel和Android系统文件 / 134
第5章 S5PV210硬件结构 / 135
5. 1 S5PV210微处理器 / 135
5. 1. 1 概述 / 135
5. 1. 2 S5PV210体系结构 / 135
5. 1. 3 S5PV210关键特性 / 135
5. 2 GPIO接口 / 146
5. 2. 1 GPIO概述 / 146
5. 2. 2 GPIO专用寄存器 / 147
5. 2. 3 GPIO接口应用举例 / 154
5. 3 PWM定时器 / 156
5. 3. 1 PWM概述 / 156
5. 3. 2 PWM操作 / 156
5. 3. 3 PWM专用寄存器 / 158
5. 3. 4 PWM接口应用举例 / 162
5. 4 DMA控制器 / 164
5. 4. 1 DMA概述 / 164
5. 4. 2 DMA专用寄存器 / 165
5. 5 UART串行接口 / 169
5. 5. 1 UART接口特性 / 169
5. 5. 2 UART操作 / 170
5. 5. 3 UART专用寄存器 / 173
5. 5. 4 UART接口应用举例 / 179
5. 6 SPI接口 / 183
5. 6. 1 SPI接口特性 / 183
5. 6. 2 SPI操作 / 183
5. 6. 3 SPI专用寄存器 / 185
5. 6. 4 SPI接口应用举例 / 190
5. 7 IIC总线接口 / 194
5. 7. 1 IIC概述 / 194
5. 7. 2 IIC操作 / 194
5. 7. 3 IIC专用寄存器 / 198
5. 7. 4 IIC接口应用举例 / 200
5. 8 ADC及触摸屏接口 / 203
5. 8. 1 ADC及触摸屏特性 / 204
5. 8. 2 功能描述 / 205
5. 8. 3 ADC及触摸屏专用寄存器 / 206
5. 8. 4 ADC 转换应用举例 / 210
第6章 接口驱动程序开发 / 212
6. 1 LED接口及驱动程序 / 212
6. 1. 1 LED驱动电路 / 212
6. 1. 2 LED驱动程序分析 / 215
6. 1. 3 LED驱动程序Makefile文件 / 218
6. 1. 4 LED驱动测试 / 218
6. 1. 5 LED界面设计 / 219
6. 1. 6 LED JNI设计 / 225
6. 1. 7 LED程序测试 / 228
6.2 背光调节控制程序 / 230
6. 2. 1 背光控制接口 / 230
6. 2. 2 背光驱动设计 / 233
6. 2. 3 背光界面设计 / 235
6. 2. 4 背光JNI设计 / 241
6. 2. 5 背光程序测试 / 243
6.3 键盘接口及驱动程序 / 244
6. 3. 1 键盘接口 / 244
6. 3. 2 内核驱动 / 249
6. 3. 3 键盘界面设计 / 253
6. 3. 4 键盘程序测试 / 258
6.4 UART串行接口及通信程序 / 258
6. 4. 1 UART串行接口 / 258
6. 4. 2 Linux串行接口操作 / 262
6. 4. 3 UART界面设计 / 263
6. 4. 4 UART JNI设计 / 272
6. 4. 5 UART程序测试 / 275
6.5 ZigBee接口及通信程序 / 276
6. 5. 1 ZigBee介绍 / 276
6. 5. 2 ZigBee接口设计 / 277
6. 5. 3 ZigBee JNI设计 / 291
6. 5. 4 ZigBee程序测试 / 296
6.6 Wi-Fi接口及通信程序 / 297
6. 6. 1 Wi-Fi介绍 / 297
6. 6. 2 Wi-Fi程序设计 / 300
6. 6. 3 Wi-Fi程序测试 / 307
6.7 3G接口及通信程序 / 307
6. 7. 1 3G介绍 / 308
6. 7. 2 3G程序设计 / 310
6. 7. 3 3G程序测试 / 315
6.8 MediaPlayer播放器程序 / 317
6. 8. 1 MediaPlayer介绍 / 317
6. 8. 2 MediaPlayer程序设计 / 320
6. 8. 3 MediaPlayer程序测试 / 327
项目篇
第7章 Android嵌入式组态软件 / 330
7. 1 Android嵌入式组态软件介绍 / 330
7. 2 Android嵌入式组态软件结构 / 330
7. 3 Android嵌入式组态软件界面设计 / 332
7. 3. 1 界面设计 / 332
7. 3. 2 界面内容添加 / 332
7. 4 Android嵌入式组态软件功能选择区设计 / 339
7. 4. 1 界面设计 / 340
7. 4. 2 IO设计 / 352
7. 4. 3 数据库设计 / 354
7. 5 Android嵌入式组态软件辅助功能区设计 / 359
7. 6 Android嵌入式组态软件程序生成区设计 / 360
7. 6. 1 Android嵌入式组态软件程序生成区功能介绍 / 360
7. 6. 2 Android嵌入式组态软件程序生成区的代码实现 / 361
第8章 GPS与Google Map定位系统 / 374
8. 1 MyMap服务系统 / 374
8. 2 Android Google Map / 375
8. 2. 1 申请Google Map Android API Key / 375
8. 2. 2 编写Google Map框架程序 / 376
8. 2. 3 控制地图 / 378
8. 2. 4 地图的显示模式 / 380
8. 2. 5 地图的图层 / 383
8. 2. 6 查询与定位 / 385
8. 3 Android定位服务 / 391
8. 3. 1 开启定位服务 / 391
8. 3. 2 模拟测试 / 393
8. 3. 3 GPS与GoogleMap定位 / 395
8. 4 案例重构 / 396
8. 4. 1 地图的显示模式 / 396
8. 4. 2 重构“查询方法” / 398
第9章 3D物理传感器游戏——小球快跑 / 401
9. 1 游戏背景及功能概述 / 401
9. 1. 1 背景概述 / 401
9. 1. 2 功能概述 / 401
9. 2 游戏的策划及准备工作 / 403
9. 2. 1 游戏的策划 / 403
9. 2. 2 小球快跑游戏开发的准备工作 / 403
9. 3 游戏的架构 / 404
9. 3. 1 游戏的总体架构 / 404
9. 3. 2 游戏的类结构 / 405
9. 4 DriftBall类的开发 / 406
9. 4. 1 DriftBall类的代码框架 / 406
9. 4. 2 DriftBall类的主要成员方法的实现 / 407
9. 5 游戏主菜单的开发 / 409
9. 5. 1 WelcomeView类的代码框架 / 409
9. 5. 2 WelcomeView类的主要成员方法的实现 / 410
9. 5. 3 WelcomeThread类的开发 / 412
9. 5. 4 菜单界面的用户交互事件处理 / 413
9. 6 游戏界面模块的开发 / 414
9. 6. 1 GameView的成员变量 / 414
9. 6. 2 GameView的成员方法概述 / 415
9. 6. 3 GameThread类的代码框架 / 416
9. 6. 4 GameMenuThread类的开发 / 417
9. 6. 5 用户交互事件处理 / 418
9. 7 游戏中各个图层的开发 / 419
9. 7. 1 地图图层的开发 / 419
9. 7. 2 其他图层的开发与实现 / 421
9. 8 游戏后台逻辑的开发 / 424
9. 8. 1 小球的运动控制 / 424
9. 8. 2 小球的碰撞检测 / 425
9. 8. 3 Cannon和Missile类的开发 / 428
9. 9 传感器计算模块的开发 / 432
9. 9. 1 BallListener类的开发 / 432
9. 9. 2 RotateUtil类的代码框架 / 433
9. 9. 3 RotateUtil类的开发 / 435
参考文献 / 438

前言: 本书的特点是以嵌入式操作系统Android和Cortex-A8微处理器S5PV210为基础,从Android 体系结构和搭建开发环境,以及Android应用程序开发等方面构造了一个完整的Android 开发流程。本书重点介绍了S5PV210硬件结构和Android系统移植,详细讲解了底层驱动的封装、中间层jni的制作,以及上层UI的设计,采用Java开发接口驱动程序。本书还提供了完整的综合应用项目的程序开发实例,介绍了功能模块设计和数据库设计,详细讲解了开发过程和原始程序代码;使读者深刻理解和掌握嵌入式系统开发的整个过程,了解底层驱动程序驱动硬件的原理和上层应用程序的设计方法,真正做到了底层驱动的开发与上层应用程序的开发相结合。
本书内容丰富实用、叙述详尽清晰,方便教学与自学。结合DMA-210XP平台的实验程序,有利于读者掌握Android系统的应用程序设计方法,培养读者综合分析、开发创新和工程设计的能力。通过本书的学习,读者可以快速提高Android的编程能力和实际开发水平。
全书分三部分,共9章。
第一部分:软件篇
第1章介绍了Android的体系结构,以及Android系统的整体架构的各层组成,并介绍了如何搭建Windows、Linux和NDK 下的开发环境。
第2章介绍了第一个HelloEveryone 的Android应用程序,以及Android应用程序组成,并介绍如何使用Android Manifest文件定义应用程序。
第3章介绍了Android应用程序开发过程中涉及的控件,介绍了Activity转换和Intent消息传递、Menu设计修改、对话框实例和Android本地数据库SQLite应用。
第二部分:硬件篇
第4章详细介绍了Android 内核结构和设备驱动、Android 内核基本配置、Android内核编译和DMA-210XP平台Android文件系统烧写过程。
第5章介绍了S5PV210的硬件结构,包括S5PV210微处理器、GPIO接口、PWM定时器、DMA控制器、UART串行接口、SPI接口、IIC总线接口和ADC及触摸屏接口。介绍了接口应用实例及驱动程序。
第6章介绍了在Android开发环境下,采用Java编写接口驱动程序。包括LED接口及驱动程序、背光调节控制程序、键盘接口及驱动程序、UART串行口及通信程序、ZigBee接口及驱动程序、Wi-Fi接口及通信程序、3G接口及驱动程序、MediaPlayer播放器程序等。
第三部分:项目篇
第7章介绍了嵌入式组态软件结构,以及界面设计、功能选择区设计、辅助功能区设计和程序生成区设计Android应用,采用Java开发嵌入式组态软件。
第8章以MyMap服务系统为实例,介绍Android Google Map、Android定位服务、案例重构,采用Java开发GPS与Google Map定位应用程序。
第9章以3D传感器动力球游戏为例,介绍小球快跑游戏背景及功能、游戏的架构,详细讲解了游戏主菜单、游戏界面模块,游戏中各个图层、游戏后台逻辑和传感器计算模块等的程序开发。
本书由胡文教授拟定编写大纲和目录。胡文编写了第6章和第7章,宁世勇编写了第2章和第3章,李明俊编写了第1章、第8章和第9章,金雪松编写了第4章和第5章。百度公司的胡玥,哈尔滨商业大学的李杨、赵艳丽、张凯、陈楠等人为本书的编写做了大量的工作,在此一并表示衷心感谢。本书在编写过程中,参考了大量的国内外著作和资料,得到了许多专家和学者的大力支持,并听取了多方面的宝贵意见和建议,在此也对他们表示衷心感谢。
由于时间仓促和作者水平所限,本书难免有疏漏和不足之处,敬请各位读者批评指正,以期再版时修订。
编者
2013年1月

媒体评论: 高通公司董事长兼首席执行官保罗·雅格布用“生而移动”来表述扑面而来的移动互联网浪潮。对于嵌入式开发工程师来说,能否在最短的时间里掌握适应未来移动世界的电子开发技能,决定着其未来职业发展方向和自身价值体现。熟悉并掌握ARM体系结构和Android平台的开发技能是两大必备的基础条件,而能够将两者的技术精髓吃透并熟练运用,则是高手中的高手。这是一本具有典型实战色彩的工具书,它以Android应用程序开发作为开篇,进而引入ARM Cortex-A8硬件平台的移植,最后以若干项目开发实例巩固前面的软硬件知识。因此,这是一本能够指导嵌入式开发工程师快速掌握移动开发的有用书籍。
——于寅虎 《电子产品世界》杂志社总编
作为基于Linux内核的自由及开放源代码的操作系统,Android系统采用了分层的系统体系结构,这就使得基于Android的开发不仅只是应用层的开发,还会涉及底层系统移植及驱动程序的开发。本书由浅入深地覆盖了从Android应用层到内核驱动开发的核心内容,并基于最新的Cortex-A系列的硬件平台详细阐述。本书有理论更注重实践,是系统学习Android开发的很好选择。
——季久峰 华清远见教育集团总裁