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);

  • 相关阅读:
    uvm_pkg——老板,打包带走
    uvm.sv——UVM之道
    uvm_comps.svh
    uvm_subscriber——告诉她我们来过
    uvm_monitor——借我一双慧眼
    编程面试过程中常见的10大算法(转)
    MySQL 分区表
    Nginx + Tomcat 动静分离实现负载均衡(转)
    浅析JVM内存结构和6大区域(转)
    Linux Shell编程变量赋值和引用
  • 原文地址:https://www.cnblogs.com/yuzaipiaofei/p/4124511.html
Copyright © 2011-2022 走看看