linux
我一个搬砖人
小弟一个后端狗,大佬们带带我。
展开
-
输入子系统
本帖是学习该帖子后的理解:https://www.cnblogs.com/lifexy/p/7542989.html 若有多个不同的驱动程序时,应用程序就要打开多个不同的驱动设备,当别人使用时会很麻烦。 因此需要使用输入子系统, 使应用程序无需打开多个不同的驱动设备便能实现 drivers/input/input.c 在该文件中可以看到 subsys_initca...原创 2018-08-23 15:55:55 · 189 阅读 · 0 评论 -
OK6410之input_dev按键驱动
之前学习过输入子系统的相关概念,这里我们就学习一下如何编写按键驱动。 本次要实现的是让开发板的5个按键代表键盘中的L、S、回车键等。 首先看看input_dev结构体: struct input_dev { void *private; const char *name; //设备名字 const char *phys; /...原创 2018-08-28 10:41:49 · 279 阅读 · 0 评论 -
OK6410之原子变量
当设备被一个程序打开时,存在被另一个程序打开的可能,如果两个或多个程序同时对设备文件进行写操作,这就是说我们的设备资源同时被多个进程使用,对共享资源(硬件资源、和软件上的全局变量、静态变量等)的访问则很容易导致竞态。 对于竟态问题有不同的处理方式,比如信号量,自旋锁等。 但是当共享的资源只是一个简单的整数,这时候我们如果利用完整的锁机制会是一种浪费,这种情况下一般使用原子变量来处理。 ...原创 2018-08-24 21:50:48 · 118 阅读 · 0 评论 -
OK6410之信号量和阻塞机制
上一篇文章讲了利用原子变量防止设备竞态的发生,这一节将如何利用信号量达到同样的效果。 学过ucosIII操作系统的朋友会对信号量这个概念比较熟悉。程序中请求信号量,如果得到信号量则信号量的值-1,并且程序继续运行。若请求不到信号量则会阻塞或者进行其他操作。 当程序结束前要释放信号量,则信号量的值+1,这样别的程序才能得到信号量。 信号量的相关内核代码在<asm/semaph...原创 2018-08-24 23:46:38 · 1102 阅读 · 0 评论