OpenEdv-开源电子网

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

公司要求我们上RTOS,大家有什么好的程序架构推荐吗?

[复制链接]

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-7-20
在线时间
50 小时
发表于 2021-3-16 17:14:30 | 显示全部楼层 |阅读模式
10金钱

大家好,请教个关于软件架构的问题。


我们现有的程序是放在一个大循环 while(1) 里面去跑的,可以满足我们的需求,但是程序太复杂。主循环里放了十几个函数(一个函数对应一个功能),有的功能,执行条件多达十几个,退出条件也多达十几个,而且几个功能之间相互影响,相互协同,我们现在是用标志位(全局变量)去判断功能是否执行和是否退出,一个函数各种if,各种嵌套,有的函数甚至能到五六百行,公司新人需要好久才能看懂程序并且在此基础上修改他想要的功能。


现在公司要求我们上一个RTOS并且做一个逻辑简单清晰的程序架构,我对RTOS研究不深(只是做过移植,点亮过led灯),想问一下如果用上RTOS可以解决上面说的程序复杂的问题吗?大家都什么好的RTOS的程序架构推荐呢?







最佳答案

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

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14411
金钱
14411
注册时间
2018-8-3
在线时间
1156 小时
发表于 2021-3-16 17:14:31 | 显示全部楼层
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13108
金钱
13108
注册时间
2012-11-26
在线时间
3812 小时
发表于 2021-3-16 17:19:04 | 显示全部楼层
freertos吧   我目前都是用的这个   或者你去学习下ucos也行    几个rtos都差不多
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13108
金钱
13108
注册时间
2012-11-26
在线时间
3812 小时
发表于 2021-3-16 17:20:29 | 显示全部楼层
每个独立的需求,做成一个独立任务  然后用信号量或者队列进行任务间/中断与任务间通信
学无止境
回复

使用道具 举报

90

主题

534

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1059
金钱
1059
注册时间
2017-4-12
在线时间
280 小时
发表于 2021-3-16 17:35:45 | 显示全部楼层
随便的rtos 都可以
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2016-7-20
在线时间
50 小时
 楼主| 发表于 2021-3-16 18:33:47 | 显示全部楼层
jermy_z 发表于 2021-3-16 17:20
每个独立的需求,做成一个独立任务  然后用信号量或者队列进行任务间/中断与任务间通信

我们用rt-thread尝试改过一版程序,但是感觉和原来没啥变化,就是原来的函数变成了任务,原来的标志位(全局变量)变成了信号量,程序还是乱糟糟的,一堆嵌套的if,我们本来是想着把程序搞简单,让新人更容易上手,现在对新同事来说更复杂了,难搞
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13108
金钱
13108
注册时间
2012-11-26
在线时间
3812 小时
发表于 2021-3-17 08:30:27 | 显示全部楼层
嘿我可是太阳啊i 发表于 2021-3-16 18:33
我们用rt-thread尝试改过一版程序,但是感觉和原来没啥变化,就是原来的函数变成了任务,原来的标志位( ...

RTOS的目的是为了方便维护和移植,而不是为了新人上手。
学无止境
回复

使用道具 举报

2

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
679
金钱
679
注册时间
2020-11-21
在线时间
67 小时
发表于 2021-3-17 08:35:11 | 显示全部楼层
程序复杂是你们本身逻辑设计的太复杂了,要改程序本身逻辑。否则上啥系统都是白搭。
回复

使用道具 举报

2

主题

459

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4483
金钱
4483
注册时间
2018-5-14
在线时间
960 小时
发表于 2021-3-17 08:40:41 | 显示全部楼层
RTOS可以解决你的部分问题,总体来说还是处理架构问题,推荐逻辑处理走状态机方式,不然遇到处理慢的部分代码依然卡死
回复

使用道具 举报

10

主题

205

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1322
金钱
1322
注册时间
2015-3-3
在线时间
127 小时
发表于 2021-3-17 08:41:07 | 显示全部楼层
rtos中以前最常用的是ucosii,现在最常用的freertos,操作起来差不多.建议先使用ucosii,相对好入门一点,而且,你上边的开发问题,这样可以相对轻松地处理了,实时性还是很不错的。先入门一下config的配置,然后任务创建,消息(信号量/消息邮箱/消息队列)的发送和接收,了解完后,就开始使用,以用为主,然后你就慢慢熟悉了。
海纳百川者,荣耀伴一生!
回复

使用道具 举报

18

主题

151

帖子

0

精华

高级会员

Rank: 4

积分
508
金钱
508
注册时间
2020-4-22
在线时间
241 小时
发表于 2021-3-17 08:58:03 | 显示全部楼层
你们公司做什么方向的啊,有没有招人的计划啊,有点想跳槽了
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2021-3-17 11:20:53 | 显示全部楼层
代码复杂不是上RTOS的理由,说明你们设计的软件架构不怎么样。即使换成操作系统估计也好不到哪里去。ucos、freertos都可以用。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2021-3-17 11:34:44 | 显示全部楼层
RT-Thread非你莫属
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13108
金钱
13108
注册时间
2012-11-26
在线时间
3812 小时
发表于 2021-3-17 11:40:25 | 显示全部楼层
moranyidui 发表于 2021-3-17 08:58
你们公司做什么方向的啊,有没有招人的计划啊,有点想跳槽了

想跳槽,在本地投投简历啊,这样快一点
学无止境
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2021-3-17 22:23:54 | 显示全部楼层
目前用freertos+状态机方式,还行
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2020-4-9
在线时间
7 小时
发表于 2021-3-22 11:02:56 | 显示全部楼层
jermy_z 发表于 2021-3-16 17:20
每个独立的需求,做成一个独立任务  然后用信号量或者队列进行任务间/中断与任务间通信

想问一个 比如我要以一个 串口的 4G模块,定时上传信息,那么 这个4G模块的收发 算作两个任务吗,还是这个4G模块算作一个人,收发的话一个定时器触发,一个是串口中断接收触发呀
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13108
金钱
13108
注册时间
2012-11-26
在线时间
3812 小时
发表于 2021-3-22 11:15:14 | 显示全部楼层
forward2012 发表于 2021-3-22 11:02
想问一个 比如我要以一个 串口的 4G模块,定时上传信息,那么 这个4G模块的收发 算作两个任务吗,还是这 ...

嗯,如果是定时发送的话,可以用一个任务独立处理。然后收的发,也建立一个任务,用队列获取方式一直死等串口数据。串口那边中断方式接收完毕后,加入到队列,接收任务发觉到队列有数据就开始处理
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 06:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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