zoukankan      html  css  js  c++  java
  • 第九章读书笔记

    本章主要讲硬件抽象层:HAL,HAL是属于Linux内核层上的应用层,增加HAL的主要目的是除了尽量避免应用程序直接访问Linux驱动外,还有一个重要的原因,就是保护“私人财产” 。它是建立在Linux驱动之上的一套程序库。刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口。二,解决了GPL版权问题。三,针对一些特殊的要求。可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作。

    编写一个支持HAL的Linux驱动程序的步骤:

        第一步编写Linux驱动:linux源代码尽量简洁,尽可能将业务的逻辑放到HAL Library。

        第二步编写Hal library:Hal Linrary 是普通的Linux Library(*。so)文件。但是在类库文件由一个接口。通过HAL_MODULE_INFO_SYM 变量实现。Service Library 就是通过这个接口定义的ID定位Hal Library的。

        第三步编写Service Library :但是这一步并不是必须的,service Library也是Linux library。

    在Android.系统中使用Linux 驱动有两种方式。

    一种就是通过传统的方式直接与Lmux 驱动交互。

    另外一种是Android特有的,就是通过HAL 模块。

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

    编写HAL模块的步骤和原理如下:定义结构体和宏;编写HAL模块的open函数;定义hw_module_methods_t结构体变量;定义HAL_MODULE_INFO_SYM变量;编写HAL模块的close函数;编写控制LED的函数;支持HAL的Linux驱动程序步骤如下:   编写Linux驱动;编写HAL Library;编写Service Library.

  • 相关阅读:
    JavaScript对象创建的几种方式
    【应知应会】15个常用的JavaScript字符串操作方法
    JFreeChart 之折线图
    JFreeChart 之饼图
    百度 Echart 的使用
    UEditor 的使用
    获取中文汉字字符串相应的拼音和首字母的大小写
    Java 操纵XML之修改XML文件
    Java 操纵XML之读取XML文件
    Java 操纵XML之创建XML文件
  • 原文地址:https://www.cnblogs.com/ran702315/p/5647053.html
Copyright © 2011-2022 走看看