http://blog.csdn.net/kunis/article/details/16918937
1,HAL定義
HAL(hardware abstraction layer)從字面意思理解,稱為硬件抽象層。它是Android framework層運行的基石,android系統上層所需要的所有有關硬件的操作都需要調用HAL相關的API,如GPS,BT,輸入設備,Graphocs,Camera,Audio等。每種硬件設備Android系統都規范了一些功能,各個設備的HAL就是實現這些功能(調用對應的驅動程序)的集合。如果vendor不想open source自己的driver,可以將部分設備功能實現在HAL層。
2,HAL框架
目前android系統中共有兩種HAL框架形式,代碼分別在:
1)hardware/libhardware_legacy/
2)hardware/libhardware/
1)是舊版本的實現方式,是將所有HAL層的功能放在一個*.so文件中,然后在runtime階段通過函數直接調用各個module來操作驅動程序。2)是將所有的HAL module提供的API進行統一的封裝,統一了上層訪問HAL的接口。