zoukankan      html  css  js  c++  java
  • Andriod深度探索—HAL与驱动开发 第九 章 读书笔记and一点心得

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

    GoogleAbdroid加入HAL主要有如下目的:

        统一硬件的调试接口。

        解决了GPL版权问题。

        针对一些特殊要求。

    编写一款支持HALLinux驱动程序的步骤

        第一步:编写Linux驱动

        第二步:编写HAL Libray

        第三步:编写 Server Libary

    编写HAL模块的步骤和原理

        第一步:定义结构体和宏  

               描述HAL模块的hw_module_t结构体

               描述HAL设备的hw_device_t结构体

               描述模块入口函数的hw_module_methods_t结构体

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

               初始化hw_device_t的子结构体

               打开设备文件

               初始化寄存器

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

            第四步:定义HAL_MODULE_INFO_SYM变量

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

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

    心得:在Android系统中使用Linux驱动有两种方式。一种是通过传统的方式直接与Linux驱动交互。另外一种是Android特有的,就是通过HAL模块。HAL模块本质上就是通过Linux共享库与Linux驱动交互,然后应用程序再访问Linux共享库。

    本人博客地址:http://home.cnblogs.com/u/jie617530/

  • 相关阅读:
    面向复杂应用,Node.js中的IoC容器 -- Rockerjs/core
    一步步学会用docker部署应用(nodejs版)
    nodeEE双写与分布式事务要点一二
    提升node.js中使用redis的性能
    puppeteer实现线上服务器任意区域截图
    Nodejs“实现”Dubbo Provider
    TypeScript入门教程
    node.js与比特币(typescript实现)
    关于首屏时间采集自动化的解决方案
    回顾2017,未来仍需要不停充电
  • 原文地址:https://www.cnblogs.com/jie617530/p/5656520.html
Copyright © 2011-2022 走看看