自第一款搭载Android系统的智能手机HTC G1发布至今已近6年,凭借日益完善与强大的功能、完全开放的内核源码以及Google公司在网络应用领域的无缝支持,Android系统从初出茅庐的行业新锐,已经成长壮大为手持设备智能化产业的推动者和市场的领导者,这一点已经毋庸置疑。
不可否认,众多独立软件开发者与商业软件公司的加入使Android系统不仅仅作为终端产品,还作为开发平台深入到各行业的技术开发中,包括学校、公司,乃至开发人员的工作、生活的各方面,这是Android系统旺盛生命力的表现,同时也是Android系统持续发展壮大的保障。近期,支持Android系统的开发板如Zynq、pcDuino等在功能不断完善的前提下成本也在大幅下降,助力了Android的推广与拓展;可穿戴设备以及嵌入式芯片的应用又将为Android系统及其软硬件开发提供新的发展机遇。接触Android领域、使用Android产品、学习Android系统,现在已经成为计算机软件、电子、自动化控制及相关专业的学生和已经参加工作的软硬件工程师的首选。
但是目前市场上同类的Android相关书籍中,多是介绍基于Android SDK的单纯应用程序(APP)的开发,且种类繁杂,对于Android的底层源码与系统内核的分析、驱动程序设计与存储优化、平台移植与内核测试等较为深入的内容则甚少涉及。为了对这些底层领域相关知识稍作弥补,作者编写了本书。
本书而用浅显易懂的语言向广大Android爱好者和开发人员讲解Android系统下嵌入式开发板的设计。
全书共8章,前3章为预备知识,简要介绍嵌入式系统的定义与软硬件开发以及Android开发环境的搭建。这一部分为基础知识,有一定Linux基础和Android开发经验的读者可以选读。
第4~6章为系统结构,主要介绍Android系统的源码结构、内核与相关工具以及环境库。内容包括:Android源码结构、init初始化脚本、Zygote、Android系统编译;Android内核启动、Binder框架、Ashmem内存管理、系统日志Logger实现;Android开发工具、Dalvik虚拟机、JNI、Boot Loader。
第7章为驱动设计,主要介绍Android系统中常用外接设备的驱动架构以及实现。内容包括NDK编程、Android中HAL模型架构与实现流程。作为教学实例,最后还分析了Android系统中的Camera与WiFi两个功能部件的驱动设计。
第8章为实例分析,介绍具体开发板硬件结构的编程原理以及系统级的实例。在简要介绍系统底层开发流程的基础上,首先分析主流的Zynq和pcDuino平台上开发环境的搭建、Linux内核以及Android系统的编译、下载;然后结合前文学习过的知识点,从零开始设计LED显示系统的Linux内核驱动、Android HAL支持和服务层设计、顶层App的实现;作为进阶部分,最后介绍了对Android内核进行跟踪调试与性能测试的工具软件、工作流程以及结果分析。
致谢
在此要特别感谢华章公司的策划编辑张国强,是他对Android和嵌入式系统开发的关注促成了本书的出版。笔者在撰写书稿时,他也对本书提出了宝贵的写作建议,并进行了仔细的审阅。
本书的编写同样离不开许多朋友的支持,在此特别感谢兰州大学信息科学与工程学院的陈华明的大力协助,这本书的出版离不开他的贡献。
还要感谢兰州大学的高博、郭守超、王小强和朱芳芳,感谢他们在本书编写过程中所给予的帮助与建议。