硬汉嵌入式论坛

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

[μCOS-III] 【干货分享】Micrium发布两期文档,如何发挥uCOS-III的最高性能之重要提示和项目实战注意事项

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2017-7-7 18:05:46 | 显示全部楼层 |阅读模式
说明:
文档下载:
uC-OS-III_Performance-Optimization-Part-1-Final.pdf (978 KB, 下载次数: 341)
uC-OS-III_Performance-Optimization-Part-2-Final.pdf (1.16 MB, 下载次数: 295)

文档2相对比较简单,主要是一些检测类宏定义的禁止,下面重点看文档1,比较实用:
1. 实际项目中,我们都会对工程做优化等级设置,以此使得芯片性能得到更好发挥,但是使用uCOS-III的信息调试工具uC/Probe,切不可优化文件os_dbg.c文件,防止调试工具无法使用。
实际应用uC/Probe,MDK和IAR要注意以下问题,这个是我之前做的总结:
(1).MDK要勾选option->output -> Debug Infomation选项,选择优化等级0
(2).IAR要选择选择优化等级low,其中如下两个地方比勾选
     a. option->C/C++ Compiler->Output选项中勾选Generate debug information。
     b. option->linker->Output选项中勾选Include Generate debug information in output。
(3).使能uCOS-III宏定义
     #define OS_CFG_DBG_EN                      1u
     #define OS_CFG_STAT_TASK_EN           1u 同时初始化统计任务
     #define CPU_CFG_INT_DIS_MEAS_EN   1u
(4).为了方便调试,参数OS_CFG_APP_HOOKS_EN,OS_CFG_ARG_CHK_EN都使能。

2. 推荐是最新的uCOS-III,即V3.06.00,之前的uCOS-III版本设计的有些臃肿,很多冗余的,不实用的功能,在这个版本已经删除的差不多了。比如多事件等待功能,即一个任务同时等待其它多个任务发来的信号量和消息队列,已经在V3.06.00版本中被删除了,官方建议使用事件标志组替代。实际上事件标志组是相当实用的,像我们V6板子做的音乐播放器,视频播放器里面的快进,快退,下一曲,上一曲,音频数据的DMA中断双缓冲就是采用事件标志组实现的,不仅仅是uCOS-III,其它的RTX,FreeRTOS采用事件标志组也相当实用:
QQ截图20170707180253.png

3.  uCOS-III最高优先级任务最好不要超过32,方便最高优先级任务查找函数调用指令CLZ(Count Leading Zeros),因为这个指令仅支持32位数据的计算,可以很快查找当前就绪的最高优先级任务。实际项目中,32个任务足够使用。
QQ截图20170707181126.png

QQ截图20170707181213.png

4. 尽管某些应用使用时间片调度还有些用途,但是大部分嵌入式系统应用中还是很少用到的。所以,如果工程中未用到同优先级任务,将时间片调度关闭掉,因为每次调用时间片这部分代码需要消耗50-100个指令。我们V6和V5板子中综合类工程,都没有用到同优先级任务,RTX,FreeRTOS和uCOS-III都适用。

5.  推荐使用任务信号量。无论是生成的代码量还是性能,都优于通用信号量组件。
QQ截图20170707182108.png

6. 推荐使用任务消息队列。无论是生成的代码量还是性能,都优于通用消息队列组件。
QQ截图20170707182411.png

7. 没有应用特别要求时,推荐OSXXXXPend类函数中的延迟时间设置为无限等待,不要设置具体的延迟等待时间,因为这样会无谓的浪费CPU时间。

8. 调试阶段使能的参数检测宏定义OS_CFG_ARG_CHK_EN,在实际应用时,将其禁能。

9. 调试阶段使能的禁止在中断服务程序中调用的API函数宏定义OS_CFG_CALLED_FROM_ISR_CHK_EN,实际应用时,将其禁能。

10. 调试阶段使能的uCOS-III不同组件的结构体变量类型检测宏定义OS_CFG_OBJ_TYPE_CHK_EN,实际应用时,将其禁能。

11. 一些特殊的低功耗类应用,可以禁能宏定义OS_CFG_TASK_TICK_EN,即禁止滴答定时器任务,可以一定程度上降低功能。虽然没有系统时钟节拍了,但是还能通过其它事件触发继续干活。特别适合键盘等类型的应用。

12. 最后一条,CPU是多少位的,uCOS-III的数据类型就设置成多少位,比如Cortex-M内核的MCU,那么os_type.h文件中的N多 typedef   CPU_INT32U   OS_XXXX,全部配置成32位数据类型。
回复

使用道具 举报

56

主题

905

回帖

1073

积分

至尊会员

积分
1073
发表于 2017-7-8 00:15:52 | 显示全部楼层
干货
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2017-7-8 01:00:01 | 显示全部楼层
[s:151] [s:151]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

0

主题

11

回帖

38

积分

新手上路

积分
38
发表于 2017-7-8 07:43:15 | 显示全部楼层
[s:151] [s:151]
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2017-7-8 10:54:11 | 显示全部楼层
任务消息队列和任务信号量怎么理解???

消息队列其实就是邮箱
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2017-7-8 11:02:31 | 显示全部楼层
个人不喜欢ucos,因为觉得它里面函数名、变量名大量使用莫名其妙的缩写。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
 楼主| 发表于 2017-7-8 11:03:44 | 显示全部楼层

回 novice 的帖子

novice:个人不喜欢ucos,因为觉得它里面函数名、变量名大量使用莫名其妙的缩写。
 (2017-07-08 11:02) 
我比较喜欢[s:150]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
 楼主| 发表于 2017-7-8 11:10:16 | 显示全部楼层

回 myxiaonia 的帖子

myxiaonia:任务消息队列和任务信号量怎么理解???

消息队列其实就是邮箱 (2017-07-08 10:54) 
这个任务信号量和任务消息队列的相关变量定义,都是存在各个任务的任务控制块里面,只要创建了相应任务,就有了,消息的收发控制都是直接对相应任务进行操作就行,使用非常方便。产生的代码量比较通用的信号量和消息队列要小不少,而且消息传递速度比通用的快。

现在FreeRTOS在8.XX版本之后也加入了这个功能,不过FreeRTOS的,做的太简陋,仅仅是给每个任务的任务控制块添加了一个全局变量,所有的事件标志组,信号量等都是对这个全局变量来操作实现的。没有uCOS这个做的好。
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2017-7-8 15:36:29 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个任务信号量和任务消息队列的相关变量定义,都是存在各个任务的任务控制块里面,只要创建了相应任务,就有了,消息的收发控制都是直接对相应任务进行操作就行,使用非常方便。产生的代码量比较通用的信号量和消息队列要小不少,而且消息传递速度比通用的快。

现在FreeRTOS在8 .. (2017-07-08 11:10) 
和事件标志很类似啊,怪不得叫任务xxx,这是属于这个任务独享的

估计未来消息队列是会设计成任务独享的,因为常用的邮箱就是多发一收的,和事件标志一样
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
 楼主| 发表于 2020-3-19 10:39:42 | 显示全部楼层
找了半天,终于把这个坟贴找到了。。。。
回复

使用道具 举报

73

主题

1200

回帖

1419

积分

至尊会员

积分
1419
发表于 2020-3-21 10:30:10 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-5-2 11:16:20 | 显示全部楼层
干货满满啊,,,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 05:55 , Processed in 0.197233 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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