1.获取FreeRTOS源码
提供的例程基于FreeRTOS的V10.4.6版本
1.1FreeRTOS官网获取
- 访问 FreeRTOS官网
- 点击页面的Download按钮,点击后会自动下载源码的压缩包。
该方法的缺点是下载速度较慢。
1.2正点原子资料获取
也可以去正点原子官网下载RTOS相关资料,其中就包含FreeRTOS的源码。
不管以哪种方式下载,源码的压缩包解压后都应当包含以下文件:
2.FreeRTOS源码内容
文件夹中的主要文件的作用如下表所示:
名称 | 描述 |
---|---|
FreeRTOS | FreeRTOS内核 |
FreeRTOS-Plus | FreeRTOS组件 |
tools | 工具 |
Github-FreeRTOS-Home | FreeRTOS的GitHub仓库链接 |
Quick_Start_Guide | 快速入门指南官方文档链接 |
Upgrading-to-FreeRTOS-xxx | 升级到指定FreeRTOS版本官方文档链接 |
History.txt | FreeRTOS历史更新记录 |
其他 | 其他 |
2.1 FreeRTOS内核
打开文件夹FreeRTOS,可以看到一些其他的文件,这些文件的作用如下表所示:
名称 | 描述 |
---|---|
Demo | FreeRTOS演示例程 |
License | FreeRTOS相关许可 |
Source | FreeRTOS源码 |
Test | 公用以及移植层测试代码 |
2.1.1 Demo文件夹
Demo文件夹内部就是FreeRTOS的演示例程,支持多种芯片架构和多种芯片型号。
这些演示例程可以帮助学习,在代码移植过程中非常有用。
2.1.2 Source文件夹
该文件夹下存放的就是FreeRTOS的源码,正如之前所说,FreeRTOS是一个轻量级、可裁剪的RTOS,所以其内部的代码文件非常简洁。
名称 | 描述 |
---|---|
include | 内包含了FreeRTOS的头文件 |
portable | 内包含了FreeRTOS的移植文件 |
croutine.c | 协程相关文件 |
event_groups.c | 事件相关文件 |
list.c | 列表相关文件 |
queue.c | 队列相关文件 |
stream_buffer.c | 流式缓冲区相关文件 |
task.c | 任务相关文件 |
timer.c | 软件定时器相关文件 |
其中,include和portable文件夹,list.c、queue.c、task.c文件是必须的,其他文件如果不需要也可以不使用。
FreeRTOS归根到底都是软件层面的东西,而要和硬件层面相联系所靠的就是portable文件夹。由于STM32多用MDK开发,因此只会介绍其中部分移植的文件。
- keil:指向RVDS文件夹
- RVDS:不同内核芯片的移植文件
- MemMang:内存管理文件
3.FreeRTOS移植
移植准备
- FreeRTOS源码
- 基础工程
移植步骤
- 将FreeRTOS源码添加至基础工程、头文件路径等。在这一步中,源码主要指的是portable文件夹中的文件,并且并非所有的文件都会被用到,因此可以删去一些自己不需要的文件。
- 添加FreeRTOSConfig.h配置文件。该文件的获取方法有三种,分别是:根据需求自己编写、DEMO例程获取以及从正点原子提供的例程中直接获取。
- 修改SYSTEM文件夹,该文件夹下主要包括有:sys.c、delay.c、usart.c。
- 修改中断相关文件(SysTick中断、SVC中断、PendSV中断。
- 添加应用程序,验证是否移植成功
注意:由于这部分是正点原子视频课的笔记,所以非常依赖于正点原子的开发板。