Android系统移植与驱动开发概述

 

1.1android系统架构

第一层 linux内核:驱动程序以及管理内存、进程、电源等资源的程序

第二层 c/c++代码库 linux的.so文件以及嵌入到APK程序中的NDK代码

第三层 android SDK API直接面向应用程序的JAVA APK

第四层 应用程序

1.2Android系统移植的主要工作

系统移植:让android操作系统在某一个特定平台上运行,条件是 操作系统支持硬件平台的CPU架构、移植linux驱动、移植HAL(HAL位于第二层,android SDK通过HAL直接访问linux驱动),后两个是android系统移植的主要工作。

应用移植:第四层的应用程序一直到一个特定平台上,由于硬件平台之间有差异,android SDK API有可能存在差异,需要对源代码进行修改,并不涉及驱动和HAL程序库

1.3查看内核版本

方法1:在linux终端执行:uname -a

方法2:在终端执行:cat /proc/version

1.4linux内核版本命名规则

1.5如何学习linux驱动

一个用于开发和测试linux驱动的linux操作系统

一块开发板 测试驱动程序是否能在支持android的开发板上正确运行

学习GUN C GUN C是对标准c的扩展

相关硬件知识并不断实践

1.6 linux设备驱动

将同一类型但不同型号的设备抽象成统一接口,这个接口就是驱动,驱动直接和硬件交互。

字符设备,块设备,网络设备

Linux都有一个装载函数(装载驱动时调用)mobule_init和一个卸载函数(卸载驱动时调用)mobule_exit

Linux驱动只与linux内核有关,与linux系统无关。只有内核版本号可以判断linux内核是否相同。学习android驱动开发本质上就是学习linux驱动开发,android比linux增加了一个HAL,不过HAL也不是必须的,通过NDK也可以直接访问linux驱动。

原文地址:https://www.cnblogs.com/orange921/p/5452155.html