0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编码风格:µCOS vs FreeRTOS

strongerHuang 来源:strongerHuang 作者:strongerHuang 2023-01-11 10:14 次阅读

不定期有读者在问:

怎么才能写出漂亮的代码?

哪里有优秀的代码可以参考?

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

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

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

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

编码标准

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

提示:

MISRA C 标准,指的是汽车 C 语言开发标准,可以参看之前分享的文章:MISRA C:2012 标准是什么?

1.uC/OS

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

1c42b474-90df-11ed-bfe3-dac502259ad0.png

2.FreeRTOS

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

1c8b4752-90df-11ed-bfe3-dac502259ad0.png

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

比如:

1cb834ce-90df-11ed-bfe3-dac502259ad0.png

配置文件

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

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

1.uC/OS

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

1ce32904-90df-11ed-bfe3-dac502259ad0.gif

2.FreeRTOS

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

1f23769c-90df-11ed-bfe3-dac502259ad0.gif

标头

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

1.uC/OS

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

1f44df30-90df-11ed-bfe3-dac502259ad0.png

2.FreeRTOS

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

1f61fb1a-90df-11ed-bfe3-dac502259ad0.png

命名

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

1.文件名

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

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

1f8fde22-90df-11ed-bfe3-dac502259ad0.png

2.宏

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

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

1fbb08a4-90df-11ed-bfe3-dac502259ad0.png

3.数据类型

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

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

20304cd6-90df-11ed-bfe3-dac502259ad0.png

4.函数名

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

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

204ed174-90df-11ed-bfe3-dac502259ad0.png

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

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

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

注释

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

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

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

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

2074f1ce-90df-11ed-bfe3-dac502259ad0.png

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

缩进

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

20a495fa-90df-11ed-bfe3-dac502259ad0.png

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

单词缩写

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

缩写 原意
Addr Address
Blk Block
Chk Check
Clr Clear
Cnt Count
Ctr Counter
Ctx Context
Cur Current
Del Delete
Dly Delay
Err Error
OS Operating System‍‍
CPU Center Processing Unit

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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11032

    浏览量

    207297
  • 编码
    +关注

    关注

    6

    文章

    841

    浏览量

    54534
  • RTOS
    +关注

    关注

    20

    文章

    783

    浏览量

    118938
  • 代码
    +关注

    关注

    30

    文章

    4603

    浏览量

    67396
  • FreeRTOS
    +关注

    关注

    12

    文章

    475

    浏览量

    61532

原文标题:编码风格:µCOS vs FreeRTOS

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HDL编码风格编码

    本帖最后由 mr.pengyongche 于 2013-4-30 02:58 编辑 HDL编码风格编码
    发表于 08-12 12:09

    编码风格编码

    本帖最后由 mr.pengyongche 于 2013-4-30 02:56 编辑 编码风格编码
    发表于 08-17 09:34

    VS1053编码

    VS1053怎么将音频ADC采集的值编码输出?
    发表于 07-24 22:18

    FreeRTOS编码标准如何命名

    初学FreeRTOS,感觉函数和变量等相关的命名比较头疼看着,遂去查阅了一番,发现有一套很科学的体系在里面,磨刀不误砍柴功,希望能有跟我一样的初学者来了解一下命名规则。把网上的讲解保存了一下,发上来,供和我一样的初学者方便查阅。FreeRTOS
    发表于 06-10 04:36

    Linux内核编码风格(编程代码风格推荐)

    编码素质的重要性。相反没有良好的风格的代码读起来难看、晦涩,甚至有时候一个括号没对齐就能造成对程序的曲解或者不理解。我曾经就遇见过这样的情况,花费了很多不必要的时间在程序的上下文对照上,还debug了
    发表于 08-24 09:45

    梳理一下FreeRTOS内核代码规范

    [导读] 遇到些朋友感觉FreeRTOS内核代码看起来很不习惯,不习惯其编码风格,本文就来梳理一下其代码规范,便于提高阅读其代码的效率。代码基于FreeRTOS V10.4.3。Fre
    发表于 03-01 07:33

    Gowin HDL编码风格要求及编码实现

    本手册主要描述高云®HDL 编码风格要求及原语的 HDL 编码实现,旨在帮助用户快速熟悉高云 HDL 编码风格和原语实现,指导用户设计,提高
    发表于 09-29 06:23

    如何使用VS Code和PlatformIO更好的Arduino编码

    使用VS Code和PlatformIO为Arduino编码带来了新鲜的空气。由于Visual Studio的Live Share功能,它还使远程协作变得更加容易。
    的头像 发表于 11-29 09:30 1.9w次阅读

    FreeRTOS编码规则及风格指南

    1.编码标准 FreeRTOS的核心源代码遵从MISRA编码标准指南。这个标准篇幅稍长,你可以在MISRA官方网站花少量钱买到,这里不再复制任何标准。 FreeRTOS源代码不符合MI
    的头像 发表于 01-10 11:00 2438次阅读

    关于Linux的内核代码风格

    编码风格错误开始 曾经在开发Linux内核驱动的时候,创建了一个补丁文件,但是在把补丁打到主分支的时候提示很多编码风格的错误问题,后来重做了补丁才解决了问题,这也是没有严格按照的Li
    的头像 发表于 04-25 14:50 1624次阅读

    一文带你快速理解FreeRTOS代码规范

    [导读] 遇到些朋友感觉FreeRTOS内核代码看起来很不习惯,不习惯其编码风格,本文就来梳理一下其代码规范,便于提高阅读其代码的效率。代...
    发表于 01-25 19:37 0次下载
    一文带你快速理解<b class='flag-5'>FreeRTOS</b>代码规范

    Sin/Cos编码器与Sitara AM437x的连接参考设计

    电子发烧友网站提供《Sin/Cos编码器与Sitara AM437x的连接参考设计.zip》资料免费下载
    发表于 09-06 11:31 1次下载
    Sin/<b class='flag-5'>Cos</b><b class='flag-5'>编码</b>器与Sitara AM437x的连接参考设计

    Gowin HDL编码风格用户指南

    本手册主要描述高云®HDL 编码风格要求及原语的 HDL 编码实现,旨在 帮助用户快速熟悉高云 HDL 编码风格和原语实现,指导用户设计,
    发表于 09-15 16:02 0次下载
    Gowin HDL<b class='flag-5'>编码</b><b class='flag-5'>风格</b>用户指南

    Verilog编码风格的建议

    良好的编码风格,有助于代码的阅读、调试和修改。虽然 Verilog 代码可以在保证语法正确的前提下任意编写,但是潦草的编码风格往往是一锤子买卖。
    的头像 发表于 06-01 16:27 548次阅读
    Verilog<b class='flag-5'>编码</b><b class='flag-5'>风格</b>的建议

    阿里AliOS的编码风格

    其实,我们身边就有很多“好的资源”值得学习,比如本文分享的 阿里 AliOS 的编码风格
    发表于 06-02 09:26 150次阅读