起源
先说一下FreeRTOS的起源,FreeRTOS是由Richard Barry在2003年由设计的,由于其设计的小巧简单,整个核心代码只有3到4个C文件。在设计之初就异军突起,累计开发者数百万,是目前市场占有率最高的RTOS,现在FreeRTOS已经支持三十多种芯片,基本包含市场上所有的微控制器。FreeRTOS在2018年被亚马逊收购,继续遵循GPLV2许可协议完全免费。 Richard Barry为了让代码容易阅读、移植和维护,大部分的代码都是以C语言编写,只有一些内核调度函数采用汇编编写。
正题
- 获取源码
freeRTOS官网,进入官网点击download FreeRTOS,按照提示下载源码。
最新的版本是10.2.1,下载完成后是一个exe文件,点击解压。
2. 命名规则
FreeRTOS核心源码文件的编写遵循MISRA(The Motor Industry Software Reliability Association 汽车工业软件可靠性联会)代码规则,同时支持各种编译器
变量
- uint32_t定义的变量都加上前缀ul,u代表unsigned 无符号,l代表long长整型。
- uint16_t定义的变量都加上前缀us。u代表unsigned无符号,s代表short短整型。
- uint8_t定义的变量都加上前缀uc。u代表unsigned无符号,c代表char字符型。
- size_t 定义的变量也要加上前缀ux。枚举变量会加上前缀e。 指针变量会加上前缀p。
函数
- 加上了static声明的函数,定义时要加上前缀prv(这个是单词private的缩写)。
- 带有返回值的函数,根据返回值的数据类型,加上相应的前缀,如果没有返回值,即void类型 ,函数的前缀加上字母v。
- 根据文件名,文件中相应的函数定义时也将文件名加到函数命名中,比如tasks.c文件中函数vTaskDelete,函数中的task就是文件名中的task。
宏定义
- 据宏定义所在的文件,文件中的宏定义声明时也将文件名加到宏定义中,比如宏定义configUSE_PREEMPTION 是定义在文件 FreeRTOSConfig.h里面。宏定义中的config就是文件名中的config。另外注意