摘要:
https://www.cnblogs.com/sky-heaven/p/8670477.html https://www.cnblogs.com/lifexy/p/7603327.html https://www.cnblogs.com/silencehuan/p/11202496.html ht 阅读全文
摘要:
1.先来看看我们之前分析输入子系统的分层概念,如下图所示: 如上图所示,分层就是将一个复杂的工作分成了4层, 分而做之,降低难度,每一层专注于自己的事情, 系统只将其中的核心层和事件处理层写好了,所以我们只需要来写驱动层即可,接下来我们来分析platform机制以及分离概念。 2.分离概念 优点: 阅读全文
摘要:
实现键盘驱动,让开发板的4个按键代表键盘中的L、S、空格键、回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 为什么使用了input_event()上报事件函数,就要使用这个函数? 因为input_event()函数只是个事件函数,所以需要这个input_sync()同步事件函数来通知 阅读全文
摘要:
1.输入子系统概念介绍 内核的输入子系统是对分散的、多种不同类别的输入设备(如键盘、鼠标、跟踪球、触摸屏、加速计和手写板等)进行统一处理的驱动程序。 linux输入子系统(linux input subsystem)从上到下由三层实现,分别为:输入子系统事件处理层(EventHandler)、输入子 阅读全文
摘要:
1.内核定时器概念 内核最新删除了init_timer,修改成timer_setup。 Linux内核API setup_timer|极客笔记 (deepinout.com) 内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,现位于 <Linux/timer. 阅读全文
摘要:
1.同步互斥阻塞的概念 并发与竞态: 并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race conditions)。 在linux中,主要的竞态发生在如下几种情况: 1、对称多处理器(S 阅读全文
摘要:
1.异步通知 前面介绍的几种按键相关: 应用程序中使用while(1),一直去轮询查按键的状态。(这样会导致应用程序一直占用cpu资源) 使用中断的方式,在应用程序中通过read,然后进入驱动程序中,使应用程序进入休眠。然后发生中断的时候,在中断服务函数中将进程唤醒,返回按键值。(导致应用程序一直在 阅读全文
摘要:
1.poll机制 上一节中使用中断的方式获取按键值,在应用程序中read的时候,如果没有按键中断,就会导致应用程序一直休眠。 优化:使用poll机制,在休眠5秒后,如果还没有按键中断,就返回。 linux系统再调用poll()函数时候,如果没有发生需要的事件,那么进程进入休眠。如果在限定的时间内得到 阅读全文
摘要:
1.查看原理图和芯片手册 2.驱动程序分析 2.1 init函数和exit函数,向内核注册file_operations结构体。并且创建设备信息 2.2 编写open函数 request_irq函数用于向内核申请中断。 第一个参数:要注册中断服务函数的中断号 第二个参数:中断服务函数 第三个参数:触 阅读全文
摘要:
1.编写LED驱动程序步骤 1.1 框架 1.2 完善硬件操作 1.2.1 查看原理图 1.2.2 看2440手册 1.2.3 写代码 其中需要注意的是:单片机通常直接用物理地址去操作寄存器。而这里要将物理地址映射为虚拟地址,用ioremap函数。 2.查看原理图和2440手册 从mini2440的 阅读全文