HAL层

HAL层是硬件抽象层,位于操作系统内核和硬件之间,隐藏硬件细节,提供硬件无关性。在Android中,HAL分为libhardware_legacy和libhardware目录,以及ril和msm7k等。HAL_module通过hw_get_module函数查找并加载动态链接库,通过dlopen和dlsym获取硬件模块信息。HAL stub不作为共享库,仅被映射到一个进程。
摘要由CSDN通过智能技术生成

HAL层被称为硬件抽象层,它位于操作系统内核和硬件电路之间的接口层,目的是将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟的硬件平台,使其具有硬件无关性,这样就可以在多种平台上移植。

   在Android源码中,HAL层被保存下面的目录中

  1.libhardware_legacy:过去的目录,采取了链接库模块观念

  2.libhardware:新的目录,采用HAL stub观念,它是一种代理的概念.

  3.ril:是radio接口

  4.msm7k:QUAL平台相关的信息

比较HAI_legacy和HAL

HAI_legacy:采用共享库形式,在编译时候会调用到。由于采用function call形式来调用,因此可被多个进程使用,但是会被映射到多个进程空间中造成浪费,同时需要考虑代码能否安全重入的问题。

HAL:采用HAL  module和HAL stub结合形式。HAL stub不是一个共享库,在编译时候上层只拥有访问HAL stub的函数指针,并不需要HAL stub。在上层通过HAL module提供的统一接口获取并操作HAL stub,所以文件只会被映射到一个进程。


HAL modulefe分析

在/hardware/libhardware/hardware.c里

1.hw_get_module函数

int hw_get_module_by_class(const char *class_id, const char *inst,
                           const struct hw_module_t **module)
{

 .

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值