将FreeRTOS移植到基于cubemx生成的stm32F1系列单片机工程上(找了很多资料才移植成功)

因为无聊所以想移植一下RTOS试试,之前只是听说过从来没有用过。看了很多教程,包括韦东山老师的视频,但是都没有移植成功,后来发现关键是错误是由于Keil MDK版本更新后,不再支持编译器版本5,而默认编译器版本被设置为编译器版本6。于是尝试安装编译器版本5(Arm compiler version 5,V5.06 update7).

注意注意:此篇文章仅使用于习惯使用FreeRTOS自己写任务,cubemx是可以直接配置FreeRTOS的。

第一步.准备一个程序源码

因为最近在用cubemx,所以直接用cubemx生成的源码进行移植

第二步.freertos源码移植.

我选择的是FreeRTOS V9.0.0 这个版本,因为找到的资料比较多,这个也比较稳定。

在移植之前,我们首先要获取到 FreeRTOS 的官方的源码包。这里提供两个下载链接 ,是我从其他博主那copy的, 一 个是 官 网 : http://www.freertos.org/ , 另 外 一 个 是 代 码 托 管 网 站 : https://sourceforge.net/projects/freertos/files/FreeRTOS/。(参考自点击链接

若不能下,还可以下我网盘里的链接:https://pan.baidu.com/s/1_KBqArf6Mk_M0gsOHrCJeg?pwd=v9la 
提取码:v9la

第三步.往源程序里添加必要的.c和.h

1.在源程序中建立如图的文件夹FreeRTOS

2. 在文件夹里面继续建立port和src

src 文件夹用于保存 FreeRTOS 中的核心源文件,也就是我们常说的 ‘.c 文件’

port用于存放内存管理以及处理器架构相关代码,这些代码 FreeRTOS 官方已经提供给我们的,直接使用即可,FreeRTOS 是软件,我们的开发版是硬件,软硬件必须有桥梁来连接,这些与处理器架构相 关的代码,可以称之为 RTOS 硬件接口层,它们位于 FreeRTOS/Source/Portable文件夹下

. 打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source”目录下找到 所有的‘.c 文件’,将它们拷贝到我们新建的 src 文件夹中,

3.在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目 录下找到“MemMang”文件夹,“Keil”文件夹与“RVDS”文件夹,将它们拷贝到我们新建的 port 文件夹中,

 4.在“FreeRTOSv9.0.0\ FreeRTOS\Source”目录下找到 “include”文件夹,它是我们需要用到 FreeRTOS 的一些头文件,将它直接拷贝 到我们新建的 FreeRTOS 文件夹中,完成这一步之后就可以看到我们新建的 FreeRTOS 文件夹已经有 3 个文件夹,这 3个文件夹就包含 FreeRTOS 的核心文件.

 5.拷贝 FreeRTOSConfig.h 文件到 SYSTEM 文件夹(注意,并不是非得这个文件夹,这个文件夹是我自己创建的,因为这个程序是我在用openmv和单片机做图像识别时写的,里面有几个文件夹是我自己加的)

6.新建 FreeRTOS/src 和 FreeRTOS/port 组,接下来我们在开发环境里面新建 FreeRTOS/src 和 FreeRTOS/port 两个组文件夹,其中 FreeRTOS/src 用于存放 src 文件夹的内容,FreeRTOS/port 用于存放 port\MemMang 文件夹 与 port\RVDS\ARM_CM?文件夹的内容,“?”表示 3、4 或者 7.具体选择哪个得看你 使用的是哪个型号的 STM32 开发板,CM是内核的意思,F1系列的话就是CM3,就拷贝port\RVDS\ARM_CM3

F4系列就拷贝port\RVDS\ARM_CM4,然后我们将工程文件中 FreeRTOS 的内容添加到工程中去,按照已经新建的分组添加 我们的 FreeRTOS 工程源码。 在 FreeRTOS/port 分组中添加 MemMang 文件夹中的文件只需选择其中一个即可,我 们选择“heap_4.c”,这是 FreeRTOS 的一个内存管理源码文件。同时,需要根据自己的开 发板型号在 FreeRTOS\port\RVDS\ARM_CM?中

选择,“?”表示 3、4 或者 7,具体选择 哪个得看你使用的是哪个型号的 STM32 开发板。

效果如图,不要忘记加入FreeRTOSConfig.h


 第四步编译运行

一看100多个错误,当时就是这个地方卡了很久,后来发现就是编译器版本的问题,由于Keil MDK版本更新后,不再支持编译器版本5,而默认编译器版本被设置为编译器版本6。于是尝试安装编译器版本5(Arm compiler version 5,V5.06 update7).

 第五步:安装Arm compiler version 5

首先,我们需要从官网上下载资源,Legacy Arm Compiler 5, 4.1, and RVCT (ACOMP5)

因为这个下载要注册,嫌麻烦的可以直接下我网盘资料里面的

链接:https://pan.baidu.com/s/1r4qw9aebbnM5UWx31u8dFQ?pwd=imbr 
提取码:imbr

  1. 当下载安装包成功后,我们找到 installer 内的安装程序 “ setup.exe ”,双击进入安装程序;

   2. 安装编译器时,安装路径选择 “ keil安装路径下的 ARM 目录下”;下图是安装成功后的效果图:

 按如图操作方式,将5的编译器加入进去

 

 此时再编译,0错误0警告

 移植的时候总是出现这样那样的问题,各种解决方法都有很多,但是发现降编译器版本的解决方式基本都怎么找不到,所以写了这篇文章以期帮助那些试过很多办法都没移植成功的人,可能照此法依旧不行,但至少多条解决办法的路子。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值