欲剖析FreeRTOS,首先得从其框架着手,从粗到细,再从细回归到粗,最终大一统。
在收集了解FreeRTOS相关信息的过程中,首先让我感到意外的是,它是由亚马逊的团队进行开发和维护,然而和这个名字联系起来,又感觉有点反差萌,不过这倒也是它的最大特色--免费。拥有亚马逊这顶带着光环的帽子,是不是也让大家将它作为选项之一立下汗马功劳呢?毕竟巨人的肩膀给人感觉更稳重,可靠,不过我认为,作为一家企业,如果其愿景是成为行业领跑者,必须具备在巨人将肩膀撤离的情况下,继续生存发展的能力。我一直这么认为,这两年发生的事,也证实了这一点。
闲话少叙,言归正传,本次了解一下FreeRTOS的框架和目录结构。
关于FreeRTOS架构及其在系统中的位置,下面这张图表示的很清楚,橙色方框部分即为亚马逊提供的:
可见,系统的软件方面,FreeRTOS之上为用户应用,之下为厂家提供的操作硬件的适配库,其除了内核外,还提供了一些连接协议,WiFi管理库,蓝牙管理库,无线更新,基础库等,这些组件,无疑为产品化应用攒下深厚的内功。其中部分内容,单个单词能认识,连起来就不知道是啥玩意了,从亚马逊官网上摘下来,先建立起一个初步印象:
下一步准备剖析内核,在正式剖析内核之前,自然需要把代码下载下来,先并分析其目录结构。
FreeRTOS有很多下载途径,如FreeRTOS官网(https://www.freertos.org/),Amazon FreeRTOS控制台以及GitHub,大致分析三种下载方式的差异,如下表:
综上,考虑到肯定需要实操,而当前没有实体平台可用,则采用通过Amazon FreeRTOS控制台方式下载下来的基于windows仿真环境代码,其代码量少,方便理清逻辑,也很方便进行实操。
目录结构如下:
--AmazonFreeRTOS
---- demos demo程序
---- freertos_kernel FreeRTOS内核程序
---- libraries 一些标准库,厂商库,第三库等
---- projects IDE工程文件
---- tests 项目测试用脚本,代码等
---- tools 工具
---- vendors 平台厂商开发的驱动等
---- CHANGELOG.md
---- checksums.json
---- CMakeLists.txt
---- CODE_OF_CONDUCT.md
---- CONTRIBUTING.md
---- directories.txt
---- LICENSE
---- PreLoad.cmake
---- README.md
也可以和Free RTOS官方网站的代码目录结构进行对比一下
前面Amazon FreeRTOS的目录freertos_kernel就完整对应这里的Source。而这里的Demo目录,则包含了多达170多个平台Demo程序。
现在对系统架构及目录结构知道个一二了,可以开始探索FreeRTOS内核了!