概述
一、准备工作
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包含文件 | 详细见下图 |
二、具体操作
步骤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.c
,stm32f1xx_it.h
中把对SVC_Handler
、PendSV_Handler
、PendSV_Handler
的函数、声明,都注释掉。
三、总结
到此为止,我们的工程已经全部新建完成了。
步骤虽然很多,但是整体分为准备裸机程序、拷贝文件组成FreeRTOS文件夹、keil里添加文件以及路径、修改参数和宏,四大部分。
下一节将开始学习任务以及验证我们的操作系统,是否移植成功。
最后
以上就是风中大象为你收集整理的糊涂君的freeRTOS闯关之路(2)——FreeRTOS移植到裸机一、准备工作二、具体操作三、总结的全部内容,希望文章能够帮你解决糊涂君的freeRTOS闯关之路(2)——FreeRTOS移植到裸机一、准备工作二、具体操作三、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复