在移植之前,首先说明一下,该篇章,包括之后的文章都是建立在 CM-3 处理器上(用之前写 STM32 笔记的 STM32F103VET6),并且是用 FreeRTOS 的 V9.0.0 版本的核心文件进行移植,我们只需要把原有的 STM32 基础工程(STM32 的教程链接 ☜)二次添加我们所需的 FreeRTOS 核心文件就可以了

1、开发环境:Keil uVision5 V5.21
2、ST 外设标准固件库: V3.5
3、FreeRTOS 版本库:V9.0.0
4、目标芯片:STM32F103VET6(Cotrex-M3)
5、下载调试工具:J-Link

# FreeRTOS 核心文件提取

在上一篇 FreeRTOS 篇章之官方源码文档分析 已经分析出我们真正需要的文件是在 FreeRTOSv9.0.0/FreeRTOS 文件中,那么我们就去提取出需要的东西。

先在工程主目录上建立一个名为 FreeRTOS 的文档

img

再在下载下来的 FreeRTOSv9.0.0\FreeRTOS\Source 文件夹中把下图的这几个文件放进到工程的文档中,而这些零散的源文件我们创一个 src 文档来对它们进行管理,具体看后面移植完的文件结构分布图:

img

至于 portable 文档里面的内容,我们只需拿我们需要的接口就好了,全部拷贝文件太大了,不符合轻量级这个要求;所以进入 FreeRTOSv9.0.0\FreeRTOS\Source\portable 文件夹中,你可以发现有好多以编译器命名的文档,由于我们的开发环境是在 Keil 中的,所以我们要使用里面的 Keil 文档的内容,再让我们进去文档里面瞅瞅有些啥?进去你会发现只有一个 See also the RVDS directory.txt 文本,他叫我们查看 RVDS 这个目录,那我们就进去看看呗,看下图:

img

这下可以了,有支持我们的运行的接口,那就把 RVDS 这个目录复制过去呗

其中,我们还需要把 FreeRTOS/Source/portable/MemMang 目录也要复制过去,因为我们需要一个对堆进行分配的处理文件,而官方已经为我们提供了几个堆分配方案了,就是里面的几个 heap_x.c 文件

最后移植完得到下图这样:

img

img

最最最后,还要再把 FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil 路径下(因为官方 demo 中就这个文档最符合我们当前的移植工程)的 FreeRTOSConfig.h 文件复制到我们用户可修改的 App 文件夹下。

# 工程导入及属性修改

保持之前的工程不变,二次修改并添加下图的文件进入工程:

img

然后再改一下配置的属性为 ARMCM3, 配置属性不用改,是哪款 M3 芯片就选哪个芯片,例如用的是 stm32f103zet6,那就选这个:

img

好了,基本的工程移植就完成了,然后你可能会疑问为什么选 heap_4 这个堆分配方案的,这个在下一篇再进行解析

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

夏沫の浅雨 微信支付

微信支付

夏沫の浅雨 支付宝

支付宝