转自:http://blog.csdn.net/lufeiop02/article/details/6448497关于linux驱动(应用)程序头文件使用 收藏驱动程序:#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.....
分类:
系统相关 时间:
2015-04-07 11:39:57
阅读次数:
181
驱动程序的作用:简单来说 驱动程序就是使计算机与设备通信的特殊的代码,在作单片机时候(无OS)我们自己定义接口及自定义的结构来操作相关硬件,而在有OS的模式下我们操作的硬件是去实现对应的接口(这些接口是已定义好的,我们需要实现这些接口)而无需自己定义接口,这样既能正确的控制设备。又能很好的维护(.....
分类:
系统相关 时间:
2015-04-03 13:16:21
阅读次数:
162
上一篇我们大概聊了如何写一个简单的字符设备驱动,我们不是神,写代码肯定会出现问题,我们需要在编写代码的过程中不断调试。在普通的c应用程序中,我们经常使用printf来输出信息,或者使用gdb来调试程序,那么驱动程序如何调试呢?我们知道在调试程序时经常遇到的问题就是野指针或者数组越界带来的问题,在应用程序中运行这种程序就会报segmentation fault的错误,而由于驱动程序的特殊性,出现此类...
分类:
系统相关 时间:
2015-04-02 07:57:33
阅读次数:
416
linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。1)打开调试开关:你调试的文件中必然包含了,或者,后者包含了前者,在包含此头文件之前,使用#define DEBUG 1...
分类:
数据库 时间:
2015-03-31 15:57:25
阅读次数:
331
上一篇文章已经提到USB接口在wifi模块中的最重要两个函数是usb_read_port()和usb_write_port()。那它们是怎么和wifi扯上关系的呢?我们可以从以下三个方面去分析:
1、首先需要明确wifi模块是USB设备,主控(CPU)端是USB主机;
2、USB主机若需要对wifi模块进行数据的读写时,就必须经过USB接口;
3、既然涉及到数据的读写操作,必然要用相应的读写函数,那么usb_read_port()和usb_write_port()即是它们的读写函数。...
分类:
其他好文 时间:
2015-03-30 21:13:46
阅读次数:
1044
上一篇介绍了linux驱动的概念,以及linux下设备驱动的基本分类情况及其各个分类的依据和差异,这一篇我们来描述如何写一个类似hello world的简单测试驱动程序。而这个驱动的唯一功能就是输出hello world。
在编写具体的实例之前,我们先来了解下linux内核下调试程序的一个重要函数printk以及几个重要概念。
printk类似c语言的printf,是内核中输出打印信息...
分类:
系统相关 时间:
2015-03-29 18:05:03
阅读次数:
221
上一篇介绍了linux驱动的概念,以及linux下设备驱动的基本分类情况及其各个分类的依据和差异,这一篇我们来描述如何写一个类似hello world的简单测试驱动程序。而这个驱动的唯一功能就是输出hello world。在编写具体的实例之前,我们先来了解下linux内核下调试程序的一个重要函数pr...
分类:
系统相关 时间:
2015-03-28 20:26:28
阅读次数:
243
万事开头难,最简单的有时却是最难的。学习Linux驱动程序开发,大家都会从hello world的驱动程序开始学习,我也如此,在学习调试该程序时,遇到了很多问题,呵呵,最终得以解决,总结如下:1 内核版本问题,我在最初安装Redhat时,版本为linux-2.4.20-8,创建hello目录,在该目...
分类:
其他好文 时间:
2015-03-22 00:25:44
阅读次数:
178
linux驱动——并发和竟态序——正在运行的多个用户空间程序可能以一个令人惊讶的组合方式访问我们的代码。SMP系统甚至可能在不同的处理器上同时执行我们的代码。内核代码是可抢占的,因此我们的驱动程序代码可在任何时候丢失对处理器的独占。信号量(semaphore)的实现: 有一对..
分类:
其他好文 时间:
2015-03-16 06:30:42
阅读次数:
180
linux驱动makefile写法:
ifneq
($*KERNELRELEASE),)
obj-m
:=hello.o
else
KERNELDIR?=/lib/modules/$(shell
uname-r)/build
PWD
:=$(shellpwd)
default:
$(MAKE)
-C$(KERNELDIR)M=$(PWD)modules
endif初始化和关闭:static
int__initinitialization_funciton(void)
{
*
}
mo..
分类:
其他好文 时间:
2015-03-16 06:30:11
阅读次数:
202