2018年8月23日
摘要: Linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接口,这使得驱动程序的开发变得更简单了,而程序员只需要去学习接口就行 阅读全文
posted @ 2018-08-23 19:53 andy_fly 阅读(3863) 评论(0) 推荐(0) 编辑
  2018年8月21日
摘要: 的在Linux驱动之输入子系统简析已经分析过了输入子系统的构成,它是由设备层、核心层、事件层共同组成的。其中核心层提供一些设备层与事件层公用的函数,比如说注册函数、反注册函数、事件到来的处理函数等等;事件层其实在Linux内核里面已经帮我们写好了很多有关的事件;而设备层就跟我们新添加到输入系统的具体 阅读全文
posted @ 2018-08-21 19:22 andy_fly 阅读(930) 评论(0) 推荐(0) 编辑
  2018年8月20日
摘要: 输入子系统由驱动层、输入子系统核心、事件处理层三部分组成。一个输入事件,如鼠标移动、键盘按下等通过Driver->Inputcore->Event handler->userspace的顺序到达用户控件的应用程序。 系统框图 假设打开一个字符设备驱动程序/dev/event0,event代表的是输入 阅读全文
posted @ 2018-08-20 20:45 andy_fly 阅读(1906) 评论(0) 推荐(0) 编辑
  2018年8月16日
摘要: 机械按键在按下的过程中会出现抖动的情况,如下图,这样就会导致本来按下一次按键的过程会出现多次中断,导致判断出错。在按键驱动程序中我们可以这么做: 在按键驱动程序中我们可以这么做来取消按键抖动的影响:当出现一个按键中断后不会马上去处理它,而是延时一个抖动时间(一般10ms),如果在这个时间内再次出现中 阅读全文
posted @ 2018-08-16 11:31 andy_fly 阅读(1011) 评论(1) 推荐(0) 编辑
  2018年8月15日
摘要: 同步、互斥、阻塞的概念: 同步:在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。 互斥机制:访问共享资源的代码区叫做临界区,这里的共享资源可能被多个线程需要,但这些共享资源又不能被同时访问,因此临界区需要以某种互斥机制加以保护,以确保共享资源被互斥访问。 阻塞与非阻塞:阻塞调 阅读全文
posted @ 2018-08-15 16:11 andy_fly 阅读(1051) 评论(0) 推荐(0) 编辑
摘要: 链接:https://www.zhihu.com/question/19732473/answer/20851256 1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个* 阅读全文
posted @ 2018-08-15 15:37 andy_fly 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 前面的按键驱动方式都是应用程序通过主动查询的方式获得按键值的: 1、查询方式 2、中断方式 3、poll机制 下面介绍第四种按键驱动的方式 4、异步通知:它可以做到应用程序不用随时去查询按键的状态,而等待有按键被按下后,驱动程序主动发消息给应用程序,应用程序再去处理。 比如说:kill -9 pid 阅读全文
posted @ 2018-08-15 14:33 andy_fly 阅读(3052) 评论(0) 推荐(0) 编辑
摘要: 之前在Linux驱动之按键驱动编写(中断方式)中编写的驱动程序,如果没有按键按下。read函数是永远没有返回值的,现在想要做到即使没有按键按下,在一定时间之后也会有返回值。要做到这种功能,可以使用poll机制。分以下几部来介绍poll机制 1、poll机制的使用,编写测试程序 2、poll机制的调用 阅读全文
posted @ 2018-08-15 13:10 andy_fly 阅读(16663) 评论(2) 推荐(0) 编辑
摘要: 在Linux驱动之按键驱动编写(查询方式)已经写了一个查询方式的按键驱动,但是查询方式太占用CPU,接下来利用中断方式编写一个驱动程序,使得CPU占有率降低,在按键空闲时调用read系统调用的进程可以休眠,还是以以下步骤编写: 1、查看原理图,确定需要控制的IO端口 2、查看芯片手册,确定IO端口的 阅读全文
posted @ 2018-08-15 10:02 andy_fly 阅读(9008) 评论(0) 推荐(0) 编辑
  2018年8月14日
摘要: S3C2440中的中断处理最终是通过IRQ实现的,在Linux驱动之异常处理体系结构简析已经介绍了IRQ异常的处理过程,最终分析到了一个C函数asm_do_IRQ,接下来继续分析asm_do_IRQ,目标是推导出中断的处理过程。 看到asm_do_irq函数,它位于arch\arm\kernel\I 阅读全文
posted @ 2018-08-14 22:48 andy_fly 阅读(463) 评论(0) 推荐(0) 编辑