本书的第一章主要是对Android系统进行介绍,对Android系统移植前的准备工作进行了解,还有是对Linux内核及驱动进行讲解。
Android是已经形成了非常完善的嵌入式操作系统。Android的系统架构分为4层:第一层Linux内核,主要包括驱动程序以及管理内存、进程、电源等资源的程序;第二层C/C++代码库,主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码;第三层Android SDK API,直接面向应用程序的Java APK;第四层应用程序,直接面向最终用户的Java应用程序。所有的Android应用程序都属于这一层。
Android移植可分为两部分:应用移植和系统移植。
应用移植是指将第四层的应用程序移植到某一个特定硬件平台上。因为硬件平台之间存在差异,所以Android SDK API 之间也存在差异。
系统移植是指让Android操作系统在某一个特定硬件平台上运行。使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件平台的CPU架构。Linux本身就支持很多CPU架构。因此,系统移植除了移植CPU架构外,最重要的就是移植Linux驱动。
对于Linux内核而言,Linux内核版本号的命名是存在一定规则的。Linux内核版本号由主版本号、次版本号、修订版本号、微调版本号和为特定的Linux系统特别调校的描述组成。如何查看Linux内核的版本呢?只需要在终端输入cat/proc/version命令即可查看。
驱动针对的对象是存储器和外设。Linux将存储器和外设分为:字符设备、块设备、网络设备三大类。字符设备必须以串行顺序依次进行访问,块设备可以以任意顺序访问,网络设备则是面向数据包的接受和发送。
学习Linux驱动编程一定要了解Linux驱动只与Linux内核有关,与用户使用的Linux系统无关。学习Android驱动开发就是学习Linux驱动开发。