Android 的 HAL (硬件抽像层)是 Google 因应厂商“希望不公开源码”(就是为了避开linux kernel的GPL license的束缚)的要求下,所推出的新观念。HAL 的目的是为了把 Android framework 与 Linux kernel 完整“隔开”,简而言之,Android把控制硬件的动作都放到了user space中,而再kernel driver里面只有最简单的读写寄存器的操作,而完全去掉了各种功能性的操作(比如控制逻辑等),这些能够体现硬件特性的操作都放到了Android的HAL层,而Android是基于Aparch的license,因此硬件厂商可以只提供二进制代码,所以说Android只是一个开放的平台,并不是一个开源的平台。让 Android 不至过度依赖 Linux kernel ,让 Android framework 的开发能在不考虑驱动程序的前提下进行发展。
由于Android的Java层级只是一个外壳框架而已,大部分的系统组件(Android本身)都是在Nataive层(又称C/C++层)执行。这是Android的整体架构,所以我们的应用程序也必须考虑分为两层的必要性,才能完全的融入Android的整体架构里。我们看到的Android应用架构(Application Framework)其实只是Android整体架构里的外壳结构而已。
第01堂課:Hardware Abstract Layer 架构与驱动模块开发
1.1 Service与Manager的内涵1.2 libhardware 与 HAL API
1.3 Stub & Module 的理念
1.4 HAL Stub Analysis and Design (OOAD)
1.5 HAL Stub