【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

清醒疯子 2018-03-07

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

一:FreeRTOS系统下载

在官网上https://www.freertos.org/,找到下载入口。

或直接进入下载地址https://sourceforge.net/projects/freertos/files/latest/download?source=files。现在的最新版为10.0.0

在开始移植FreeRTOS前,先介绍下FreeRTOS的源码,源代码目录结构如下所示:

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

FreeRTOS的源码比较少,其核心部分为tasks.c与list.c,其余的几个文件功能都是可选的。include文件夹里面的文件是操作系统相关的头文件,portable文件夹有些奇葩,里面有:

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

里面的文件几乎都是与平台相关的的,如果你要删掉这里的文件时就必须小心了,并不是所有的文件都能删除的。注意MemMang这个文件夹,里面存放的是FreeRTOS自带的内存管理方案的源代码:

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

二:MDK下移植FreeRTOS

MDK工程的新建工作。请参照正点原子的教程资料,或直接参考https://jingyan.baidu.com/article/454316ab7ad711f7a7c03a1a.html此链接所示文章。

我自己工程模板:

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

(1)添加FreeRTOS源文件

在模板下新建文件夹FreeRTOS文件夹用来存放FreeRTOS的系统文件,再在FreeRTOS的文件夹下新建include文件夹,用来存放h头文件,分开存放利于管理。

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

(2)拷贝系统文件到指定文件夹(FreeRTOS文件夹)中:

从FreeRTOS的源文件中找到croutine.c timers.c list.c queue.c tasks.c event_group.c这6个源文件,位置为FreeRTOSv10.0.0->FreeRTOS->source,拷贝到FreeRTOS文件夹下

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

从FreeRTOS的源代码中找到port.c文件,位置Source->portable->RVDS->ARM_CM3->port.c拷贝至FreeRTOS文件夹

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

从FreeRTOS的源文件中找到heap_4.c文件,位置source->portable->MemMang->heap_4.c,拷贝至FreeRTOS文件夹。

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

完成移动的FreeRTOS文件目录 ,就这几个文件。

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

(3)拷贝.h文件到指定文件夹(../FreeRTOS/include文件夹)中:

拷贝FreeRTOS源代码下的include文件夹里的全部.h文件至新建立的include文件夹里,位置:source->include

从FreeRTOS的源文件中找到portmacro.h文件拷贝至新建立的include文件夹里,文件位置:source->portable->RVDS->ARM_CM3->portmacro.h

由于我使用的是keil-mdk作为开发工具,使用的是STM32F103VET6为目标芯片,所以需要从FreeRTOS的源文件中找到匹配开发工具与目标芯片的config.h的配置文件。文件在Demo文件夹中,把这个配置文件拷贝FreeRTOS文件夹内。配置文件位置在:

->Demo->CORTEX_STM32F103_Keil->FreeRTOSConfig.h。

至此FreeRTOS操作系统所需要的所有文件已经全部移植完成。

(4)在工程中添加各系统文件

在工程中新建FreeRTOS文件夹,添加工程模板中FreeRTOS的所有文件。完成后的工作空间如下;

【零基础学习FreeRTOS嵌入式系统】之一:FreeRTOS环境搭建

至此,点击编译按钮,看是否可以通过编译,生成目标hex文件。

相关推荐