搜索
bottom↓
回复: 20

请教RTOS中各模块编程思想

[复制链接]

出0入0汤圆

发表于 2023-3-10 16:42:33 | 显示全部楼层 |阅读模式
使用了RTOS(R.T.Thread)后,发现编程思想与裸机大有不同,通常在裸机中时间片轮询,中断冒出时基,各个任务在一个大循环中扫描,尽量做到每个周期任务的执行不阻塞,基本上就解决了99%常见的应用了,按键按下,显示刷新,控制执行;串口过来一包,显示刷新,控制执行;基本上都是由各个事件触发执行的,程序思路简单很多。
在OS中有几点区别,各个线程(任务)必须周期性的让出CPU,线程的同步,有点繁琐,互斥访问共同内存等等,想请教高手,如下场景该如何设计线程优先级,以及如何设计各个事件之间的通信
1.PID控制温度
2.液晶显示曲线
3.网络获取时间,并显示
4.按键扫描
5.485命令控制解析
6.网络控制命令解析(功能同485控制)
7.温度采集

有几个点有点不太清晰,比如:按键按下,控制命令,获取时间这些都要面对同一个显示线程,用事件集?队列?队列只能一对一,我以前的裸机思路,按键按下事件触发,直接在当前函数刷新液晶数据;时间解析成功事件触发,直接在当前函数刷新液晶显示,因为是顺序执行的,不会出现液晶RAM互斥的问题,用上了OS可就不行了,不能在多个任务里去刷新显示了,

优先级设计:按键1,温度采集2,PID控制3,  网络命令4,485命令5,获取时间6,
请问OS这方面线程通信,事件同步,该怎么能有一个清晰的思路呢

出95入100汤圆

发表于 2023-3-10 16:48:25 | 显示全部楼层
去看看周航慈的书吧

出0入0汤圆

 楼主| 发表于 2023-3-10 16:53:00 | 显示全部楼层
lhj200304 发表于 2023-3-10 16:48
去看看周航慈的书吧
(引用自2楼)

基于嵌入式实时操作系统的程序设计技术 -周慈航  是这个吗?我去看看,多谢了

出95入100汤圆

发表于 2023-3-10 18:08:04 | 显示全部楼层
EvanXU 发表于 2023-3-10 16:53
基于嵌入式实时操作系统的程序设计技术 -周慈航  是这个吗?我去看看,多谢了 ...
(引用自3楼)

是的,为数不多的几本好书

出20入186汤圆

发表于 2023-3-10 20:06:31 | 显示全部楼层
我的一个项目和你这几乎一样,除了没有网络以外。PID和温度采集(4个通道)一个线程,MODBUS一个线程,3个逻辑线程,rt--thread os ,1ms tick,这个项目是长期维护的,从开始现在共4年了。一直增加新功能。

出20入186汤圆

发表于 2023-3-10 20:08:09 | 显示全部楼层
普通按键不用中断,在线程里每隔0.1秒检测一次即可,用几个信号量,modbus用串口的超时中断,gd32f303串口有超时中断,

出0入0汤圆

发表于 2023-3-11 06:47:44 | 显示全部楼层
yuyu87 发表于 2023-3-10 20:08
普通按键不用中断,在线程里每隔0.1秒检测一次即可,用几个信号量,modbus用串口的超时中断,gd32f303串口 ...
(引用自6楼)

按键为什么不单独开一个线程,你放在0.1ms的中断里执行?

出0入0汤圆

发表于 2023-3-11 09:26:43 | 显示全部楼层
上OS系统相当于建设一个城市管理,  里面的各种任务 就相当于公安局, 街道办, 汽车站, 5A风景区... 等等 各种级别不同但又相互独立的政府机构组合. 你就是市委书记.  为按键开个线程,给它对应的配套待遇都是小事一件,  就是要看效率值不值得这么干.   精简机构的目的并不为省钱 ,而是为了提高效率.

出20入25汤圆

发表于 2023-3-11 12:43:13 来自手机 | 显示全部楼层
按键跟读取时间,送入到同一个线程,里面状态机解析,再刷新

出20入186汤圆

发表于 2023-3-11 15:25:30 | 显示全部楼层
留声而过 发表于 2023-3-11 06:47
按键为什么不单独开一个线程,你放在0.1ms的中断里执行?
(引用自7楼)

0.1S,不是0.1mS,0.1秒也不用做消抖处理,对应的逻辑里检测即可。

出100入18汤圆

发表于 2023-3-11 16:09:57 | 显示全部楼层
半瓶子水没怎么用过os的人给你解释下吧,抛转引玉,错了欢迎大家指正:
1、逻辑是大循环+中断,自己安排执行时间。 操作系统相当于帮你把这部分做了,你只管每个线程都是一个CPU while(1)独占就好了,优先级在建立task的时候就可以安排好。
2、你不用担心什么周期性出让CPU,尽管写你的程序就好了,调用系统sleep的时候,系统自己会切换任务。
3、即使你不切换任务,如果优先级低的话, 操作系统也会到时间就让你停下来,运行更高优先级的任务,但是别再最高优先级里一直运行,没有sleep,那么其他线程就可能抢不到执行时间了。
4、都调用显示问题,有很多解决方法,比如用互斥锁,就是个标记,这个任务用的时候,那个任务不用,这个都是操作系统已经考虑过的事情,学一下就会了。
5、还有个解决办法就是,显示放在一个单独任务里,接收其他任务的消息,你可以有很多进程需要更新显示,但是都给那个显示进程发消息就好了,那个进程里收到消息就处理显示,多个消息排毒的问题操作系统会帮你处理好,不用管。

总之用操作系统可以省很多事情,尤其是并行任务特别多的时候,逻辑跑经常需要考虑哪个循环来不及响应问题,操作系统就不用担心了,裸机中断处理操作系统里也有,逻辑切换任务的方法其实有点类似操作系统的思路。
如果你程序很简单就不用考虑操作系统了,但是如果你学会了操作系统之后,你会觉得即使简单的也套个操作系统吧,反正也很简单,万一哪天改复杂了呢。

出10入0汤圆

发表于 2023-3-11 19:34:01 | 显示全部楼层
不错,先学习。空了说说我的看法

出5入14汤圆

发表于 2023-3-11 19:34:20 来自手机 | 显示全部楼层
一直有跟楼主一样的需求,,,

出0入0汤圆

发表于 2023-3-12 05:19:16 | 显示全部楼层
同样关注,最近裸跑该去threadx,之前任务很多,都不知道怎分。

出0入0汤圆

 楼主| 发表于 2023-3-13 16:43:55 | 显示全部楼层
lhj200304 发表于 2023-3-10 18:08
是的,为数不多的几本好书
(引用自4楼)

他的那本嵌入式常用算法,也不错啊,有应用有代码,讲解的很清晰

出0入0汤圆

 楼主| 发表于 2023-3-13 16:45:28 | 显示全部楼层
yuyu87 发表于 2023-3-10 20:08
普通按键不用中断,在线程里每隔0.1秒检测一次即可,用几个信号量,modbus用串口的超时中断,gd32f303串口 ...
(引用自6楼)

0.1s扫描按键,有点延迟吧?

出0入0汤圆

 楼主| 发表于 2023-3-13 16:47:09 | 显示全部楼层
Qhjh 发表于 2023-3-11 09:26
上OS系统相当于建设一个城市管理,  里面的各种任务 就相当于公安局, 街道办, 汽车站, 5A风景区... 等等 各 ...
(引用自8楼)

论坛里咱还是不建议使用这种举例方式,坚定不移跟党走

出0入0汤圆

 楼主| 发表于 2023-3-13 16:48:12 | 显示全部楼层
modu8888 发表于 2023-3-11 19:34
不错,先学习。空了说说我的看法
(引用自12楼)

快来讲一讲啊

出0入16汤圆

发表于 2023-3-13 17:36:11 | 显示全部楼层
简单点每个功能各开一个线程,更新UI使用消息队列通知UI线程,夸线程同步的标准做法

出20入186汤圆

发表于 2023-3-13 18:43:51 | 显示全部楼层
EvanXU 发表于 2023-3-13 16:45
0.1s扫描按键,有点延迟吧?
(引用自16楼)

人按 按键,基本都在0.3秒左右,0.1秒检测一次没问题。我的设备一直这样操作。简单。

出0入0汤圆

 楼主| 发表于 2023-3-13 22:05:10 | 显示全部楼层
yuyu87 发表于 2023-3-13 18:43
人按 按键,基本都在0.3秒左右,0.1秒检测一次没问题。我的设备一直这样操作。简单。 ...
(引用自20楼)

好吧,学习了,后边我也尝试这样搞一搞
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 07:31

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

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