zoukankan      html  css  js  c++  java
  • 第九章阅读随想

    HALHadware Abstraction Layer,硬件抽象层)是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于linux内核层之上的应用层。在传统的Linux系统中Linux驱动一般有俩种类型的代码:访问寄存器的代码和业务逻辑代码。对访问寄存器而言,并没有上面秘密可言。而Linux驱动的业务逻辑部分对于有些企业或个人并不想将源代码公开,因此开发了HAL,所以说,在Android中加入HAL主要有如下的目的:

    统一硬件的调用接口。

    解决了GPl版权问题

    针对一些特殊的要求

    HAL添加到LED驱动中的步骤:

    第一步:编写Linux驱动

    第二步:编写HAL Library

    第三步:编写Service Library

    编写调用LED驱动的HAL模块

    第一步:定义结构体和宏

    第二步:编写HAL模块的open函数

    第三步:定义hw_module_methods_t结构体变量

    第四步:定义HAL_MYDULE_INFO_SYM变量

    第五步:编写HAL模块的close函数

    第六步:编写控制LED的函数

    编写调用HAL模块的service

    调用HAL模块涉及一个非常重要的hw_get_module函数。该函数可以通过在leds_hal.h中定义的LED_HARDWARE_MODULE_ID宏查找LED HAL模块,并获得led_module_t结构体。然后调用led-module_t.hw_module.methods.open函数来初始化LED驱动

    HAL本质上就是通过Linux共享库(。so)与Linux驱动交互,然后应用程序再访问Linux共享库

    http://i.cnblogs.com/EditPosts.aspx?opt=1

  • 相关阅读:
    基于VLC的视频播放器
    IOS开发之新浪微博OAuth2
    Android之官方导航栏ActionBar
    IOS中键盘隐藏几种方式
    在Android中使用Android Ksoap2调用WebService
    Android之属性动画(二)
    IOS 内存管理
    利用scp 远程上传下载文件/文件夹和ssh远程执行命令
    Centos 检查磁盘读写性能
    JPA, JNDI, OSGi
  • 原文地址:https://www.cnblogs.com/lzy402682881/p/5643733.html
Copyright © 2011-2022 走看看