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/

  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/CuteKatherine/p/5651965.html
Copyright © 2011-2022 走看看