
Linux 设备驱动
文章平均质量分 69
主要研究Linux内核驱动!包括内核驱动模型,常见的字符设备、块设备以及网络设备的驱动程序分析与实现!结合ARM11开发板硬件资源进行实现示例的硬件平台!
chenlong12580
这个作者很懒,什么都没留下…
展开
-
Android 系统中设备节点的创建
查了很多资料,有很多人错误地认为是kernel创建的/dev/yourdevice 在最近的kernel中这种说法是不对的, 其实是kernel仅负责在/sys/创建一大堆下目录和文件, 而真正的设备节点是在用户空间创建的, 在android系统中,由init进程负责处理这种uevent事件,如果是"add" device事件, init转载 2012-03-20 20:09:25 · 4227 阅读 · 0 评论 -
Linxu设备驱动之Hello World!
接下来准备记录一下Linux驱动学习的点点滴滴!接触一段时间了,但是没有记录,恰巧想把手头的ARM11的板子整整!所以,准备从今天开始系统记录一下,主要就是学习驱动的架构,然后编写板子上面外设的驱动程序,并进行测试! 关于驱动学习最好的资料就是内核源码了,但是也推荐几本书。 1、《Linux设备驱动》 2、 《Linux设备驱动开发详解》原创 2012-03-03 14:19:47 · 1523 阅读 · 0 评论 -
Linxu设备驱动之Hello World带参数版本!
上一节中我们我们写了一个简单的驱动程序,基本就是编程中的hello world!但是整个打印出来的内容都是编译的时候确定好的,不能根据输入的参数动态改变。所以,这里我们实现hello world!带参数的版本,主要实现的效果就是装载模块的时候给出打印参数,模块能够打印出这个参数! 参数的来源主要有两个:一是使用insmod ./XX.ko 时候在命令行后直接给出参数;二是使用mod原创 2012-03-04 14:57:50 · 1863 阅读 · 0 评论 -
一个简单的字符驱动程序
最近在学习Linux下设备驱动程序,从头开始吧!慢慢总结,先入手,后入门,再提高! 下面是一个简单的字符设备驱动程序,主要是一个模拟设备,使用了系统的内存,相信大家都能看懂,毕竟简单,而且注释清楚,编译测试的方法大家都知道吧,这里要说的就是习惯的测试方法是通过echo向设备文件写入内容,然后通过cat显示内容,但是希望大家看到,该设备只有4字节的内存,测试的时候建议大家可以试一试写原创 2012-03-08 23:13:26 · 3678 阅读 · 0 评论 -
详解内核常用的两个表达式
1、通过typeof来获得类型信息 获取一个表达式类型信息的另一种方法是使用typeof。使用这个关键字的语法和sizeof的十分类似,但在语义上类似于用typedef定义的类型名结构。 有两种方式来书写typeof的参数:使用一个表达式或者使用一个类型。下面的例子是使用一个表达式的方式: typeof(x[0][1]) 这里假定x原创 2012-03-09 14:30:46 · 1493 阅读 · 0 评论 -
misc设备驱动模型及实例解析
1、misc设备驱动模型 本节我们来看一下misc设备驱动模型的有关内容,首先是看看它的设备结构体,定义在include/linux/miscdevice.h中:struct miscdevice { int minor; //次设备号,若为 MISC_DYNAMIC_MINOR 自动分配 const char *name; //设备名 const s原创 2012-03-10 10:50:12 · 10055 阅读 · 2 评论 -
设备驱动中的中断问题及实例解析
1、关于设备驱动中的中断问题 操作系统为了使得快速设备和慢速设备合适工作,需要中断来提高效率,一个外设要使用一个中断就必须注册中断号,获得跟这个中断号相关的一些资源,并且在中断发生的时候内核可以进行一些处理,例如:调用中断处理例程来真正的处理设备中断。Linux处理中断的方式很大程度上与它在用户空间处理信号的方式是一样的。 我们知道,从本质上讲,中断处理例程会和其他代码原创 2012-03-11 10:53:31 · 8307 阅读 · 0 评论 -
S3C6410的PWM部分
在分析PWM驱动的实现之前,我们需要看看6410的芯片手册中有关PWM章节,知道PWM的产生方式和控制方法,知道相关的一些寄存器才能知道设置那些寄存器,都应该赋什么值,下面就是其中的一部分,主要是芯片手册的内容,没写有关PWM的全部,主要是我们稍候的PWM驱动主要是针对蜂鸣器的使用,所以选取了相关的内容,感兴趣的可以自己去阅读芯片手册。 这一章主要是讲述S3C6410X RISC微原创 2012-03-11 20:27:51 · 4000 阅读 · 0 评论 -
S3C6410的PWM驱动实例
我们使用PWM来控制蜂鸣器,主要是两种功能,一是使能蜂鸣器,并设置其频率;二是禁止蜂鸣器。这些操作均可通过ioctl来完成。所以在pwm的设备驱动中,主要也就是ioctl这个函数。 首先,我们要定义两个命令,用在ioctl函数中的switch语句中,至于怎么来定义这两个命令呢?其实简单的做法,我们可以将其定义为两个不同的常量,能用在switch语句中即可,但是这样会造成一定的问题。例如,其原创 2012-03-12 10:07:26 · 2732 阅读 · 0 评论 -
将 Win32 程序移植到 Linux
对于这个问题,网上已经有很多资料给予了介绍,但是相比于这些信息,本文立足于个人的实践,将内容具体到开发环境和源代码,我觉得还是有很多值得总结和借鉴的。 首先声明开发环境。Win32程序的开发环境是VS.Net 2008,编程语言是C;Linux使用的RHEL 5.4,GCC的版本是4.1.2,编程语言也是C。然后依次说明移植的对象:数据类型/字符串处理/系统调用/转载 2012-03-13 23:37:22 · 1514 阅读 · 0 评论