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