会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
银色的音色
博客园
首页
新随笔
联系
管理
订阅
上一页
1
2
3
4
5
6
7
···
23
下一页
2022年8月8日
Linux驱动开发十二.异步通知
摘要: 我们在前面通过阻塞和非阻塞的访问方式完成了用户态APP和驱动文件之间进行交互。但是这两种方式都是通过应用程序主动去读取驱动程序,对于非阻塞模式来说是通过poll函数不断的轮询,阻塞模式就是把进程挂起,直到中断或其他事件发生重新启动进程。今天我们讲一种新的方法:让驱动主动向应用程序发出通知,报告自己可
阅读全文
posted @ 2022-08-08 22:37 银色的音色
阅读(722)
评论(0)
推荐(0)
2022年8月2日
Linux驱动开发十一.阻塞与非阻塞IO操作——1.阻塞IO操作
摘要: 还记得我们在讲按键生成外部中断时候通过一个APP来调用驱动文件么?因为我们在用户态APP里通过while循环不断调用read函数去获取按键状态,占用了大量的系统资源,这种模式肯定是不行的。所以今天我们重新构造一下这个驱动程序(主要是和用户态APP交互的文件操作集合函数)。 阻塞和非阻塞 应用程序对驱
阅读全文
posted @ 2022-08-02 23:53 银色的音色
阅读(428)
评论(0)
推荐(0)
2022年7月28日
Linux驱动开发十.中断——4.中断的下半部
摘要: 在前面讲中断等过程,我们通过request_irq申请中断,然后注册了中断服务函数。事件触发中断以后所有待处理的任务都在中断服务函数中执行。一般来说,中断服务函数会在中断请求关闭的条件的执行,一般简单的事件这样做没问题,满足外部中断讲究一个快进快出的原则,一旦要处理复杂的事物时,中断禁止的时间一长,
阅读全文
posted @ 2022-07-28 20:29 银色的音色
阅读(386)
评论(0)
推荐(0)
2022年7月26日
Linux驱动开发十.中断——3.按键产生的外部中断和用户APP交互
摘要: 现在我们已经能够使用GPIO外设产生一个外部中断了,下面要做的就是如何在用户APP里获取到中断产生的信息。 用户APP的思路是在while循环里一直调用read函数从内核里读取驱动的信息,内核在文件被read的时候向用户态APP传递数据。驱动程序在每次按键按下后触发中断,中断通过定时器消除按键抖动后
阅读全文
posted @ 2022-07-26 23:34 银色的音色
阅读(632)
评论(0)
推荐(0)
2022年7月24日
Linux驱动开发十.中断——2.中断结合定时器对按键消抖
摘要: 我们在上一章的已经实现了定时器的基础功能使用,但是对于一个机械按键来说,因为有机械抖动会重复触发中断不能直接使用。所以我们今天要把中断功能加上定时器,来实现按键消抖的效果。 整个驱动的思路也是比较简单的,在设备结构体中定义一个定时器,当中断触发,我们不再中断里执行按键需要触发的程序而是启动定时器,如
阅读全文
posted @ 2022-07-24 01:14 银色的音色
阅读(706)
评论(0)
推荐(0)
2022年7月22日
Linux驱动开发十.中断——1.中断功能的实现
摘要: 在Linux驱动开发过程中,最常用到的就是定时和中断了。在前面章节我们大致了解了如何在Linux内核中实现定时功能,在下面的部分我们来学习一下中断的使用。 先回顾一下在裸机开发过程中我们怎么做的中断(忘记的可以看一下前面的章节:点击跳转): 首先使能中断,并初始化相应的寄存器 注册中的服务函数,向中
阅读全文
posted @ 2022-07-22 00:24 银色的音色
阅读(2146)
评论(0)
推荐(1)
2022年7月16日
Linux驱动开发九.内核定时器使用——2.定时器APP调用
摘要: 在上面一张我们在一个基础IO外设上加上了定时器功能,但是在设备驱动挂载完成后直接就运行定时器了,这样肯定是不行的。一定是需要一个APP程序和底层驱动进行交互。APP起码具备的功能有启动、停止定时器,修改定时器工作周期的功能。 在前面所有的APP中我们主要用了file_operations结构体中的o
阅读全文
posted @ 2022-07-16 00:37 银色的音色
阅读(409)
评论(0)
推荐(0)
2022年7月14日
Linux驱动开发九.内核定时器使用——1.定时器底层驱动
摘要: 定时器和中断是我们最常用到的功能,在前面裸机开发的时候我们通过EPIT、GPT等定时器实现定时功能,那种算硬件定时器。今天我们来看下如何在Linux内核里实现软件定时功能的。 Linux内核时间管理 Linux系统在运行的时候有大量的函数需要时间管理,比如调度程序、延时程序等。并且我们在驱动开发的时
阅读全文
posted @ 2022-07-14 20:39 银色的音色
阅读(1616)
评论(0)
推荐(0)
2022年7月10日
Linux驱动开发八.按键操作
摘要: 今天我们来试一下在GPIO子系统下实现按键的使用。这篇总结主要目的是让我们直到GPIO在作为输入的时候是怎么使用的,真正的使用环境中是不可能将按键输入按照这个模式使用的。同时,我们还可以回顾一下上一章的原子操作,一同来完成按键驱动操作 设备树修改 回顾一下我们写裸机的时候,KEY是复用在UART1_
阅读全文
posted @ 2022-07-10 21:05 银色的音色
阅读(576)
评论(0)
推荐(0)
Linux驱动开发七.并发与竞争——2.实际操作
摘要: 我们在前面讲了处理竞争和并发问题的四种机制,下面可以通过一些驱动来检验一下。 原子操作 原子操作用了最基础的一个虚拟的设备来演示,在设备模块被加载后生成了设备节点,我们使用APP程序打开设备节点后是有个线程访问了该设备里的数据,当另外一个APP重新要打开这个数据时就无法正常访问了。 1 /** 2
阅读全文
posted @ 2022-07-10 11:38 银色的音色
阅读(178)
评论(0)
推荐(0)
上一页
1
2
3
4
5
6
7
···
23
下一页
公告