zoukankan      html  css  js  c++  java
  • 第九章

       第九章:硬件抽象层

    HAL是建立在Linux驱动之上的一套程序库,这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。Google为Android加入HAL主要有如下的目的:统一硬件的调用接口、解决了GPL版权问题。加入HAL的驱动使应用程序不需要再关心Linux驱动和设备文件的交互方式,而只需要像访问普通API一样就可以和Linux驱动进行交互。

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

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

            第一步:定义结构体和宏

                       3个重要的结构体hw_module_t、hw_device_t、hw_module_methods_t

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

                       Open函数是HAL模块的入口点。初始化hw_device_t的子结构体;打开设备文件;初始化寄存器

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

                       HAL模块需要hw_module_methods_t结构体的open函数指针变量指定open入口函数

                第四步:定义HAL_MODULE_INFO_SYM变量

                       id表示HAL模块中Android系统中的标识。通过id找到并装载HAL模块。

                       methods变量需要指向第3步定义的hw_module_methods_t结构体的地址,当调用者通过id找到并装载HAL模块后,就会通过methods变量找到hw_module_methods_t结构体,并调用hw_module_methods_t.open函数。

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

                       当HAL模块被卸载后会调用close函数

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

                          根据设备类型和功能的不同,编写相应的函数 

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

  • 相关阅读:
    Biba模型简介
    Fragment 与 Activity 通信
    小米2S 连接Ubuntu Android Studio
    【转】Android 实现“再按一次退出程序”
    取消 EditText 自动聚焦弹出输入法界面
    为Android Studio 项目手动下载gradle
    【转】Java读取文件方法大全
    sudo: /etc/sudoers 的模式为 0551,应为 0440
    Win7 下硬盘安装Linux Mint 17
    Linux Versus Windows, Ubuntu/Mint V XP/Vista/7
  • 原文地址:https://www.cnblogs.com/wulilele/p/5650847.html
Copyright © 2011-2022 走看看