Android系统移植与驱动开发概述
1.Android系统架构分为四层:linux内核,Android是基于linux内核的。
c/c++代码库,包括C/C++编写的代码库,包括dalivk虚拟机的运行时。
Android SDK API,这一层实际是JAVA编写的各种library。
应用程序,这一层相当于Android的UI,通过第三层中的Android SDK API来完成各种功能。
2.Android移植分为应用移植和系统移植。应用移植是将第四层的应用程序移植到某一个硬件平台上。系统移植则是指让Android操作系统在某一个特定硬件平台上运行,是一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件平台的CPU架构
3.HAL表示硬件抽象层,是普通的linux程序库(.so文件),Android SDK通过HAL直接访问linux驱动。对有些来说它并不是必需的,通过NDK可直接访问Linux驱动。
4.安卓移植的主要工作:移植linux驱动,移植HAL。很大程度上是内核的移植,linux内核移植主要就是移植驱动程序。判断Linux内核是否相同的方法是Linux的内核版本号,内核相同,驱动可通用。
5.计算机系统硬件由CPU,存储器,外设组成,将存储器和外设分为三大类:字符设备,块设备,网络设备。
6.Linux驱动核心代码用C语言实现,控制开发板上的四个LED灯。
Linux驱动都有一个装载函数(用来装载驱动)和一个卸载函数(用来卸载函数)。
7.驱动是直接和硬件和交互的一类程序。
8.查看linux系统的内核版本的两种方法:
(1)执行下列命令 uname -a
(2)linux终端执行以下命令 cat /proc/version
/proc不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的,以文件系统的方式访问系统内核数据的操作提供接口。
9.linux内核版本号有主版本号,次版本号,修订版本号,微调版本号,为特定的linux系统特别调校的描述组成
本章对android以及linux做了总体的介绍,刚开始,自己确实不明白什么是Linux驱动,接触的比较少,对核心代码自己并写不出来,感觉十分困惑,但还是认真的看了,学习android驱动开发,实际上就是学习linux驱动开发,android增加了一个HAL。