FreeRTOS编码标准及规范

关注+星标公众,不错过精彩内容

fd8e4f36f979997c539e1f1668b0faad.gif

作者 | strongerHuang

微信公众号 | strongerHuang

据某研究机构统计,目前全球RTOS市场占有率最高的是FreeRTOS,当然,统计的具体方法我们不得而知,但FreeRTOS的确很活跃。

这里问问大家,你身边使用 FreeRTOS 的朋友或同事多吗?

下面给大家分享一下 FreeRTOS 编码标准及规范。

FreeRTOS编码标准

FreeRTOS V11.0之前的内核版本,符合MISRA C:2004 编码标准。但目前最新的FreeRTOS内核遵循 MISRA C:2012 编码标准。

什么是 MISRA C:2012 编码标准?大家可以参看我之前分享的文章:《MISRA C:2012 又是什么标准?》。

MISRA C是由汽车产业软件可靠性协会(MISRA)提出的C语言开发标准。其目的是在增进嵌入式系统的安全性及可移植性,针对C++语言也有对应的标准MISRA C++。

因为 FreeRTOS 使用多种不同的编译器构建,其中不乏相对高级的编译器。因此, FreeRTOS 没有使用 C99 或其他标准,而是采用更加严格的 MISRA C 编码标准。

由于 FreeRTOS V11.0之前的内核版本,采用MISRA C:2004 编码标准,所以使用 PC-Lint 工具进行代码静态分析时,可能存在与 MISRA 标准的一些偏差。

FreeRTOS编码规范

不同的RTOS有不同的命名规范,通常来说,公司如果对代码质量要求高一点,公司内部都会有编码规范。

下面是 FreeRTOS 常见的一些编码规范。

1、变量

uint8_t 类型变量以 uc 为前缀,其中“u”表示“unsigned” ,“c”表示“char ”。

uint16_t 类型变量以 us 为前缀,其中“u”表示“unsigned” ,“s”表示“short”。

uint32_t 类型变量以 ul 为前缀,其中“u”表示“unsigned” ,“l”表示“long”。

比如:

static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];


static uint32_t ulTotalRunTime = 0UL;

size_t 类型变量以 x 为前缀,比如:

static size_t xFreeBytesRemaining = 0U;

但 size_t 其实大多数情况被定义为 “unsigned int”,因此,size_t 类型变量也有带 ux 前缀。

枚举变量以 e 为前缀。

指针以附加 p 为前缀。

2、函数

静态或私有函数以 prv 为前缀。

比如:

static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB )

API 函数返回类型为 void 添加前缀 v。

比如:

void vApplicationTickHook( void );

3、宏定义

通常以定义宏的文件为前缀,且前缀为小写。


例如, FreeRTOSConfig.h 中定义。

#define configUSE_PREEMPTION      1

除前缀外,宏定义其他均使用大写字母书写,并使用下划线来分隔单词。

4、数据类型

主要使用 stdint.h 类型和 RTOS 自带的 typedef,但也有个别除外。

比如:

  • TickType_t

  • BaseType_t

  • StackType_t

  • ......

5、缩进

使用四个空格字符进行缩进。

6、注释

通常以 /* */ 方式进行注释,注释始终不会超过第 80 列。

由于时间有限,这里只分享一些主要内容,更多编码规范,还是需要大家自己阅读源码进行了解。

f4ac7d4bf8bac7acd608dcdcae8081d7.png

其实你会发现,虽然不同RTOS之间的编码规范不同,但每一款RTOS都会严格遵循自家的编码规范,不但方便自己升级维护,也方便用户阅读源码。

------------ END ------------

9b48895b85a971128bae0d58f017c0a8.gif

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

7ce3dc2f0f2582ed1f2c681b5d449ac5.jpeg

37267ef1b89518c7d82a4aa087e6a9bd.png

点击“阅读原文”查看更多分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongerHuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值