谷动谷力

 找回密码
 立即注册
查看: 895|回复: 0
打印 上一主题 下一主题
收起左侧

编码风格:µCOS vs FreeRTOS

[复制链接]
跳转到指定楼层
楼主
发表于 2023-5-8 22:53:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
编码风格:µCOS vs FreeRTOS

不定期有读者在问:
[color=var(--weui-FG-HALF)]1. 怎么才能写出漂亮的代码?2. 哪里有优秀的代码可以参考?

3. 怎样才能提高自己编码水平?


其实,我们身边到处都有优秀的代码可以借鉴,只是你没有认真去发现而已。裸机、RTOS、Linux等各类优秀的开源代码,相信你一定见到过,还有一些优秀的开源库你也肯定接触过。

想要写出漂亮、优秀的代码,首先,你的代码必须要有一套规范。

[color=var(--weui-FG-1)]strongerHuang

[color=rgba(255, 255, 255, 0.9)],赞246






今天就给大家分享一下我们身边熟知的RTOS的编码规范,以目前(2023-01-10)最新版本的uC/OS-III V3.08.02和 FreeRTOS V10.5.1为例:

一、编码标准
uC/OS 和 FreeRTOS 都是遵循 MISRA C 编码标准,均支持 PC-Lint 静态检查,两者官方文档都有说明。
提示:MISRA C 标准,指的是汽车 C 语言开发标准,可以参看之前分享的文章:[color=var(--weui-LINK)]MISRA C:2012 标准是什么?
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中也有一些常见的缩写单词,比如:

缩写
原意
AddrAddress
BlkBlock
ChkCheck
ClrClear
CntCount
CtrCounter
CtxContext
CurCurrent
DelDelete
DlyDelay
ErrError
OS
Operating System
CPU
Center Processing Unit
好了,本文就分享到这里。以上只是列举了部分典型的编码风格,更多细节,大家可以抽时间自行研究。
来源:strongerHuang




+10
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-11-17 12:48 , Processed in 0.206334 second(s), 40 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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