Android深度探索(卷1):HAL与驱动开发 - (EPUB全文下载)

文件大小:0.63 mb。
文件格式:epub 格式。
书籍内容:

Android深度探索(卷1):HAL与驱动开发
第一篇 Android驱动开发前的准备
第二篇 Android底层开发入门
第三篇 Linux驱动开发高级技术
第四篇 Linux设备驱动与Android底层开发
版权
第一篇 Android驱动开发前的准备
Android系统移植与驱动开发概述
搭建Android开发环境
Git使用入门
源代码的下载和编译
搭建S3C6410开发板的测试环境
第1章 Android系统移植与驱动开发概述
毋庸置疑,Android 已经成为当前智能手机操作系统的老大,市场占有率已遥遥领先于 iOS (IPhone 和 IPad)。Android 在几年时间发展如此神速,在很大程度上取决于任何人都可以利用Android的源代码定制完全属于自己的嵌入式系统,而不需要向Google交一分钱。
由于Android原生的代码支持的设备并不多,因此,要想在自己的设备(包括手机、MP4、智能电视、平板电脑、车载系统等)上完美运行 Android,就需要另外开发一些程序,使得 Android可以识别相应设备中的硬件(显示器、蓝牙、音频、Wi-Fi等)。这个为特定设备定制Android的过程被称为“移植”。那么,在移植的过程中开发得最多的就是支持各种硬件设备的Linux驱动程序(Android是基于Linux内核的)。因此,讲移植就必须要讲驱动开发。
本章作为学习Linux驱动的第一道门,将对Android以及Linux驱动做一个总体的介绍,以便使读者对开发Linux驱动有一个感性的认识,并为更好地学习Linux驱动的方法和技巧打下基础。
1.1 Android系统架构
Android 是一个非常优秀的嵌入式操作系统。经过几年的发展和演进,Android 已经形成了非常完善的系统架构,如图1-1所示。
▲图1-1 Android系统架构
从图1-1可以看出,Android的系统架构分为4层。这4层所包含的内容如下。
第1层:Linux内核
由于Android是基于Linux内核的,因此,Android和其他Linux系统(如Ubuntu Linux、Fedora Linux等)的核心部分差异非常小。这一层主要包括Linux的驱动程序以及内存管理、进程管理、电源管理等程序。Android使用Linux 2.6 作为其内核。不过不同版本的Android使用的Linux内核版本有细微的差异,所以不同Android版本的驱动可能并不通用。本书主要讲的就是开发第1层的驱动程序,以及如何在不同Linux版本、硬件平台移植驱动程序。
第2层:C/C++代码库
这一层主要包括使用C/C++编写的代码库(Linux下的.so文件),也包括Dalivk虚拟机的运行时(Runtime)。
第3层:Android SDK API
由于Android SDK API是用Java 语言编写的,因此,这一层也可称为Java API层。实际上,这一层就是用Java编写的各种Library。只不过这些Library是基于Dalvik虚拟机格式的。笔者所著《Android开发权威指南》主要就是介绍了这一层的Android SDK API 的使用方法及技巧。
第4层:应用程序
这一层是所有的 Android 用户(包括程序员和非程序员)都要接触到的。因为这一层相当于Android的UI。所有的Android应用程序(包括拍照、电话、短信、Android的桌面、浏览器以及各种游戏)都属于这一层。而这一层主要依靠第3层中的Android SDK API 来完成各种功能。
1.2 Android系统移植的主要工作
Android移植可分为两部分:应用移植和系统移植。应用移植是指将如图1-1所示第4层的应用程序移植到某一个特定硬件平台上。由于不同硬件平台之间的差异,Android SDK API 也有可能存在差异(有的厂商会修改部分Android SDK API 以适应自身硬件的需要),或者将应用程序从低版本Android移植到高版本的Android上。为了保证应用程序可以在新的硬件平台正常运行,需要对源代码进行一些修改。当然,如果没有或无法获取源代码,只有重新在新的平台上实现了。一般Android应用移植并不涉及驱动和HAL程序库(Android新增加的硬件抽象层,将在后面的章节介绍)的移植,而且Android应用程序移植也不在本书讨论的范围内,因此,本书后面出现的Android移植都是指Android操作系统的移值(包括Linux驱动、HAL程序库的移植)。
Android系统移植是指让Android操作系统在某一个特定硬件平台上运行。使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件平台的CPU架构。Linux 内核本身已经支持很多常用的CPU架构(ARM、X86、PowerPC等),因此,将Android在不同的CPU架构之间移植并不用做过多的改动(有时仍然需要做一些调整)。要想Android在不同硬件平台上正常运行,只支持CPU架构还不行,必须要让Android可以识别平台上的各种硬件(如声卡、显示器、蓝牙设备等)。这些工作主要也是由Linux内核完成的。其中的主角就是Linux驱动。因此,系统移植除了移植CPU架构外,最重要的就是移植Linux驱动。例如,为硬件平台增加了一个新型的Wi-Fi模块,就需要为这个Wi-Fi模块编写新的驱动程序,或修改原来的驱动程序,已使得Linux内核可以与Wi-Fi模块正常交互。
除了 Linux 驱动需要移植外,在 Android 系统中还增加了一个硬件抽象层(HAL,Hardware Abstraction Layer),为了方便,本书后面的部分都使用HAL表示硬件抽象层。
HAL 位于如图1-1所示的第2层,也是普通的Linux程序库(.so文件),只是Android SDK 通过HAL直接访问Linux驱动。也就是说,Android并不像其他的Linux系统一 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » Android深度探索(卷1):HAL与驱动开发 - (EPUB全文下载)