打印
[应用方案]

FreeRTOS编码标准及规范

[复制链接]
410|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2024-9-19 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
据某研究机构统计,目前全球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_tBaseType_tStackType_t......
5、缩进使用四个空格字符进行缩进。
6、注释通常以 /* */ 方式进行注释,注释始终不会超过第 80 列。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

983

主题

3060

帖子

7

粉丝