摘要: linux按键驱动程序 包含内容定时器延时去抖动,阻塞型设备驱动设计 一、定时器延时去抖 按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开。因而在闭合及断开的瞬间总是伴有一连串的抖动的。按键去抖动的方法主要有两种,一种是硬件电路去抖动;另一种就 阅读全文
posted @ 2016-04-07 20:51 for_learning 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 按键驱动程序 本文学习主要包含按键硬件的实现、中断分层管理、按键定时器去抖、阻塞性驱动程序设计。这里面需要使用到混杂设备驱动和中断处理程序的内容。 一、创建按键混杂设备驱动模型 二、按键硬件的实现 首先是按键的初始化,按键的初始化可以选择在open函数,和模块的初始化函数当中完成硬件的初始化。下面我 阅读全文
posted @ 2016-04-07 19:48 for_learning 阅读(2968) 评论(0) 推荐(1) 编辑
摘要: linux日志文件 在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决。 /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/mes 阅读全文
posted @ 2016-04-06 21:10 for_learning 阅读(356) 评论(0) 推荐(0) 编辑
摘要: linux中断处理程序 一、中断处理流程 在linux内核代码中进入entry-armv.S目录: linux统一的入口:__irq svc. 进入了统一的入口之后,程序跳到irq_handler标号(在同一个文件上面有说明): 而irq_handler实际上是调用上面的arch_irq_handl 阅读全文
posted @ 2016-04-06 17:33 for_learning 阅读(5108) 评论(0) 推荐(0) 编辑
摘要: 混杂设备驱动模型 在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(数字10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的混杂设备。 一、设备描述 Linux中使用struct miscdevic 阅读全文
posted @ 2016-04-06 16:21 for_learning 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 驱动与硬件通信 驱动程序控制设备,主要是通过访问设备内的寄存器来达到控制目的,因此我们讨论如何访问硬件,就成了如何访问这些寄存器了. 一、地址映射 在Linux系统中,无论是内核程序还是应用程序,都只能使用虚拟地址,而芯片手册中给出的硬件寄存器地址或者RAM地址则是物理地址,无法直接使用,因此,我们 阅读全文
posted @ 2016-04-06 15:15 for_learning 阅读(940) 评论(0) 推荐(0) 编辑
摘要: led驱动程序编写 本文主要包含三部分,led驱动程序led.c编写,编译驱动程序的makefile的编写,以及使用驱动程序的应用程序led_app的编写 一、led.c编写 1.1控制led命令的编写 >led.h 二、编译led.c的Makefile的编写 三、应用程序的编写 在完成以上步骤之后 阅读全文
posted @ 2016-04-04 15:59 for_learning 阅读(1416) 评论(0) 推荐(0) 编辑
摘要: 字符设备控制 一、设备控制理论 1.1作用 大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如: 改变波特率。 1.2设备控制-应用函数 在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,...) 阅读全文
posted @ 2016-04-03 22:04 for_learning 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 应用程序如何访问驱动 应用程序主要是通过系统调用来访问驱动程序图。 接下来我们以read.c应用程序来分析: 源码: 我们知道read.c是个系统调用函数,系统调用之前,他是在我们的应用程序当中。实现是在内核当中,但是read.c是怎么找到内核的实现代码的呢: 一、进入代码分析阶段 1.1使用静态编 阅读全文
posted @ 2016-04-01 18:54 for_learning 阅读(873) 评论(0) 推荐(0) 编辑
摘要: linux内核打印数据到串口控制台问题 原文来源:http://i.cnblogs.com/EditPosts.aspx?opt=1 1、查看当前控制台的打印级别 cat /proc/sys/kernel/printk 4 4 1 7 其中第一个“4”表示内核打印函数printk的打印级别,只有级别 阅读全文
posted @ 2016-04-01 14:15 for_learning 阅读(7415) 评论(0) 推荐(0) 编辑