• 第九章


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

    二.Android HAL架构的发展:1、在Android系统中使用程序库(.so文件)调用位于内核空间的linux驱动。然后Android应用程序(APK文件)可以通过NDK程序访问HAL中的额程序库,或直接在Android应用程序中访问HAL中的程序库。

    三编写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驱动

    四.编写一款支持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驱动的HAL模块的步骤:

    1、定义结构体和宏

    2、编写HAL模块的open函数

    3、定义hw_module_methods_t结构体变量

    4、定义HAL_MODULE_INFO_SYM变量

    5、编写HAL模块的close函数

    6、编写控制LED的函数

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

  • 相关阅读:
    php7垃圾回收机制
    PHP-FPM
    go main.main之前的准备
    ElementUI MessageBox 弹框
    ElementUI table 样式修改
    ElementUI Dropdown 下拉菜单
    vue+django实现下载文件
    ElementUI 点击展开/隐藏
    vue+django实现websocket连接
    ElementUI 上传文件以及限制
  • 原文地址:https://www.cnblogs.com/zhangyuye/p/5650737.html
Copyright © 2020-2023  润新知