浅谈Android系统移植、Linux设备驱动

时间:2023-03-08 17:17:54

一、Android系统架构

第一层:Linux内核

包括驱动程序,管理内存、进程、电源等资源的程序

第二层:C/C++代码库

包括Linux的.so文件以及嵌入到APK程序中的NDK代码

第三层:Android SDK API

包括用Java编写的各种Library

第四层:应用程序

这是程序员与非程序员都要接触到的应用程序

二、Android系统移植

首先,了解一个概念HAL(硬件抽象层),它位于第二层,普通的程序库(.so文件);

Android操作系统:AndroidSDK——>HAL——>Linux驱动;

Linux系统:应用程序——>Linux驱动;

先用一个例子说明一下,例如,为硬件平台增加了一个新型的Wi-Fi模块,就需要为这个Wi-Fi模块编写新的驱动程序,或修改原来的驱动程序,以使得Linux内核可以与Wi-Fi模块正常交互。

由此可知道,Android系统移植是让Android操作系统在某一个特定硬件平台上运行,即该操作系统支持硬件平台的CPU架构,要让Android可以识别平台上的各种硬件,主角就是Linux驱动。

注意:在移植Linux驱动时,主要考虑Linux内核版本,就算Android版本不同,只要Linux内核版本相同,Linux驱动就可以相互替换

三、Linux设备驱动

驱动就是直接和硬件交互的一类程序,负责对硬件进行抽象;提供应用程序可方位的API,只要应用程序通过驱动来访问硬件,就不需要修改应用程序的源代码。当有很多型号的打印指令不一样的打印机,同时被同一个应用程序调用,会出现不能使用的情况,当我们进行了驱动程序的开发,通过接口对类进行抽象,就可以大大降低硬件耦合度过高的情况,通过驱动来访问打印机。