zoukankan      html  css  js  c++  java
  • 《Android深度探索》第九章心得体会

          《Android深度探索》第九章讲的是硬件抽象层:HAL。HAL是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。Google为Android加入HAL主要的目的:统一硬件的调用接口;解决了GPL版权问题;针对一些特殊的要求。编写一款支持HAL的Linux驱动程序的步骤,第1步:编写Linux驱动;第2步:编写HAL Library;第3步:编写Server Library。在编写Linux驱动以及驱动相关的程序的过程中应分段测试每一部分程序。HAL模块也是普通的Linux共享库(.so文件),只不过HAL模块可以被Android系统自动装载,而不是开发人员去装载.so文件。任何被系统自动调用的程序都会有一个标准的接口,这个接口相当于一个约束的规则。不管任何程序,只要遵循这个规则,就可以成功并被调用。编写HAL模块的步骤,第1步:定义结构体和宏;第2步:编写HAL模块的open函数;第3步:定义hw_module_methods_t结构体变量;第4步:定义HAL_MODULE_INFO_SYM变量;第5步:编写HAL模块的close()函数;第6步:编写控制LED的函数。

          通过对第九章的学习,我知道了在Android系统中使用Linux驱动有两种方式,一种就是传统的方式直接与Linux驱动交互,另一种是Android特有的,就是通过HAL模块。HAL模块本质上就是通过Linux共享库(.so)与Linux驱动交互,然后应用程序再访问Linux共享库。每一个HAL共享库指定一个ID,再利用这个ID配合一定的规则找到Linux共享库。这样Linux共享库更换文件名,移动位置都很方便,Google也建议使用Stub的方式编写HAL模块。

  • 相关阅读:
    (七) rest_framework GenericAPIView/GenericViewSet/ ModelViewSet 解析
    (六) rest_framework 普通分页与加密分页
    (五) rest_framework 序列化与解析器源码实现
    (四) rest_framework 版本控制源码
    【使用 PySpark 分析 CSV 文件】
    安装 HBase1.3.6 on Windows 10 64 bit
    Spark Job 性能调优 (二)
    Spark RDD 分区到底怎么用?
    安装 Spyder python 开发环境 用于 Spark 数据分析 -word count
    安装 Spark on Windows 使用 PySpark
  • 原文地址:https://www.cnblogs.com/zi-qing/p/5641814.html
Copyright © 2011-2022 走看看