OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4542|回复: 3

关于Linux下保证驱动时序不被打断的问题

[复制链接]

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-8-30
在线时间
19 小时
发表于 2020-8-6 12:46:19 | 显示全部楼层 |阅读模式
1金钱
一直有一个疑问,就是在Linux下写platform设备驱动时,因为这类设备并没有标准的实际总线,例如Linux下DS18B20的驱动,它是由CPU来对指定的IO进行模拟严格的时序来读写,但是Linux是如何保证在操作硬件的时序不被调度系统或者中断所打断的呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
2179
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-8-7 09:38:41 | 显示全部楼层
可以用自旋锁试试  禁止中断,不过你这个过程要快
森罗万象
回复

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-8-30
在线时间
19 小时
 楼主| 发表于 2020-8-7 11:24:02 | 显示全部楼层
xiaotaotao 发表于 2020-8-7 09:38
可以用自旋锁试试  禁止中断,不过你这个过程要快

我在想保证访问硬件的时序不被打断的操作是由Linux内核的某种机制来完成的还是要在驱动程序中自己编写程序来保证。
还有,自旋锁一般是在SMP处理器上使用,对请求不到的资源进行忙等待,虽然也是不放弃CPU资源,但是感觉和我这个访问硬件的原子性不太一样。
要是用禁止中断的话,在需要频繁访问硬件的时候会不会对其他任务的执行产生影响
而且我看别人写的驱动里面也没有对xxx_read、xxx_write函数进行禁止被打断的保护
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
2179
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-8-7 12:44:10 | 显示全部楼层
哈利路亚~ 发表于 2020-8-7 11:24
我在想保证访问硬件的时序不被打断的操作是由Linux内核的某种机制来完成的还是要在驱动程序中自己编写程 ...

其实我觉得你不用关注这个问题,你这个时序又不是很严格  你基本可以忽略掉系统调度或中断所带来的时间差
森罗万象
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 08:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表