码迷,mamicode.com
首页 > 其他好文 > 详细

第九章随笔

时间:2016-07-03 19:03:36      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

硬件抽象层:HAL

HAL硬件抽象层是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层上的应用层。在传统的Linux系统中Linux驱动一般有两种类型的代码。GoogleAndroid加入HAL主要有以下目的:统一硬件的调用接口。由于HAL有标准的调用接口,所以可以利用HAL屏蔽了Linux驱动复杂、不统一的接口;解决了GPL协议;针对一些特殊的要求。对于一些硬件,可能需要访问一些用户空间的资源,或在内核空间不方便完成的工作以及特殊需求。在这种情况下,可以利用位于空间的HAL代码来辅助Linux完成一些工作。

本章实现的LED驱动包含了Linux驱动、HAL模块、Service程序库、NDK程序和Java程序。

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

定义结构体和宏;

编写HAL模块的open函数;

定义hw_module_methods_t结构体变量;

定义HAL_MODULE_INFO_SYM变量;

编写HAL模块的close函数;

编写控制LED的函数;

支持HALLinux驱动程序步骤如下:  

1.编写Linux驱动;

2.编写HAL Library

3.编写Service Library

HAL模块本质上就是通过Linux共享库(.so)与Linux驱动交互,然后应用程序再访问Linux共享库与Linux驱动交互,然后应用程序再访问Linux共享库。每一个HAL共享库指定一个ID,再利用这个ID配合一定的规则找到Linux共享库。

第九章随笔

标签:

原文地址:http://www.cnblogs.com/dongdong-0503/p/5638503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!