Android深度探索(卷1)HAL与驱动开发

第一章 介绍Android驱动开发和移植技术

主要对android和linux做了总体的介绍,让我们有了个感性的认识。

一、Android的四层系统架构:

a) Linux内核:Android是基于Linux内核的,所以它和linux的其他部分差异非常小,包括Linux的驱动以及内存管理,进程管理,带电源管理等程序。

b) C/C++的代码库:C/C++编写的代码库,也就是Linux下的.so文件以及dalvik虚拟机的运行时哦!

c) Android SDK API:用java语言编写的各种Library,而这些library是基于虚拟机格式的呢!

d) 应用程序:是用户(程序员和非程序员)所接触到的。

二、Android系统移植的主要工作:应用移植和系统移植。应用程序是将应用程序层的程序移植到某一个特定硬件平台上;系统移植是让Android操作系统在某一个特定硬件平台上运行。

三、查看Linux内核版本:Linux内核版本包括三个:linux2.4、linux2.6、linux3.x;查看方法有两个:1.在linux终端下执行uname -a命令;2.在linux终端下执行cat /proc/version命令。

四、版本号定义的原则:主要包括主版本号、次版本号、修订版本号、微调版本号、为特定的linux系统特别调校的描述。

五、学习驱动开发:我们需要搭建一个真正的linux操作系统环境,初学者呢最好还是使用Ubuntu linux的系统。

六、Linux设备驱动:是直接和硬件交互的一类程序哦,负责对硬件进行抽象的呢,有字符设备、网络设备、块设备。

七、小实验:利用驱动控制开发板上的3个LED灯,实现了对设备驱动的控制。

第二章 搭建Android开发环境

本章主要介绍了Ubutn linux下android开发环境的配置,具体如下:

一、Android底层开发需要的工具:JDK6或以上版本、Eclipse3.4或以上版本、ADT、CDT、Android SDK、Android NDK、交叉编译环境、linux内核源代码、Android源代码、调试串口的开发板工具minicom。

二、安装JDK:下载压缩包、解压、用gedit /etc/profile设置PATH环境变量,设置完成之后保存profile文件后,在终端输入source /etc/profile可重新装载profile,可以利用echo $PATH查看环境变量。

三、搭建Android应用程序开发环境:安装Android SDK、安装Eclipse、安装ADT、配置ADT、建立AVD。

四、安装Android NDK开发环境:下载Android NDK、安装CDT、命令方式编译Android NDK程序、导入Android NDK的例子、配置Android NDK的集成开发环境。

五、安装交叉编译环境:X86架构的cpu采用的是复杂指令集计算机,可以直接下载集成好的交叉编译环境,也可以自己制作交叉编译环境。CodeSourcery交叉编译环境就是下载好的交叉编译好的环境,可以直接下载安装使用,安装时使用sh package.bin命令,也可以使用虚拟环境中的交叉编译环境,Windows和Mac OSX跟linux的交叉编译环境也是大同小异。

第三章 Git使用入门

一、内核的很多代码以及很多项目(eclipse、android等)都使用了linux之父linus编写的git级逆行代码管理,linus独特的设计让git拥有非凡的性能和最为优化的存储能力。安装Git:1)Ubuntu linux10.10或更新的版本可以使用下面的命令安装Git:apt-get install git;apt-get install git-doc git-svn git-email git-gui gitk;2)Ubuntu 10.04或更低的版本可以用下面的命令:apt-get install git-core;apt-get install git-doc git-svn git-email git-gui gitk;3)RHEL、Fedora、centOS用户可以使用以下命令安装:yum install git;yum install git-doc git-svn git-email git-gui gitk。

二、查看Git文档:通常使用man命令直接查看帮助文档需要命令:man git-checkout;以文本形式查看需要命令:git help <sub-command>;查看checkout命令的文档需要命令:git help git-checkout;查看HTML格式的文件需要命令:git help -w git-checkout。

三、源代码的提交和获取:任何版本管理软件都有版本库,不同的是要对版本库的管理方式,所以必须创建版本库:git init;需要将文件提交到本地版本库:git commit;创建本地分支:git branch,也可以使用git branch new-branch创建新分支;切换本地分支:git checkout;在GitHub上创建新的开源项目;上传源代码到GitHub:git push;从GitHub下载源代码:git clone,可以使用如下命令下载整个工程:git clone git@github.com:androidguy/helloword.git。

第四章 源代码的下载和编译

一、下载、编译和测试源代码,安卓源代码有很多呢,比如:应用程序(QQ、微信、短信、电话、日历等)的源代码和SDK插件(adb、aapt等)的源代码、还有NDK的源代码等等。

操作步骤为:1.首先需要配置android源代码下载环境:(1)创建一个用于存放下载脚本文件(repo)的目录(可将该脚本文件放到任何目录中,使用~/bin);(2)下载repo脚本(用于下载源代码);(3)创建用于存放android源代码的目录(可放在其他目录中);(4)初始化;(5)开始下载android源代码;在下载代码的时候git会尽可能的占用宽带网速,所以会做不了其他的事情,如果要备份源代码,则不能删除android代码库(.git目录);2.android源代码目录结构解析,在这儿需要建立保存源代码的目录;3.下载android源代码中的一部分需要我们了解源代码的目录结构,这样就不需要等待很长时间下载android源代码的目录,有两个方法:使用reop sync命令;使用git clone命令;4.编译android源代码时需要调用android.mk文件来编译当前工程:(1)初始化编译环境;(2)选择目标;(3)编译android源代码;5.out目录结构分析;6.将自己的APK作为内置程序发布,这儿将会生成自己的apk程序嵌入到system.img文件中,删除apk程序需要获得root权限并直接删除apk文件;7.用模拟器测试system.img文件,这儿会重新生成system.img文件。

二、下载和编译linux内核源代码:下载linux内核源代码;这里下载的android代码并没有包含linux内核源代码,需要单独下载,这儿有下载内核源代码的步骤:git clone http://android.googlesource.com.kernel/common.git,执行这个命令可以下载到最新的内核源代码,查看当前的远程版本用git branch -a ,使用git checkout -b android-3.0 remotes/origin/android-3.0到处android3.0的内核;linux内核源代码的目录结构;安装android内核的编译环境:准备工作;解压编译器;验证交叉编译器是否安装成功;安装libncurses5;配置和编译linux内核。现在已经成功的搭建了交叉编译环境,可以尽情使用吧!

上一篇:java系列--EL和JSTL


下一篇:C#多线程编程之:异步事件调用