首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

选择 µCOS 还是 FreeRTOS ?

最近有小伙伴在问:学习RTOS,选择 µCOS  还是 FreeRTOS ?

其实类似的问题,经常都有老铁在问,没有统一的答案,通常来说,学会一款RTOS,再学其他的RTOS就相对很容易了。

就目前而言,µCOS 和 FreeRTOS 都比较适合初学者,µCOS源码相对比较规范,也更容易理解。FreeRTOS市场占有率比较高,学习资料比较多。

当然,他们俩各有各的特点,今天就给大家分享一下这两款RTOS的编码规范,以uC/OS-III V3.08.02和 FreeRTOS V10.5.1为例。

编码标准

uC/OS 和 FreeRTOS 都是遵循 MISRA C 编码标准,均支持 PC-Lint 静态检查,两者官方文档都有说明。

提示:

MISRA C 标准,指的是汽车 C 语言开发标准。

1.uC/OS

uC/OS文章明确指出遵循MISRA C:2012标准,也支持 PC-Lint 的静态检查。

2.FreeRTOS

FreeRTOS也明确指出采用 MISRA C编码标准,但是不支持 C99 之后的标准,也支持 PC-Lint 静态检查。

FreeRTOS在源代码中有大量说明(注释)对 PC-Lint 静态检查可能会引起异常的代码,这一点在 uC/OS 源代码中是没有的。

比如:

配置文件

两种RTOS配置文件(也就是所谓的“裁剪”文件)的“内容”有点类似,也是进行了分类。

不过,uC/OS的分类和注释更人性化,更适合初学者理解。

1.uC/OS

uC/OS的配置文件通常是:os_cfg.h

2.FreeRTOS

FreeRTOS的配置文件通常是:FreeRTOSConfig.h

标头

两种RTOS标头的“内容”有点类似,只是一个居中,一个靠左。

1.uC/OS

包含RTOS版本、版权说明、开源协议说明等:

2.FreeRTOS

包含RTOS版本、版权说明、开源协议说明、网址等,和uC/OS类似。

命名

两种RTOS命名规则差别有点大,但都符合常规代码命名规则。

1.文件名

uC/OS以【os_系统文件】方式,显得更规范(体现了模块化)。

FreeRTOS就比较直接,这个可能是刚才是命名的时候没有长期规划,然后为了兼容,一直沿用至今。(这种更容易引起文件重名)

2.宏

两者有共同之处:下划线隔开大写字母,但是开头(前缀)有一定区别。

以“配置文件”为例:uC/OS以【OS_CFG_】开头,FreeRTOS以【config】开头。

3.数据类型

uC/OS定义的数据类型,相对更常见,也更适合新手。

FreeRTOS定义的数据类型,更“系统”一点,适合老司机,对新手相对没那么友好。

4.函数名

两者有点类似,前缀不一样,后面都是以【大写字母开头】进行区分。

比如:创建任务的函数名:

FreeRTOS的前缀官方有这样的描述:

静态(static)函数以 prv 为前缀。比如:prvIdleTask 函数。

API 函数以其返回类型为前缀,void 类型以 v 为缀。比如:vTaskDelete 函数。

注释

//  /* */ 是两种最常见注释的方法,但这两种 RTOS 基本以【/* */】注释居多。

注释的位置也是有讲究,通常在代码所在行上一行,或者在代码所在行(代码后面)。

这里主要说明一下,FreeRTOS在代码中没有相信注释函数的功能、参数、返回值等信息。

还是以“创建任务”函数为例:

当然,FreeRTOS的函数注释信息,在手册中有相信描述。

缩进

这两种RTOS缩进方式一样,都是采用 4 空格:

这里要提醒一下,切记不要 Tab 和空格两者混用,不然代码就是一片乱。(在不少新手,或者初级工程中就经常出现这种,代码简直不敢看)

单词缩写

不同的领域,有不同的缩写方式。在RTOS中也有一些常见的缩写单词,比如:

好了,本文就分享到这里。以上只是列举了部分典型的编码风格,更多细节,大家可以抽时间自行研究。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ohuj834Ml8YSSYj5qX-hsdaA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券