zoukankan      html  css  js  c++  java
  • HAL 分析

    Framework&Application
    ------------------------------------
    External lib&Runtime
    ------------------------------------
    HAL
    Sensor stub   stub stub
    ------------------------------------
    Linux Device Driver
    ------------------------------------


    图上是现在Android HAL 的所在位置,从这张架构图我们知道,HAL 的目的是为了把 Android framework 与 Linux kernel 完整隔开。让 Android 不至过度依赖 Linux kernel,有点像是kernel independent的意思,让 Android framework 的开发能在不考虑驱动程序的前提下进行发展。



    HAL module架构
    struct hw_module_t;
    struct hw_module_methods_t;
    struct hw_device_t;



    hw_module_methods_t

    ---------------------------

    open


    ()
          \
           \
            \
             hw_module_t
             ----------------
            tag:uint32_t
            , , , , ,
                 \
                  \
                   \
                    \
                     hw_device_t
                     ---------------
                     close()




    HAL 使用方法
    举Sensor为列子

    1Native code通过hw_get_module调用获取HAL stub
    hw_get_module (SENSOR_HARDWARE_MODULE_ID, (const hw_module_t**)&module)

    2)通过继
    hw_module_methods_tcallbackopen设备:
    module->methods->open(module,
                
    SENSOR_HARDWARE_MODULE_ID, (struct hw_device_t**)device);
    3)通过继承 hw_device_tcallback来控制设备:
    sSensorDevice->set_on(sSensorDevice, sensor);
    sSensorDevice->set_off(sSensorDevice, sensor);

  • 相关阅读:
    第二阶段冲刺01
    客户端-服务器模式
    可用性和可修改性战术分析
    质量属性
    《架构漫谈》阅读笔记
    《软件需求模式》06
    《软件需求模式》05
    《软件需求模式》04
    《软件需求模式》03
    《软件需求模式》02
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124511.html
Copyright © 2011-2022 走看看