• 第九章


    HAL是建立在LInux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核之上的应用层。GoogleAndroid增加HAL的主要目的除了尽量避免应用程序直接访问Linux驱动外,患有一个重要原因,那就是保护“私人财产”。

        GoogleAndroid加入HAL主要有如下的目的

    统一硬件的调用接口。由于HAL 有标准的调用接口,所以可以利用HAL屏蔽Linux 动复杂、不统一的接口。

    编写一款支持HAL Linux 动程序的步骤

    1 步 编写Linux 驱动

    “编写Linux 动”,从表明上看是废话,但如果要为linux 动添加HAL,而且想尽量保护敏感数据。Linux 动的代码就要尽量简洁,尽可能将业务逻辑放到HAL Library 中。

    2 步:编写HAL

    HAL Library 就是普通的Linux Library (*.so )文件。但这类库文件有一个接口。通过HAL MODULE_INFO SYM 变量实现。Service Library 就是通过在这个接口中定义的ID 定位HALLibrary的。

    3 步:编写Service Library

    尽管这步并不是必需的,但新的HAL 架构要求我们这样做。Service Library 也是Linux Library 。这一步比较灵活。Service Library 可以是一般的Linux Library,也可以是JNI Library。

    led驱动在设备文件的read和write函数中读写指定的寄存器基本原理是:只从指定寄存器取读或写入五个字节,第一个字节用于指定读写的动作以及寄存器类型。后四个字节是读写的实际的数据(因为LED驱动只涉及操作一个int类型数据的寄存器,因此使用四个字节来表示一个int类型数据)。在与LED驱动交互时,只要向设备文件取读或发送五个字节的数据,就可以读写指定的寄存器。

  • 相关阅读:
    WPF 进度条
    WPF CPU使用率线性表
    Android annotation
    git 操作
    git 合并指定目录到master
    远程连接mysql报错,ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)解决方案
    centos7 安装python2.7.14 并与原版本共存
    pycahrm 断点调试
    ImportError: No module named Crypto.Cipher 报错解决方法
    python操作 rabbitMQ
  • 原文地址:https://www.cnblogs.com/haiyin/p/5651654.html
Copyright © 2020-2023  润新知