zoukankan      html  css  js  c++  java
  • 硬件抽象层:HAL

    本章主要讲硬件抽象层:HAL硬件抽象层是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层上的应用层。

    Google为Android加入HAL主要有以下目的:统一硬件的调用接口。由于HAL有标准的调用接口,所以可以利用HAL屏蔽了Linux驱动复杂、不统一的接口;解决了GPL协议;针对一些特殊的要求。对于一些硬件,可能需要访问一些用户空间的资源,或在内核空间不方便完成的工作以及特殊需求。在这种情况下,可以利用位于空间的HAL代码来辅助Linux完成一些工作。

    下一个小节讲了Android HAL的架构。接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能。

    涉及的HAL步骤:1.编写Linux驱动2.编写HAL Library 3.编写Service Library?精简LED驱动

    编写HAL模块的步骤和原理如下。

    第一步:定义结构体和宏;编写HAL模块需要使用到3个非常重要的结构体,在第一步需要定义两个新的结构体。

    第二步:编写HAL模块的open函数:open函数是HAL模块的入口点。本例中使用的是led_device_open函数。该函数主要做如下三个工作:初始化hw_device_t的子结构体,打开设备文件,初始化寄存器。

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

    第四步:定义HAL_MODULE_INFO_SYM函数

    第五步:编写HAL模块的close函数:当HAL模块被卸载后会调用close函数

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

    http://www.cnblogs.com/CuteKatherine/

  • 相关阅读:
    javaScript 闭包
    Netty入门1之----认识Netty
    浅谈 @RequestParam 和@PathVariable
    分布式事务的解决方案
    java实现哈弗曼树和哈夫曼树压缩
    深入理解mysql的底层实现
    深入理解http协议的特点
    char和varchar的区别
    详解聚簇索引
    解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
  • 原文地址:https://www.cnblogs.com/CuteKatherine/p/5651965.html
Copyright © 2011-2022 走看看