我是靠谱客的博主 风中大象,最近开发中收集的这篇文章主要介绍糊涂君的freeRTOS闯关之路(2)——FreeRTOS移植到裸机一、准备工作二、具体操作三、总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、准备工作

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

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

2,Freertos的官方文件

(1)怎么选择合适的Demo

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

(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.00FreeRTOSv202112.00FreeRTOSSource地址下,找到如图标记的文件,复制到source文件夹里。
在这里插入图片描述

步骤4

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

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

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

步骤5

在提供的官方源码里的
FreeRTOSv202112.00FreeRTOSv202112.00FreeRTOSSourceportable地址下,找到如图的三个文件夹——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里添加文件以及路径、修改参数和宏,四大部分。
下一节将开始学习任务以及验证我们的操作系统,是否移植成功。

最后

以上就是风中大象为你收集整理的糊涂君的freeRTOS闯关之路(2)——FreeRTOS移植到裸机一、准备工作二、具体操作三、总结的全部内容,希望文章能够帮你解决糊涂君的freeRTOS闯关之路(2)——FreeRTOS移植到裸机一、准备工作二、具体操作三、总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部