写在前面:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
目录
在移植之前,首先说明一下,该篇章,包括之后的文章都是建立在 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
3、目标芯片:STM32F103VET6(Cotrex-M3)
4、下载调试工具:J-Link
一、FreeRTOS核心文件提取
在上一篇 FreeRTOS篇章之官方源码文档分析已经分析出我们真正需要的文件是在 FreeRTOSv9.0.0/FreeRTOS文件中,那么我们就去提取出需要的东西
先在工程主目录上建立一个名为 FreeRTOS的文档
再在下载下来的 FreeRTOSv9.0.0\FreeRTOS\Source文件夹中把下图的这几个文件放进到工程的文档中,而这些零散的源文件我们创一个 src文档来对它们进行管理,具体看后面移植完的文件结构分布图
至于 portable文档里面的内容,我们只需拿我们需要的接口就好了,全部拷贝文件太大了,不符合轻量级这个要求;所以进入 FreeRTOSv9.0.0\FreeRTOS\Source\portable文件夹中,你可以发现有好多以编译器命名的文档,由于我们的开发环境是在 Keil中的,所以我们要使用里面的 Keil文档的内容,再让我们进去文档里面瞅瞅有些啥?进去你会发现只有一个 See also the RVDS directory.txt文本,他叫我们查看 RVDS这个目录,那我们就进去看看呗,看下图
这下可以了,有支持我们的运行的接口,那就把 RVDS这个目录复制过去呗
其中,我们还需要把 FreeRTOS / Source / portable / MemMang目录也要复制过去,因为我们需要一个对堆进行分配的处理文件,而官方已经为我们提供了几个堆分配方案了,就是里面的几个 heap_x.c文件
最后移植完得到下图这样
最最最后,还要再把 FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil路径下(因为官方 demo中就这个文档最符合我们当前的移植工程)的 FreeRTOSConfig.h文件复制到我们用户可修改的 App文件夹下
二、工程导入及属性修改
保持之前的工程不变,二次修改并添加下图的文件进入工程
然后再改一下配置的属性为 ARMCM3
好了,基本的工程移植就完成了,然后你可能会疑问为什么选 heap_4这个堆分配方案的,这个在下一篇再进行解析