AndroidHal

一、Android Hal层简介

     Android基于Linux内核实现,Linux内核是GPL许可,即对源码的修改都必须开源,而Android是ASL许可,即可以随意使用源码,无需开源,因此将原本位于kernel的硬件驱动逻辑转移到Android平台来,就可以不必开源,从而保护了硬件厂家的利益。因此Android就提供了一套访问硬件抽象层动态库的接口,各厂商在Android的硬件抽象层实现特定硬件的操作细节,并编译成so库,以库的形式提供给用户使用。

1、对应数据结构
hw_module_t 模块描述
hw_module_methods_t 模块方法
hw_device_t  设备描述

typedef struct hw_module_t {
    /** tag must be initialized to HARDWARE_MODULE_TAG */ 
    uint32_t tag; 
    uint16_t version_major; 
    uint16_t version_minor; 
    const char *id; 
    const char *name; 
    const char *author; 
    struct hw_module_methods_t* methods; 
    void* dso; 
    uint32_t reserved[32-7]; 
} hw_module_t; 

typedef struct hw_module_methods_t { 
    //硬件模块方法列表的定义,这里只定义了一个open函数 
    /** Open a specific device */ 
    int (*open)(const struct hw_module_t* module, const char* id,
    //注意这个open函数明确指出第三个参数的类型为struct hw_device_t**  struct hw_device_t** device); 
} hw_module_methods_t; 

//每一个设备数据结构的第一个成员函数必须是hw_device_t类型,其次才是各个公共方法和属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android HAL层库加载原理 Android HAL层的由来:由于市面做移动芯片的厂商很多,大部分厂商考虑到...
    JEFF_张阅读 9,260评论 0 7
  • Android里面的一些设计思想感悟 一切皆文件 一切皆文件不是Android的首创,是Linux/Unix的首创...
    6bfbfcb4d1b3阅读 4,417评论 1 1
  • Android系统对硬件设备的支持是分两层的。一层实现在内核空间中(只有内核空间才有特权操作硬件设备),另一层实现...
    passerbywhu阅读 4,023评论 0 0
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,965评论 0 3
  • Android音频系统详解 参考好文: Android 音频系统:从 AudioTrack 到 AudioFlin...
    爱雨520阅读 14,707评论 2 7

友情链接更多精彩内容