摘要: lcd驱动设计实现流程图:驱动代码实现:lcd.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/errno.h>#include <linux/string.h>#include <linux/mm.h>#include <linux/slab.h>#include <linux/delay.h>#include <linux/fb.h>#include <linux/init.h>#include &阅读全文
posted @ 2012-05-27 10:49 ITMelody 阅读(7) 评论(0) 编辑
摘要: 总线设备驱动模型关系图:驱动程序总线设备驱动模型代码编写步骤:device、driver、app led驱动实例:device代码实现:led_drv.c#include <linux/module.h>#include <linux/version.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/types.h>#include <linux/interrupt.h>#include <linux/list.h>#includ阅读全文
posted @ 2012-05-23 11:27 ITMelody 阅读(30) 评论(0) 编辑
摘要: 编写输入子系统的驱动程序步骤:驱动程序代码实现:buttons.c/* 参考drivers\input\keyboard\gpio_keys.c */#include <linux/module.h>#include <linux/version.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/interrupt.h>#include <linux/irq.h>#include <linux/sched.h>#include <l阅读全文
posted @ 2012-05-22 16:06 ITMelody 阅读(15) 评论(0) 编辑
摘要: 输入子系统由驱动层、输入子系统核心、事件处理层三部分组成,个输入事件,如鼠标移动、键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序。驱动层:将底层的硬件输入转化为统一事件形式,想输入核心(Input Core)汇报。输入子系统核心:承上启下。为驱动层提供输入设备注册与操作接口,如:input_register_device;通知事件处理层对事件进行处理;在/Proc下产生相应的设备信息事件处理层:主要是和用户空间交互。(Linux中在用户空间将所有的设备都当初文件来处理,由于在一般的驱动程序中都有阅读全文
posted @ 2012-05-22 11:25 ITMelody 阅读(34) 评论(0) 编辑
摘要: 实现原理图:驱动程序实现:buttons.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/irq.h>#include <asm/uaccess.h>#include <asm/irq.h>#include <asm/io.h>#include <asm/arch阅读全文
posted @ 2012-05-20 11:33 ITMelody 阅读(43) 评论(0) 编辑
摘要: 1.原子操作:原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用的原子操作函数举例:crucial_code// 定义初始化原子变量atomic_t *v = ATOMIC_INIT(1);// 读取并返回原子变量的值atomic_read(atomic_t *v);// 原子变量加1atomic_int(atomic_t *v);// 原子变量减1atomic_dec(atomic_t *v);//原子变量减1并测试其值是否为0 , 若是则函数返回true, 否则返回 falseint atomic_dec_and_test(*v);2.信号量:crucial_code// 定义阅读全文
posted @ 2012-05-19 12:53 ITMelody 阅读(7) 评论(0) 编辑
摘要: 实现原理图:异步通信关键代码:crucial_codeAPP:signal(SIGIO, my_signal_fun);fcntl(fd, F_SETOWN, getpid());int Oflags = fcntl(fd, F_GETFL);fcntl(fd, F_SETFL, Oflags | FASYNC);DRIVE:static struct fasync_struct *button_fasync;static struct file_operations second_drv_fops = { .fasync = fifth_drv_fasync,}static int f...阅读全文
posted @ 2012-05-18 21:00 ITMelody 阅读(34) 评论(0) 编辑
摘要: 1.坚持看CCTV-1新闻联播。 要想把握经济命脉,必须关注政局,新闻联播图文并茂,有声有色,着实为中国商人的最佳晴雨表;你可以不看财经报道,也可以不看焦点访谈,如果你不是做石油和外汇的,甚至你都可以不去管类似9.11事件和中东局势。 2.不要轻易相信合约或合同 哪怕合约让你的律师看过了,公证处公证了都不要轻易相信,甚至当你的客户把钱已经汇入你指定的账户以后你都必须确认,这笔钱你能不能拿出来,能不能动,而合约以外的涉及到利益冲突的任何口头承诺与解释你都必须当他是放屁,无论香还是臭,在对方兑现承诺以前都不要沉湎其中,更无论对方是谁,哪怕那是你交了十年的朋友甚至是和你上了床的女人都必须如此。...阅读全文
posted @ 2012-05-18 18:04 ITMelody 阅读(14) 评论(0) 编辑
摘要: poll函数 poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include <poll.h> 2.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 3.返回:就绪描述字的个数,0-超时,-1-出错 第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个pollfd结构,用于指定测试某个给定描述字fd的条件。 struct poll...阅读全文
posted @ 2012-05-18 15:04 ITMelody 阅读(13) 评论(0) 编辑
摘要: 内核:request_irq(riq, handle, irqflags, devname, devid); 的实现过程中断驱动及应用程序设计整体思路:驱动程序代码实现过程:third_drv.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/irq.h>#include <asm/uaccess.h阅读全文
posted @ 2012-05-17 08:03 ITMelody 阅读(39) 评论(0) 编辑


