• 第九章


    Android系统中使用Linux驱动有两种方式,一种是通过传统的方式直接与Liunx驱动交互,另一种是Android特有的,就是通过HAL模块。HAL是建立在Linux驱动之上的一套程序库。而这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层。Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。Android加入HAL主要目的:统一硬件的调用接口、解决了GPL版权问题、还有就是针对一些特殊的要求。HAL架构的基本原理是Android系统中使用程序库调用位于内核空间的Linux驱动,Android应用程序中访问HAL中的程序库。AndroidHAL的源代码存储的位置并不固定,一般会存储在<Android源代码目录>/hardware目录中。编写一款支持HAL的Linux驱动程序的步骤:编写Linux驱动、编写HAL Library、编写Service Library。LED驱动在设备文件的read和write函数中读写指定的寄存器,基本原理是只从指定寄存器读取或写入5个字节。编写HAL模块的步骤和原理:定义结构体和宏、编写HAL模块的open函数、定义hw_module_methods_t、定义HAL_MODULE_INFO_SYM变量、编写HAL模块的close函数、编写控制LED的函数。HAL模块本质上就是通知Linux共享库与Linux驱动交互,然后应用程序再访问Linux共享库。

  • 相关阅读:
    hdu2191(多重背包)
    hdu3664(递推dp)
    hdu2955(变形01背包)
    hdu1712(分组背包)
    hdu1114(完全背包)
    hdu4004(二分)
    hdu2870(dp求最大子矩阵)
    POJ 1979 Red and Black(水题,递归)
    POJ 1922 Ride to School(贪心+模拟)
    POJ 1182 食物链(种类并查集)
  • 原文地址:https://www.cnblogs.com/huxiaohh/p/5614749.html
Copyright © 2020-2023  润新知