学习Android系统移植与驱动开发的心得1

首先,学习Android系统移植与驱动开发,我们需要了解两个概念。什么是“移植”?由于Android原生的代码支持的设备并不多,因此我们想要在自己的设备上完美运行Android,就需要另外开发一些程序,使得Android可以识别相应设备中的各种硬件,这个过程被称为“移植”。在这个移植的过程中,我们必需要了解另外一个知识,就是“驱动开发”(Android是基于Linux内核的)。到底什么是“Linux驱动”呢?作为初学者,我们只需要知道任何的Linux驱动都有一个加载函数和一个卸载函数即可,它们分别通过module_init和module_exit宏指定。

在这样一个感性的认识之后,我们要知道Android是一个非常棒的嵌入式操作系统。它有自己完善的系统架构,分为4层:第1层,Linux内核,Android使用Linux2.6内核,在以后的学习中,只需要掌握这个版本就好了。第2层,C/C++代码库,主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码。第3层,由于Android SDK API是用Java语言编写的,因此,这一层又可以叫做Java API层。这一层就是用Iava编写的各种Library。第4层,应用程序,相当于Android的UI。这一层是所有Android用户需要接触的。

然而,要使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件平台的CPU架构。当然,这还是不够的,还需要移植Linux驱动,这些工作主要是由Linux内核完成的,主角是Linux驱动。除此之外,在Android系统中还增加了一个Hardware Abstraction Layer,HAL ,硬件抽象层,不过HAL不是必需的。

最后,我们总结一下,“如何学习Linux驱动开发?”学习Linux驱动开发只有Linux内核还不行,还需要有一个真正的操作系统来搭建Linux驱动的开发环境,并在该系统下测试Linux驱动。学习Linux驱动必须掌握的技术有:GNU C,它是对标准C的扩展。除此之外,还需要了解一些与驱动相关的硬件知识。为了测试Linux驱动在Android中的运行效果,最好准备一块开发板。当开发完成驱动程序后,需要在支持Android的开发板上测试驱动程序是否能正确运行。

 

http://www.cnblogs.com/zhanghui4521

posted @ 2016-04-10 11:52  bbbox  阅读(1500)  评论(0编辑  收藏  举报