本章实现的LED驱动包含了Linux驱动、HAL模块、Service程序库、NDK程序和Java程序。 支持HAL的Linux驱动程序步骤如下: 1.编写Linux驱动; 2.编写HAL Library; 3.编写Service Library; 编写HAL模块的步骤和原理如下。 第一步:定义结构体 ...
分类:
其他好文 时间:
2016-07-03 19:06:44
阅读次数:
122
蜂鸣器是S3C410开发板上带的一个硬件设备。可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声。本节介绍蜂鸣器的实现原理,并实现一个完整蜂鸣器驱动。PWM驱动由多个文件组成,这也是大多数Linux驱动的标准实现方式。本书介绍Android底层技术和Linux驱动开发,涉及的主要编程语言是C和C++ ...
分类:
其他好文 时间:
2016-07-03 19:05:01
阅读次数:
157
硬件抽象层:HAL HAL硬件抽象层是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层上的应用层。在传统的Linux系统中Linux驱动一般有两种类型的代码。Google为Android加入HAL主要有以下目的:统一硬件的调用接口。由于HAL有标准的调 ...
分类:
其他好文 时间:
2016-07-03 19:03:36
阅读次数:
148
主要讲了对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试。例如,设置断点、逐步跟踪代码、输出调试信息等。 Printk函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。也就是说,像Linux驱动这样的Linux内核程序只能 ...
分类:
其他好文 时间:
2016-07-03 18:59:44
阅读次数:
118
HAL(硬件抽象层)是建立在Linux驱动之上的一套主程序,这套主程序并不属于Linux内核,而是属于Linux内核层之上的应用层,Google为Android增加HAL测主要目的除了尽量避免应用程序直接访问Linux驱动外,还有一个重要原因,就是保护“私人财产”,对于那些既想发布基于Android ...
分类:
其他好文 时间:
2016-07-03 18:57:39
阅读次数:
108
本章的实验将会实现真正意义上的Linux驱动,会实现直接与硬件的交互。需要控制4个LED灯。 7.1LED驱动的实现原理 事实上并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。 7.2编写LED驱动 1.创建L ...
分类:
移动开发 时间:
2016-07-03 18:55:45
阅读次数:
173
1.Linux驱动的代码重用 静态重用:将重用的代码放在其他文件中,如使用哪些功能,include相应的头文件 动态重用:一个linux驱动使用另一个linux驱动中的资源 2.强行卸载linux驱动 情况1:初始化函数崩溃(将当前的linux驱动模块的引用计数器清零) 情况2:卸载函数被阻塞(将原 ...
分类:
其他好文 时间:
2016-07-03 18:54:37
阅读次数:
103
Hal是建立在linux驱动之上的一套程序库。这套程序库并不属于linux内核而是属于linux内核层之上的应用层。 Google为android加入hal主要目的如下: 1、统一硬件的调用接口。 2、解决了gpl版权问题。 3、针对一些特殊的要求。 编写一款支持hal的linux驱动程序的步骤: ...
分类:
其他好文 时间:
2016-07-03 18:53:55
阅读次数:
116
在传统的linux系统中linux驱动一般有两种不同类型的代码:访问硬件寄存器的代码和业务逻辑代码,对于访问硬件寄存器的代码,并没有什么秘密可言,因为这些都是调用的linux内核的标准函数进行的标准操作,而linux驱动的业务逻辑部分对于有些企业或者个人并不想将源代码公开。 统一硬件的调用接口。由于 ...
分类:
其他好文 时间:
2016-07-03 18:53:46
阅读次数:
128
HAL硬件抽象层是建立在Linux驱动之上的一套程序库。属于Linux内核层上的应用层。HAL的主要目的是尽量避免应用程序直接访问Linux驱动,保护“私人财产”。传统的Linux驱动一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。 为什么要在android中加入HAL 为了满足不想开源的 ...
分类:
其他好文 时间:
2016-07-03 18:52:20
阅读次数:
163