Android目前目前占有了智能手机操作系统的大部分市场份额,是目前手机操作系统开发的主流。同时Android是在linux的基础上开发的,所以Android的内核和linux内核大部分相同。由于Android的原生代码支持的设备并不多,因此需要额外的开发一些程序,使Android可以识别相应设备的硬件。Android的系统架构一共有四层,其中包括:应用程序,Android SDK API,C/C++代码库,Linux内核。Android系统移植的主要工作包括:应用移植和系统移植。其中应用移植是应用程序移植到某一个特定的硬件平台上。而系统移植则是指Android操作系统在某一个特定的硬件平台上运行。要使操作系统在硬件平台上运行首先要支持相应的CPU架构,其次需要识别平台上的各种硬件则必须移植驱动,最后需移植HAL(硬件抽象层)。
Linux内核的版本目前主要维护Linux2.4,Linux2.6和Linux3.x.其中Linux2.6是使用最广泛的版本,Android就是使用了其内核版本。Linux内核版本号有下面几部分组成:主版本号;次版本号;修订版本号;微调版本号以及为特定的Linux系统特别调校的描述。学习Linux驱动需要做一些相应的准备,例如:一个自己熟悉的操作系统,学习相关的硬件知识,学医GNU C等。驱动是直接和硬件交互的一类程序,负责对硬件进行抽象。驱动针对的对象是存储器和外设,而不是针对CPU核。Linux将存储器和外设分为3大类:字符设备,块设备,网络设备。
关于Android的驱动开发与Linux的驱动开发可以说是大同小异,学习Android可以相应的借鉴Linux。同时学习其特有的东西。这样两门课程就可以相辅相成。