硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2217|回复: 13
收起左侧

[技术讨论] 请教硬汉,选用那种RTOS比较好?

  [复制链接]

30

主题

90

回帖

180

积分

初级会员

积分
180
发表于 2022-9-1 08:16:42 | 显示全部楼层 |阅读模式
我现在一些小项目都用前后台系统,用的都是状态切换。现在想用RTOS减少编程麻烦,对其它的性能方面没有太多要求。您对这些比较熟悉,能否推荐一款。
回复

使用道具 举报

5

主题

65

回帖

80

积分

初级会员

积分
80
发表于 2022-9-1 10:22:50 | 显示全部楼层
其实看你用那种比较熟,能更好的应用,比如我比较熟悉UCOSIII,我就用的UCOS,后来发现自己写的更好用,就用的自己的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2022-9-2 11:09:28 | 显示全部楼层
实时操作系统方案讨论
https://forum.anfulai.cn/forum.p ... 4870&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

34

回帖

46

积分

新手上路

积分
46
发表于 2022-9-4 19:18:53 | 显示全部楼层
我和你一样的情况,最开始看安富莱给threadx捧上了天,我尝试使用threadx,可能是我自己移植的原因,一直不够稳定,运行一段时间就死机。果断pass掉了。

然后切换到ucosiii,这个系统挺稳定的,但是我感觉函数参数过多,过于复杂,队列只只能传递指针,看着不爽,也给ucos pass掉了,现在使用 freertos

打个比方,下面是ucos创建任务的函数,你看,搞一大堆参数,一看就烦。
OSTaskCreate((OS_TCB       *)&ServoTaskTcb,
                 (CPU_CHAR     *)"ServoTask",
                 (OS_TASK_PTR   ) ServoTask,
                 (void         *)0,
                 (OS_PRIO       )ServoTaskPrio,
                 (CPU_STK      *)ServoTaskStack,
                 (CPU_STK_SIZE  )ServoTaskStackSize / 10,
                 (CPU_STK_SIZE  )ServoTaskStackSize,
                 (OS_MSG_QTY    )0,
                 (OS_TICK       )0,
                 (void         *)0,
                 (OS_OPT        )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
                 (OS_ERR       *)&err);

再看看 freertos的 简简单单,用起来非常清爽。

    xTaskCreate( vMainTask,        // 任务函数
             "vMainTask",          // 任务名
             512,                       // 任务栈大小,单位word,也就是4字节
             NULL,                      // 任务参数
             30,                        // 任务优先级
             &xHandleMain);       // 任务句柄
   
   
在看看ucos的延时函数,居然要传递3个参数,兼职神经病。
OSTimeDly(10, OS_OPT_TIME_DLY, &err);

再看看 freertos的,一个参数搞定
vTaskDelay(10);


ucos3好像没有二值信号量,我的程序大量使用 二值信号量,(意思是我要多次释放信号量,但是只能获取一次),freertos 就可以,ucos就不行
这一点请硬汉指正,我不是很确定。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2022-9-5 00:46:03 | 显示全部楼层
asj 发表于 2022-9-4 19:18
我和你一样的情况,最开始看安富莱给threadx捧上了天,我尝试使用threadx,可能是我自己移植的原因,一直不 ...

1、这个锅ThreadX不背。

2、函数 xTaskCreate和OSTaskCreate比较的话,函数xTaskCreate支持的太简单了,函数OSTaskCreate等于 FreeRTOS的 xTaskCreate + 栈检测+任务信号量+任务消息队列+时间片设置等好几个函数的叠加
(1)首先就是这个时间片,FreeRTOS的时间片调度仅支持1个时间片,不支持任务单独设置时间片参数,这是个较大的缺陷。
(2)函数OSTaskCreate可以设置Red Zone栈溢出保护,还有单独的栈检测OS_OPT_TASK_STK_CHK。FreeRTOS就得专门的设置用。
(3)函数OSTaskCreate可以创建任务信号量,任务消息队列,而FreeRTOS就得单独的创建,巨麻烦。

ps: 其实如果你喜欢函数的简约风,可以试试RTX,简直不用动脑子,傻瓜式,用户仅需把函数名给了就行。

3. 函数OSTimeDly(10, OS_OPT_TIME_DLY, &err);比vTaskDelay玩法丰富的多,函数vTaskDelay仅仅个相对延迟,函数OSTimeDly可以相对,绝对,溢出,周期等,不要太丰富。

4.  二值信号量,只是个OS基本都支持,二值信号量就是个简单的计数标志只有0和1。
image.png


回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2022-9-5 08:50:00 | 显示全部楼层
RTX5,ThreadX,RT-Thread,uCosIII,FreeRTOS都可以哦! 硬汉大哥说的没错ThreadX不背这个锅,我的系统用有使用ThreadX的,300多小时的连续压力测试,没有复位现象,稳定如初。
回复

使用道具 举报

44

主题

242

回帖

374

积分

高级会员

积分
374
发表于 2022-9-5 09:21:21 | 显示全部楼层
没钱,只能选ucos,因为就它过了安全认证。
回复

使用道具 举报

5

主题

104

回帖

119

积分

初级会员

积分
119
发表于 2022-9-5 10:36:43 | 显示全部楼层
你确定使用RTOS能减少编程麻烦?
回复

使用道具 举报

4

主题

34

回帖

46

积分

新手上路

积分
46
发表于 2022-9-5 13:14:10 | 显示全部楼层
eric2013 发表于 2022-9-5 00:46
1、这个锅ThreadX不背。

2、函数 xTaskCreate和OSTaskCreate比较的话,函数xTaskCreate支持的太简单了 ...

谢谢硬汉的指正

我rtos用的少,你们听硬汉的。

其实我需求比较低,不需要复杂的功能,freertos挺适合我。
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2022-9-6 16:09:52 | 显示全部楼层
再看看大家的讨论
回复

使用道具 举报

30

主题

90

回帖

180

积分

初级会员

积分
180
 楼主| 发表于 2022-9-6 16:11:37 | 显示全部楼层
calvinxxw 发表于 2022-9-5 10:36
你确定使用RTOS能减少编程麻烦?

用过UCOS,复杂任务还是RTOS减少麻烦,但相对简单点的就很犹豫,所以看看大家的观点
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2022-9-7 18:30:33 | 显示全部楼层
都是高手呀,我到现在还没有玩过上系统,一定要玩一下!
回复

使用道具 举报

4

主题

34

回帖

46

积分

新手上路

积分
46
发表于 2022-9-7 22:14:16 | 显示全部楼层
用了rtos确实爽,解决了裸机编程的一些痛点。

比如modbus 主机,解决了超时 等问题。

做设备流程控制的时候,多个任务流程 自带暂停功能,直接把任务暂停就行了。

这些在裸机编程的时候 非常麻烦
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2022-9-11 11:12:27 | 显示全部楼层
毫无疑问,必须RT-Thread
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:29 , Processed in 0.049437 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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