FreeRTOS移植

1. FreeRTOS下载、

下载内核文件:FreeRTOS 实时内核 (RTOS) - 浏览 /FreeRTOS at SourceForge.net

选择一个合适的版本,本次移植使用10.0.1。 可以使用最新的版本进行移植。

 下载完成并解压文件。

2.  创建工程文件

本次使用的MCU为STM32F103ZET6。

FreeRtos文件夹用于存放操作系统相关文件。

 打开KEIL软件,新建Project,选择处理器,我这里选择ARMCM3。

CMSIS 栏选中 CORE Device 栏选中 Startup 这两个文件。

 在工程中添加文件组。

编译,此时缺少main函数。

 还有错误,可先不管。

 3. 移植内核源码

 解压好内核文件,将FreeRTOSv10.0.1\FreeRTOS\Source目录下的所有文件移植至工程目录下的FreeRtos文件下。

 删除不需要的文件,只保留MemMang和RVDS文件夹。

 删除RVDS目录下的其他文件,保留ARM_CM3。

 添加文件到工程中。

添加头文件路径。

 

 编译,此时缺少FreeRTOSConfig.h头文件。

..\FreeRtos\include\FreeRTOS.h(56): error:  #5: cannot open source input file "FreeRTOSConfig.h": No such file or directory

 在下载的源码文件例程中找一个FreeRTOSConfig.h添加到工程目录下,包含其所在的路径。

 

 编译,此时报错未定义xTaskGetCurrentTaskHandle,在工程中搜索xTaskGetCurrentTaskHandle。

工程中只有此处定义了#define INCLUDE_xTaskGetCurrentTaskHandle 0,可试将0改为1。

 

 再编译时,未定义xTaskGetCurrentTaskHandle的问题已经解决。又回到了上次出现的问题。

.\Objects\FreeRTOS.axf: Error: L6218E: Undefined symbol Image$$ARM_LIB_STACK$$ZI$$Limit (referred from startup_armcm3.o).

解决办法,点击魔法棒,在Linker下取消Use Memory Layout from Target Dialog的勾选,按下图先后顺序进行操作。

 

 

最后编译,工程中已经无报错无警告了。一份只含FreeRTOS的工程文件创建完成。

4. 在现有工程中移植FreeRTOS

首先准备一份无报错无警告的现有工程文件,以STM32F103VET6固件库开发模板为例。

 

在工程目录下新建一个FreeRTOS文件夹用于存放FreeRTOS内核源码,并将下载好的源码移植到该目录下。

 

 删除不用的文件,在FreeRTOS\portable目录下只保留MemMang和RVDS文件,FreeRTOS\portable\RVDS目录下只保留ARM_CM3文件。当然这些文件也可以保留在工程文件夹中,只是用不到。(操作与 3. 移植内核源码相同

在KEIL软件中,将FreeRTOS源码添加到工程中,并添加头文件路径后编译

 在此处报的错与上一节相同,需要在工程目录下添加FreeRTOSConfig.h文件,并添加头文件路径(在此是将FreeRTOSConfig.h文件添加到User目录下,就省去重新添加路径)。再者,还需修改宏定义INCLUDE_xTaskGetCurrentTaskHandle 0(0改为1)。

 再编译,工程中遍0报错,0警告了。

 本章节只介绍了向现有工程文件中移植FreeRTOS源码,并未做文件源码的修改与添加。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值