• Android深度探索(卷1)HAL与驱动开发 第九章 硬件抽象层:HAL 读书笔记


    HAL是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。HAL的主要目的一个是用来保护"私人财产",另一个是尽量避免应用程序直接访问Linux驱动程序。

    传统的Linux系统中Linux驱动一般有两种类型的代码,访问硬件寄存器和业务逻辑代码。对于访问硬件寄存器代码,并无秘密可言,因为都是调用Linux内核的标准函数进行的标准操作。而Linux的业务逻辑部分对于有些企业或者个人并不想讲源代码公开。Linux内核采用GPL协议,所以Linux驱动不得不公开源代码。GOOGLE在android的系统运行库层加上了HAL。由于它属于Android的一部分,所以不必开源。总而言之,HAL的作用如下:1.统一硬件的调用接口;2.解决了GPL版权问题;3.针对一些特殊的要求。

    Android HAL 架构。基本原理是在Android系统中使用程序库(.so文件)调用位于内核空间的Linux驱动(一般通过设备文件访问)。然后Android应用程序(APK文件)可以通过NDK程序访问HAL中的程序库,或直接在Android应用程序中访问HAL中的程序库。新版本则在HAL模块中加了一些新的HAL架构要求的入口代码。

    为LED驱动增加HAL。

    1编写一款支持HAL的Linux驱动程序的步骤。一.编写Linux驱动。二.编写HAL library。三.编写service library。

    2精简LED驱动

    3测试读写寄存器操作

    4编写调用LED驱动的HAL模块。编写HAL模块的步骤:一.定义结构体和宏。二.编写HAL模块的open函数。三.定义hw_module_method_t结构体变量。四.定义HAL_MODULE_INFO_SYM变量。五.编写HAL模块的close函数。六.编写控制LED的函数。

    5编写调用HAL模块的service

    6HAL模块的存放路径和命名规则

    7编写调用service的java库

    8测试LED驱动

    软件1308班31号 张帆 博客园地址: http://home.cnblogs.com/u/sxauzzz/ 

  • 相关阅读:
    elinput 金额校验
    使用PHPExcel实现Excel文件的导入和导出(模板导出) (转载自用)
    Scrapy 轻松定制网络爬虫
    在线学习(Online Learning)
    AdaBoost ,online Adaboost
    斯坦福飞鱼滑翔装置完胜跳跃机器人
    机器学习中的集成学习方法(一)理论
    Boosting, Online Boosting,adaboost
    struts.xml配置方法
    java实现单向链表
  • 原文地址:https://www.cnblogs.com/sxauzzz/p/5638356.html
Copyright © 2020-2023  润新知