第九章 硬件抽象层:HAL 本章介绍的是HAL硬件抽象层,他是属于linux内核层之上的应用层,解释了在Android中加入HAL的原因是Google为了满足不想开源的Linux驱动作者的要求,在Android层次结构中的系统运行库层增加了一个HAL,来统一硬件的调用接口,解决GPL版权问题以及一些 ...
分类:
其他好文 时间:
2016-07-03 10:26:02
阅读次数:
183
Google为Android加入HAL主要有如下的目的。 统一硬件的调用接口。由于HAL 有标准的调用接口,所以可以利用HAL屏蔽Linux 驱动复杂、不统一的接口。 解决了GPL版权问题。由于Linux 内核基于GPL协议,而Android 基于Apache Licence 2 . 0、协议。因此 ...
分类:
移动开发 时间:
2016-07-02 20:19:56
阅读次数:
136
printk函数的用法于-printf 函数类似,只不过printk函数运行在内核空间, printf函数运行在用户空间。也就是说,像Linux 驱动这样的Linux内核程序只能使用printk 函数输出调试信息 虽然使用printk 函数可以很方便地将消息写入日志文件或控制台。但大量使用print ...
分类:
移动开发 时间:
2016-07-02 20:14:28
阅读次数:
165
通过蜂鸣器的实现原理,实现一个完整的蜂呜器驱动,可以打开和关闭蜂鸣器. PWM驱动的实现方式不同于LED驱动, PWM 驱动将由多个文件组成。这也是大多数 Linux 驱动的标准实现方式. 刚开始是LED驱动的代码重用,Linux 驱动的代码重用有很多种方法。可以采用标准 C程序的方式。将要重用的代 ...
分类:
移动开发 时间:
2016-07-02 20:13:55
阅读次数:
225
代码重用:1,静态重用 :将要重用的代码放在其他的文件中,如果要使用某些功能,include 相应的头文件即可 2,动态重用:一个Linux驱动可以使用另外一个Linux驱动中的资源 卸载由于异常情况而导致的Linux驱动模块无法卸载的情况: 1.初始化函数崩溃:将当前的Linux驱动模块的引用计数 ...
分类:
其他好文 时间:
2016-07-02 16:01:34
阅读次数:
157
第9章 HAL是建立在Linux驱动之上的一套程序库,是属于Linux内核层之上的应用层。 传统的Linux系统中Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。 Android加入HAL主要有以下目的: 1.统一硬件的调用接口 2.解决了GPL版权问题 3.针对一些特殊的要 ...
分类:
其他好文 时间:
2016-07-02 15:49:24
阅读次数:
127
在Android系统中使用Linux驱动有两种方式,一种是通过传统的方式直接与Linux驱动交互。 例如,直接读写设备文件的数据。另一种是Android特有的,就是通过HAL模块。HAL模块 本质上就是通过Linux共享库与Linux驱动交互,然后应用程序再访问linux共享库,早期的 HAL模块由 ...
分类:
其他好文 时间:
2016-07-01 16:22:00
阅读次数:
174
对于复杂的Linux 驱动及HAL 等程序库,需要使用各种方法对其进行调试。 例如,设置断点、逐步跟踪代码、-输出调试值息等。虽然嵌入式Linux 在调试方面并没有Visual Studio 、Delphi 、Eclipse这些可视偌工具方便,但 学习一些这方面的技术无疑更有助于开发强大而稳定的Li ...
分类:
其他好文 时间:
2016-07-01 16:15:34
阅读次数:
121
通常一个Linux 驱动并不是为某个特定的用户空间程序编写的。 调用Linux 驱动的程序可能会很多,也很有可能会有很多程序 同时对Linux 驱动进行读、写等操作。由于Linux 驱动可能使用 全局数据(也称为共享数据〉,如果同时对这些共享数据进行 读写,可能会出现脏数据,这就要求Linux驱动具 ...
分类:
其他好文 时间:
2016-07-01 16:13:38
阅读次数:
177
1、通过向寄存器写入特定的值来控制蜂鸣器发出声音。 2、在遇到无法卸载Linux驱动时通过直接修改Linux驱动相应的内存地址删除Linux驱动避免重启机器的麻烦。 3、通过不同的源代码文件存放不同的的功能代码有利于代码的分类和管理。 4、Main.c是Linux驱动的主程序。 5、初始化Linux ...
分类:
其他好文 时间:
2016-07-01 10:21:23
阅读次数:
121