FreeRTOS从代码层面进行原理分析(4 移植)
从前 3 篇博客中我们已经搞清楚了最开始对 FreeRTOS 有疑问的前 2 个问题。
1. FreeRTOS 是如何建立任务的呢?
2. FreeRTOS 是调度和切换任务的呢?
3. FreeRTOS 是如何保证实时性呢?
以下就是前三篇博客的连接,如果要开始移植首先真的是要搞清楚原理,这样就可以明确移植的过程中那些是重点。让自己的行动更明确。
FreeRTOS从代码层面进行原理分析(1 任务的建立)
FreeRTOS从代码层面进行原理分析(2 任务的启动)
FreeRTOS从代码层面进行原理分析(3 任务的切换)
在能实际的通过让代码跑起来的方式分析我们的第三个问题 FreeRTOS 是如何保证实时性
时,首先就是要把 FreeRTOS 移植到我自己的板子上。然后再通过调试(在之前的博客也有过介绍如何调试)或者代码设置等方式来搞清楚这个问题。
我做本次实验的设备:
1.翻出大学时候买的 STM32 开发板。MCU 型号 STM32F103RCT6
2. 同时期买的 ST-Link
移植前的准备工作
书接上文!既然知道原理了,那么用起来还会难吗? 接下来然我们开始把 FreeRTOS 移植到板子上吧~ 目前网上很多都是使用 Keil 作为环境进行 FreeRTOS 的移植,在这篇博客中我们将会使用GCC交叉编译的方式来移植 FreeRTOS。其实原理上也是相似的。废话不多说,让我们继续。
首先使用使用 CubeMX 随便生成一个简单的小项目。对于 CubeMX 的安装和简单的配置,详细的文章太多了,这里面就不仔细讲了。
为了能和其他代码隔离开,咱们在这个 CubeMX 生成的的项目内建立一个叫做 freertos 的文件夹,专门存放 FreeRTOS 的代码。