搜索
bottom↓
回复: 36
打印 上一主题 下一主题

linux下要达到1 ms的精度执行动作哪种准

[复制链接]

出0入8汤圆

跳转到指定楼层
1
发表于 2023-11-29 18:38:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题。  。。。。。。 哪种定时方式准一些?  

出0入84汤圆

2
发表于 2023-11-29 18:41:33 | 只看该作者
不可能 就算RT也不行,在imx6和IMX8上都用RT实测过。

出0入8汤圆

3
发表于 2023-11-29 18:43:38 | 只看该作者
双核  一个跑linux   一个裸奔或者rtos

出0入8汤圆

4
 楼主| 发表于 2023-11-29 18:49:40 | 只看该作者
本帖最后由 justdomyself 于 2023-11-29 19:00 编辑
boyiee 发表于 2023-11-29 18:41
不可能 就算RT也不行,在imx6和IMX8上都用RT实测过。
(引用自2楼)


我要1ms从共享内存读一个数。然后发送出去。

如果不能做到绝对准确,用哪种方式相对准确呢?有误差也再所难免

出0入8汤圆

5
 楼主| 发表于 2023-11-29 18:50:37 | 只看该作者
kebaojun305 发表于 2023-11-29 18:43
双核  一个跑linux   一个裸奔或者rtos
(引用自3楼)

我要1ms从共享内存读一个数。然后发送出去。要保证采样率为1khz.  

出0入98汤圆

6
发表于 2023-11-29 18:56:12 | 只看该作者
不是实时操作系统没法保证的吧?
以前看别人开发运动控制器,就说了freertos之类的才行

出0入13汤圆

7
发表于 2023-11-29 19:01:55 | 只看该作者
vxworks系统可以吧?......

出615入1076汤圆

8
发表于 2023-11-29 19:07:25 来自手机 | 只看该作者
一般情况,可以写一个小驱动,在内核空间用 hrtimer

要求高的话,打一个 rt preempt 实时补丁,打了补丁后,用户空间都可以保证实时性

出0入8汤圆

9
 楼主| 发表于 2023-11-29 19:09:52 | 只看该作者
dukelec 发表于 2023-11-29 19:07
一般情况,可以写一个小驱动,在内核空间用 hrtimer

要求高的话,打一个 rt preempt 实时补丁,打了补丁后 ...
(引用自8楼)

按照上面说的一般情况,但是不打内核补丁,应用层精度能到多少?

出0入115汤圆

10
发表于 2023-11-29 19:24:54 来自手机 | 只看该作者
只能硬件定时器,软件模拟啥不可能

出615入1076汤圆

11
发表于 2023-11-29 19:27:24 来自手机 | 只看该作者
justdomyself 发表于 2023-11-29 19:09
按照上面说的一般情况,但是不打内核补丁,应用层精度能到多少?
(引用自9楼)

不打补丁,用户空间的话
要把内核配置的动态调度关掉,调度频率开比较大
然后尽量少开启一些驱动,譬如 wifi usb 之类的
然后不要跑耗 cpu 的程序
然后 x86-64 的话,acpi 一些影响实时性的坑要规避一下
然后你应用程序的 nice 调度优先及给到最高
还有即便没打布丁,也要按照打了布丁的教程来写程序,譬如程序启动的时候申请内存,运行的过程中不要再动态申请内存
然后你 cpu 足够强劲
可能也能达到打了实时补丁的效果(只是不能 100% 避免偶发的较大的抖动,和所启用的驱动有关)
做到位的话,剩下还是跟 cpu 性能有关系,pc 的话,一般 50us 到 100us 左右的抖动

出0入4汤圆

12
发表于 2023-11-29 20:07:29 来自手机 | 只看该作者
我用epoll做10ms定时通讯还能跑的过来,1ms没试过

出0入8汤圆

13
 楼主| 发表于 2023-11-29 21:27:32 来自手机 | 只看该作者
三年模拟 发表于 2023-11-29 19:24
只能硬件定时器,软件模拟啥不可能
(引用自10楼)

在应用层开硬件定时器?

出0入36汤圆

14
发表于 2023-11-29 21:27:40 来自手机 | 只看该作者
加个单片机吧,别难为Linux了。

出0入8汤圆

15
 楼主| 发表于 2023-11-29 21:28:50 来自手机 | 只看该作者
liuqian 发表于 2023-11-29 20:07
我用epoll做10ms定时通讯还能跑的过来,1ms没试过
(引用自12楼)

没这么离谱吧,我是传送频率高,数据量不大。

出0入0汤圆

16
发表于 2023-11-29 21:49:57 | 只看该作者
不可能, 10ms起步, windows 正负30ms

出50入135汤圆

17
发表于 2023-11-29 22:40:33 来自手机 | 只看该作者
window没那么差吧,我试过多媒体定时器

出0入0汤圆

18
发表于 2023-11-29 22:44:16 | 只看该作者
linux本身就是非实时系统,达不到1ms的不抖动,只能打preempt  rt 补丁。但打preempt  rt 补丁以后,你想要在实时环境驱动外围设备,可能需要另外写驱动,反正是个麻烦事。

出0入0汤圆

19
发表于 2023-11-29 23:10:47 来自手机 | 只看该作者
linux 反复掉电重启,也会容易丢系统文件。丢文件的问题。一直不敢用。

出0入984汤圆

20
发表于 2023-11-29 23:54:41 | 只看该作者
liuzhijun2008 发表于 2023-11-29 23:10
linux 反复掉电重启,也会容易丢系统文件。丢文件的问题。一直不敢用。
(引用自19楼)

文件系统选型的问题不归系统背锅

出0入115汤圆

21
发表于 2023-11-30 08:38:48 来自手机 | 只看该作者
justdomyself 发表于 2023-11-29 21:27
在应用层开硬件定时器?
(引用自13楼)

驱动支持就行

出0入115汤圆

22
发表于 2023-11-30 08:39:37 来自手机 | 只看该作者
liuzhijun2008 发表于 2023-11-29 23:10
linux 反复掉电重启,也会容易丢系统文件。丢文件的问题。一直不敢用。
(引用自19楼)

研究下安卓文件系统怎么分区的。你会懂的

出0入59汤圆

23
发表于 2023-11-30 08:43:44 | 只看该作者
liuzhijun2008 发表于 2023-11-29 23:10
linux 反复掉电重启,也会容易丢系统文件。丢文件的问题。一直不敢用。
(引用自19楼)

这个%99是文件系统移植时,没有搞好的缘故, 特别是早期 用NAND FLASH 的方案

出0入36汤圆

24
发表于 2023-11-30 09:13:34 来自手机 | 只看该作者
liuzhijun2008 发表于 2023-11-29 23:10
linux 反复掉电重启,也会容易丢系统文件。丢文件的问题。一直不敢用。
(引用自19楼)

掉电的时候,你不频繁写数据,不会丢的的。

出0入59汤圆

25
发表于 2023-11-30 09:40:57 | 只看该作者
redworlf007 发表于 2023-11-30 09:13
掉电的时候,你不频繁写数据,不会丢的的。
(引用自24楼)

掉电时写,只会造成当前操作的文件数据丢失, 不会造成系统文件出问题,或者是文件系统损坏、崩溃的;

如果会出这个问题, 那可以把主板扔掉了

出0入36汤圆

26
发表于 2023-11-30 10:24:05 来自手机 | 只看该作者
本帖最后由 redworlf007 于 2023-11-30 10:26 编辑
polarbear 发表于 2023-11-30 09:40
掉电时写,只会造成当前操作的文件数据丢失, 不会造成系统文件出问题,或者是文件系统损坏、崩溃的;

...

(引用自25楼)


大哥,如果写的系统盘里面的文件,掉电时,系统文件也会有概率损坏。
arm9  j1900跑Linux都会出现,工业上要求掉电不丢东西的,基本都有备用电池或者超级电容之类的。

只要你掉电得时候,写的频繁或者数据量大,没有备用电支持,从原理讲就不可能避免丢东西或者系统文件出问题,只是概率大小的问题。

出0入59汤圆

27
发表于 2023-11-30 10:34:30 | 只看该作者
本帖最后由 polarbear 于 2023-11-30 10:51 编辑
redworlf007 发表于 2023-11-30 10:24
大哥,如果写的系统盘里面的文件,掉电时,系统文件也会有概率损坏。
arm9  j1900跑Linux都会出现,工业 ...
(引用自26楼)


不会掉系统盘的数据的;

工业上加电容或者电池是为了防止用户动作数据或者工艺文件数据丢失, 要保存用户掉电前的数据

而不是为防止系统盘掉文件或者是文件系统奔溃;

掉电写文件为啥不会崩文件系统, 硬件上来说,FLASH 的最低工作电压是2.7V,  你系统中的PMC 检测到 5V 电压有跌落, PMC 就会有检测到BOD,硬件复位系统, 不会有读写动作发生了

如果你为了节省硬件成本,用一堆DCDC 来替换PMC , 就当我上面的没有说;

然后就是软件层面的事情, 包括你用的文件系统(特别是用NAND FLASH 存储器 ),驱动。。。。

文件系统防止丢失数据需要软件硬件综合的设计考虑,任何一个环节考虑不好都会出问题

我见过有个公司的主板就是会丢数据,他们公司的工程师也没有根治解决, 反正就是你说的加掉电电容。。。一系列骚操作; 但是他们同行的就是啥也不加,也没有出过问题

出0入0汤圆

28
发表于 2023-11-30 10:50:14 | 只看该作者
换方案吧,这种场景是STM32MP15这种双核芯片擅长的,一个主核A7跑Linux,另外一个M4核跑实时任务。各大芯片厂商之所以出这种芯片就是考虑Linux和实时控制相结合的应用场景。

出0入29汤圆

29
发表于 2023-11-30 11:01:02 | 只看该作者
换一个多核的芯片,拿一个核跑MCU程序,我做过使用芯片的LCD模式发送数据精度nS级别的

出0入36汤圆

30
发表于 2023-11-30 13:22:06 来自手机 | 只看该作者
polarbear 发表于 2023-11-30 10:34
不会掉系统盘的数据的;

工业上加电容或者电池是为了防止用户动作数据或者工艺文件数据丢失, 要保存用 ...

(引用自27楼)

PMC用啥做?检测掉电然后复位的芯片?
我在复位电路那里加了一个检测到掉电立马复位cpu的芯片,实际上我还把系统放一个flash里面,频繁读写的数据存在另外一个flash。

出0入59汤圆

31
发表于 2023-11-30 14:05:13 | 只看该作者
redworlf007 发表于 2023-11-30 13:22
PMC用啥做?检测掉电然后复位的芯片?
我在复位电路那里加了一个检测到掉电立马复位cpu的芯片,实际上我还 ...
(引用自30楼)

检测3.3 V 跌落到3V立马复位也可以;   现在很多linux的主板基本都是1片FLASH , 系统和数据都在里面

出0入84汤圆

32
发表于 2023-12-1 22:52:27 | 只看该作者
linu有实时版本的

出0入0汤圆

33
发表于 2023-12-3 09:52:28 | 只看该作者
Linux打上Preempt RT补丁,就可以跑1ms周期任务,优化一下 抖动30-50us左右。

出30入42汤圆

34
发表于 2023-12-3 15:32:45 来自手机 | 只看该作者
外置一片MCU,反正现在MCU白菜价了。

出0入8汤圆

35
 楼主| 发表于 2023-12-3 19:04:05 | 只看该作者
oldca9001 发表于 2023-12-3 09:52
Linux打上Preempt RT补丁,就可以跑1ms周期任务,优化一下 抖动30-50us左右。
(引用自33楼)

具体怎么操作

出0入84汤圆

36
发表于 2023-12-3 19:33:04 | 只看该作者

打了rt补丁也不可靠,我们在imx系列上实际测试过,不打rt补丁基本几十ms,打了补丁系统空闲时候抖动几十us,系统负载高时候就不行了。
如果想要可靠,还是加单片机把,别为难linux了。

出0入0汤圆

37
发表于 2023-12-9 18:18:20 | 只看该作者
boyiee 发表于 2023-12-3 19:33
打了rt补丁也不可靠,我们在imx系列上实际测试过,不打rt补丁基本几十ms,打了补丁系统空闲时候抖动几十u ...
(引用自36楼)

CPU本身性能不能太差,另外可以考虑多核处理器,把其中一个核隔离出来,绑定到实时任务上去,这些就是Linux本身优化的问题了,很多技巧。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 21:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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