随笔分类 - Mydriver2
Two
摘要:首先是hello.c 文件: Hello.c: 接着是修改driver/char/Kconfig: 添加: 修改字符设备驱动里的Makefile: 打开Makefile: obj-$(CONFIG_HELLO_WORLD) += hello.o 进入配置界面: 选择Device driver:进入:
阅读全文
摘要:Tty驱动程序框架 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。 1• 串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备。Linux把每个串行端口都看作是一个字符设备。这些串行端口所对应的设备名称是/dev/ttySAC0
阅读全文
摘要:平台总线驱动设计 平台总线(Platform bus)是linux2.6内核加入的一种虚拟总线,其优势在于采用了总线的模型对设备与驱动进行了管理,这样提高了程序的可移植性。虚拟总线和实际的总线优势相当。我们只要把驱动和设备挂载到虚拟总线就可以了。 平台总线驱动与设备匹配机制 平台总线的结构:plat
阅读全文
摘要:总线设备驱动模型 总线:创建一条总线,跟我们前面的按键一样,首先是描述总线结构,接着是注册总线,注销总线。总线设备,例如usb总线,上面会有很多类型的usb的驱动,例如鼠标、键盘.....等,当我们把之一的usb插上的时候,usb总线会把每个驱动遍历一遍,找到相应的驱动程序执行。 接下来用bus.c
阅读全文
摘要:阻塞型驱动设计 唤醒之后按优先级执行。 对按键驱动进行阻塞型改造 改造的duokey.c: Make会产生一下的问题还没解决,由于没有网络。差个头文件..... 明天有网络再说咯 找到了头文件,linux/sched.h又出现了奇怪的错误: 很奇怪,是重名。可我没有定义key..h,是系统的。最后改
阅读全文
摘要:多按键驱动程序优化 优化的代码,支持两个按键的支持的代码:duokey.c: #include <linux/module.h> /* For module specific items */ #include <linux/fs.h> /* For file operations */ #incl
阅读全文
摘要:按键定时器去抖动 按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开。因而在闭合及断开的瞬间总是伴有一连串的抖动的。按键去抖动的方法主要有两种,一种是硬件电路去抖动;另一种就是软件延时去抖动。而延时又一般分为了两种,一种是for循环等待,另一种是
阅读全文
摘要:Linux是如何来处理中断嵌套的: 所谓的中断嵌套就是,当一种中断正在执行的时候,又产生了另外中断。可以是同类型的,也可以是不同类型的。 首先先来分析第一种类型:慢速中断:是指在进行中断处理的时候,中断的总开关是不关闭的。允许其他类型中断产生。 快速中断:当中断产生的时候,控制位的IF为被置1,别的
阅读全文
摘要:按键驱动的操作 通过上两节课的了解,接下来,我们通过例子来实现按键驱动的功能。 首先是按键的初始化,按键的初始化可以选择在open函数,和模块的初始化函数当中完成硬件的初始化。下面我们是选择在模块的初始化函数进行按键的初始化。按键的初始化,主要涉及对GPIO的引脚的功能进行相应的设置。在OK6410
阅读全文
摘要:回顾裸机的流程。在裸机下学期,通过按键玩中断。 裸机中断的过程: 中断会有统一的入口:当我们的程序产生中断的时候,无论是哪种中断。都会跳到中断向量表里的_irq这里。这是统一的入口。 2.用户要先注册中断处理程序。 3.根据中断源编号,调用中断处理程序。 接下来我们来看linux的中断,是不是也是这
阅读全文
摘要:Linux的设备有很多。所以在认识这些设备的时候得有一个方法去系统的对待他们。第一找出在linux内核代码中是使用什么结构来描述混杂设备的。第二是怎么来注册的。下图就是内核里混杂设备的结构。 Minor是次设备号,name是主设备号。还有一个struct file_operations的结构是需要我
阅读全文