糊涂君的freeRTOS闯关之路(2)——FreeRTOS移植到裸机

一、准备工作

1,一个裸机工程(可靠的)

这里我直接用了STM32里最简单的点灯的工程。

2,Freertos的官方文件

(1)怎么选择合适的Demo

第一看架构,是Cotex-M0、M3还是M4,自行鉴别了。官方还为了某些系列做了DEMO,所以自己去找就好。
官方的DMEO在官方提供的资源包的地址FreeRTOSv202112.00\FreeRTOSv202112.00\FreeRTOS\Demo下。

(2)需要选取拷贝的文件

a,文件清单

我已经为各位准备了一份表格清单,里面有我们这次移植所需要拷贝的文件名。

文件类型文件名解析
核心文件tasks.c
核心文件list.c
核心文件queue.c
核心文件timer.c
核心文件event_groups.c
核心文件croutine.c
核心文件stream_buffer.c
头文件FreeRTOSConfig.h
头文件FreeRTOS.h
框架文件port.c
框架文件portmacro.h
内存管理(5选1)heap_1.c
内存管理(5选1)heap_2.c
内存管理(5选1)heap_3.c
内存管理(5选1)heap_4.c
内存管理(5选1)heap_5.c
FreeRTOS包含文件详细见下图

freertos包含的文件

二、具体操作

步骤1

新建一个文件夹——freeRTOS用来存放freeRTOS所用的文件
在这里插入图片描述

步骤2

在freeRTOS里面新建3个子文件夹——include、source、portable。
在这里插入图片描述

步骤3

在提供的官方源码里的FreeRTOSv202112.00\FreeRTOSv202112.00\FreeRTOS\Source地址下,找到如图标记的文件,复制到source文件夹里。
在这里插入图片描述

步骤4

在提供的官方源码里的
FreeRTOSv202112.00\FreeRTOSv202112.00\FreeRTOS\Source\include地址下,把如图的文件(即全部),复制到include里。
在这里插入图片描述

这还没有结束,打开地址FreeRTOSv202112.00\FreeRTOSv202112.00\FreeRTOS\Demo下的DEMO选择合适的工程文件。
在这里插入图片描述

我用的是STM32F103ZE芯片,且编译环境为KEIL(MDK5),故而选择此工程打开。
找到FreeRTOSconfig.h,复制到include文件夹。

步骤5

在提供的官方源码里的
FreeRTOSv202112.00\FreeRTOSv202112.00\FreeRTOS\Source\portable地址下,找到如图的三个文件夹——MemMang、RVDS、Keil,复制到portable里。
在这里插入图片描述

这里可以不用复制keil文件夹,打开就知道啥也没有,RVDS,可以根据需要只复制一个就可以了,比如我用STM32F103ZE,我就只复制CM3即可,有的伙伴F407的就得复制CM4了。

步骤6

将freeRTOS文件夹拷贝到提前准备好的工程文件里。
在这里插入图片描述

步骤7

新建三个分组,分别将文件添加到工程里
在这里插入图片描述

步骤8

添加工程编译路径。如果有学习STM32的伙伴,应该难度不大。
在这里插入图片描述

步骤9

主函数文件(main.c)添加三个头文件

#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"

步骤10

一些宏需要处理(或者说确保没有问题)
有些小伙伴可能会这样(我是直接用的,还好),可以参考如下
在这里插入图片描述

步骤11

分别将一下三个钩子函数的宏设置为0;

#define configUSE_IDLE_HOOK			0
#define configUSE_TICK_HOOK			0
#define configCHECK_FOR_STACK_OVERFLOW    0

位于freeRTOSconfig.h
在这里插入图片描述

位于freeRTOS.h
在这里插入图片描述

参考宏定义选项
在这里插入图片描述

步骤12

freeRTOSconfig.h中加入如下重定义

#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler PendSV_Handler

并且前往stm32f1xx_it.cstm32f1xx_it.h中把对SVC_HandlerPendSV_HandlerPendSV_Handler的函数、声明,都注释掉。

三、总结

到此为止,我们的工程已经全部新建完成了。
步骤虽然很多,但是整体分为准备裸机程序、拷贝文件组成FreeRTOS文件夹、keil里添加文件以及路径、修改参数和宏,四大部分。
下一节将开始学习任务以及验证我们的操作系统,是否移植成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值