
linux_driver
dong1699
文章是个人学习中收集的资料,大多来自网上,不做其它用途
展开
-
device_create 转自华清
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。提醒一点,udev是应用层的,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用device_create创建对应的设备。大致用法如下:struct class *m转载 2015-01-06 16:36:06 · 474 阅读 · 0 评论 -
LINUX中的工作队列
工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。 工作队列提供一个通用的办法将任务延迟到 bottom halves(底半部分)。 处于核心的是工作队列(结构体 workqueue_struct), 任务被安排到该结构体当中。 任务由结构体 work_struct 来说明, 用来鉴别哪转载 2015-03-03 16:21:43 · 419 阅读 · 0 评论 -
android 电容屏多点触控协议
多点触控协议为了发挥新近的多点触摸和多用户设备的强大功能,为多点触摸定义一种上报详细数据的方法(比如有多个物体直接接触到设备的表面),是非常有必要的。多点触摸协议(multi-touch,MT),是的内核驱动可以对多个随意数量的触控事件上报详细的数据信息。在Linxu内核中,手指信息被内核抽象为一个个ABS数据包,由驱动顺序的发送给应用。多点触摸的ABS数据包通常由ABS_MT标志。驱转载 2015-01-05 11:48:14 · 1268 阅读 · 0 评论 -
自旋锁&信号量&互斥锁
为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v加1原子操作比普通操作效率要低,因此必要时才使用,且不能与普通操作混合使用如果是单核处理转载 2014-12-30 10:18:05 · 434 阅读 · 0 评论 -
Hrtimer
高精度定时器Hrtimer工欲善其事必先利其器,在开始讲之前,我们先利一下器:相关的用到的几个源代码文件以及其路径如下:Hrtimers.txt (linux-3.2.12\documentation\timers)Hrtimer.c (linux-3.2.12\kernel)Hrtimer.h (linux-3.2.12\include\linux)单纯的在高转载 2015-01-16 19:32:52 · 1084 阅读 · 0 评论 -
register_chrdev和register_chrdev_region
使用register_chrdev注册字符设备注册字符设备可以使用register_chrdev函数。int register_chrdev (unsigned int major, const char *name, struct file_operations*fops); register_chrdev函数的major参数如果等于0,则表示采用系统动态分配的主设备号。转载 2015-01-07 15:20:37 · 1224 阅读 · 0 评论 -
class_register和class_create
linux中class_create和class_register说明1 class结构体介绍 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev转载 2015-01-07 09:25:22 · 790 阅读 · 0 评论 -
device_create详解
开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一转载 2015-01-06 22:02:11 · 2842 阅读 · 0 评论 -
linux设备模型之Kobject与Kset
以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LDD3》上有教程,有时还要自己研究它的子系统构架,甚至要自己添转载 2015-08-14 23:43:41 · 448 阅读 · 0 评论