
设备驱动
知耻而后勇的蜗牛
这人很懒
展开
-
设备驱动-----并发控制--原子操作
使用原子锁实现设备只能被一个进程打开#include #include #include #include #include #include #include #include #include #include #include #define GLOBAL_MAJOR 0#define GLOBAL_MAXMEM 0x1000#define DEV_NAME原创 2013-07-08 22:52:02 · 1347 阅读 · 0 评论 -
设备驱动-------工作队列
工作队列(work queue )工作队列是另外一种将工作推后执行的形式.Linux 2.6内核使用了不少工作队列来处理任务,他在使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列的使用又分两种情况:(1)一种是利用系统共享的工作队列来添加自己的工作,这种情况处理函数不能消耗太多时间,这样会影响共享原创 2013-09-28 10:17:43 · 1195 阅读 · 0 评论 -
设备驱动-----down_interruptible函数
int down_interruptible(struct semaphore *sem)这个函数的功能就是获得信号量,如果得不到信号量就睡眠,此时没有信号打断,那么进入睡眠。但是在睡眠过程中可能被信号打断,打断之后返回-EINTR,主要用来进程间的互斥同步。下面是该函数的注释:/*** down_interruptible - acquire the semaphore un转载 2013-09-01 09:53:15 · 1810 阅读 · 1 评论 -
设备驱动-----Linux 设备和驱动加载的先后顺序
Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_inità do_basic_setup()àdo_initcalls()该函数中会将在_转载 2013-08-25 13:39:10 · 1632 阅读 · 0 评论 -
设备驱动-----Linux设备模型之input子系统详解
------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言在键盘驱动代码分析的笔记中,接触到了input子系统.键盘驱动,键盘驱动将检测到的所有按键都上报给了input转载 2013-08-04 09:53:17 · 1454 阅读 · 0 评论 -
设备驱动-----printk
要将linux内核的带级别控制的printk内容打印出来,在命令行 输入 dmesg -n 8 就将所有级别的信息都打印出来 Linux命令:dmesg 功能说明:显示开机信息。 语 法:dmesg [-cn][-s ] 补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/va转载 2013-05-30 22:07:02 · 1301 阅读 · 0 评论 -
设备驱动-----字符驱动globalmem(cdev)
#include #include #include #include #include #include #include #include #include #include #include #define GLOBAL_MAJOR 0#define GLOBAL_MAXMEM 0x1000#define DEV_NAME ("globalmem")int g原创 2013-07-05 23:31:11 · 1350 阅读 · 0 评论 -
设备驱动-----自动创建节点
#include #include #include #include MODULE_LICENSE("GPL");#define DEVICE_NAME ("my_dev")int MAJOR_NUM = 666;int g_val;struct device *dev;struct class *myclass;static ssize_t global_read(原创 2013-06-21 00:25:12 · 2656 阅读 · 0 评论 -
设备驱动-----debugfs创建节点并读写
#include #include #include #include #define DEVICE_NAME ("my_dev") #define NODE_NAME ("node")#define GLOBALMEM_SIZE 512 /*全局内存最大4K字节*/ char g_val[20] = "15"; struct dentry *原创 2013-07-03 23:38:12 · 3668 阅读 · 0 评论 -
设备驱动-----Android关机流程总结
1.通过logcat找到关机流程frameworks/base/core/java/com/android/internal/app/ShutdownThread.java public void run() { boolean bluetoothOff; boolean radioOff; BroadcastReceiver br = n原创 2013-07-07 09:02:57 · 11021 阅读 · 3 评论 -
设备驱动----Linux中总线、设备、驱动是如何关联的?
对于Linux驱动开发来说,设备模型的理解是根本,顾名思义设备模型是关于设备的模型,设备的概念就是总线和与其相连的各种设备了。电脑城的IT 工作者都会知道设备是通过总线连到计算机上的,而且还需要对应的驱动才能用,可是总线是如何发现设备的,设备又是如何和驱动对应起来的?总线、设备、驱动,也就是bus、device、driver,在内核里都会有它们自己专属的结构,在include/linux/转载 2013-06-30 14:56:57 · 4298 阅读 · 0 评论 -
设备驱动-----2.Linux内核模块-Makefile解析
上次写了一个Helloworld内核模块,这里对其Makefile进行解析下。obj-m := hello.o hello-objs := helloworld.o KID := /lib/modules/`uname -r`/build PWD := $(shell pwd) all: make -C $(KID) M=${PWD} modules原创 2013-06-30 18:49:20 · 1927 阅读 · 0 评论 -
设备驱动-----并发控制--自旋锁
#include #include #include #include #include #include #include #include #include #include #include #define GLOBAL_MAJOR 0#define GLOBAL_MAXMEM 0x1000#define DEV_NAME ("globalmem")int g原创 2013-07-08 23:12:24 · 905 阅读 · 0 评论 -
设备驱动------KEIL下分散加载文件的使用
对于分散加载的概念,在《ARM体系结构与编程》书中第11章有明确介绍。分散加载文件(即scatter file 后缀为.scf)是一个文本文件,通过编写一个分散加载文件来指定ARM连接器在生成映像文件时如何分配RO,RW,ZI等数据的存放地址。如果不用SCATTER文件指定,那么ARM连接器会按照默认的方式来生成映像文件,一般情况下我们是不需要使用分散加载文件的。但在某些场转载 2013-11-10 21:06:56 · 1333 阅读 · 0 评论