IAR软件移植FreeRTOS操作系统软件

1、 前言
1.1 FreeRTOS操作系统的移植,自己在移植过程中遇到的一些问题。将它记录下来,希望对读者有帮助。大家共同成长
1.2 FreeRTOS有官方的源码,但是太过于庞大不适合我们用。
2、准备
从FreeRTOS官方下载一份源码,到本地。
说明:FreeRTOS官方源码地址:https://www.freertos.org/a00111.html
下载FreeRTOS源码的版本,图片来自FreeRTOS官方的页面
在这里插入图片描述
3、先展示一下结果,移植完的代码目录结果,编译无错误无警告。
3.1 代码结果目录
在这里插入图片描述
3.2 编译无错误无警告
在这里插入图片描述
4、现在我们正式开始移植
1、在本地IAR工程新建一个FreeRTOS,由于我这里写的有误RTOS
在这里插入图片描述

本地下载FreeRTOS关于源码
在这里插入图片描述
2、移植source中的文件夹,将官方源码中source目录源码全部移植到我们建立的IAR工程FreeRTOS文件中。
在这里插入图片描述
3、在本地IAR工程中RTOS中portable进行裁剪,只保留以下两个文件夹。
IAR:IAR软件启动的文件
MemMang:内存管理的源代码
在这里插入图片描述
4、在IAR软件中新建两个组,并添加文件。这两个组FreeRTOS_CORE和FreeRTOS_PORTABLE
4.1 FreeRTOS_CORE组
在这里插入图片描述
4.2 FreeRTOS_PORTABLE
由于我是用的stm32f4xx的系列在移植FreeRTOS源码选择CM4F相关的文件。
在这里插入图片描述
memMangs是内存管理中,我选择heap_4.c,至于其他几个没有细看了。
在这里插入图片描述
5、在IAR软件添加头文件
在这里插入图片描述
6、开始编译。
1、FreeRTOSConfig.h 找不到。
在这里插入图片描述
这是因为缺少FreeRTOSConfig.h文件,我们也可以自己创建,这不是明智的选择。我们选择从官网源码中寻找。
在这里插入图片描述
它是FreeRTOS的配置文件,一般都是操作裁剪,配置通过此文件完成。通过宏实现的。
2、重复定义
在这里插入图片描述
这是由于 port.c 中与 stm32f4xx_it.c ,都有关于三个函数 SVC_Handler PendSV_Handler SysTick_Handler定义,所有我们屏蔽 stm32f4xx_it.c的三个。
3、 hook相关的函数
在这里插入图片描述
修改前
在这里插入图片描述
修改后的
这些报错的函数末尾都是以 hook结尾的,这是因为freertosconfig.h 开始了这些函数。我们关闭就可以了 configUSE_IDLE_HOOK configUSE_TICK_HOOK configUSE_MALLOC_FAILED_HOOK configCHECK_FOR_STACK_OVERFLOW 将他们设置为0
在这里插入图片描述

修改之后再次编译,发现没有报错。
在这里插入图片描述
注:
1、若有侵权,请联系作者删除。
2、欢迎各位点评,在评论区留言。
3、期待你的点赞,是对作者最大的鼓励

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
回答: IAR移植FreeRTOS的过程可以分为以下几个步骤。首先,从FreeRTOS官方网站下载源码,并复制FreeRTOSConfig.h文件到待移植的工程目录中。然后,将source目录下的源码文件全部移植到新建的IAR工程中的FreeRTOS文件夹中。接下来,在IAR工程中对portable文件夹进行裁剪,只保留IAR启动文件和内存管理的源代码。在IAR软件中新建两个组,并添加文件,分别是FreeRTOS_CORE和FreeRTOS_PORTABLE,其中FreeRTOS_PORTABLE中选择与目标芯片相匹配的文件。添加头文件后,进行编译。在编译过程中可能会遇到一些问题。比如找不到FreeRTOSConfig.h文件,可以从官方源码中寻找并复制到工程目录中。另外,可能会出现重复定义的问题,可以屏蔽stm32f4xx_it.c中与port.c中重复定义的函数。还有一些与hook相关的函数的报错,可以将configUSE_IDLE_HOOK、configUSE_TICK_HOOK、configUSE_MALLOC_FAILED_HOOK、configCHECK_FOR_STACK_OVERFLOW这些宏设置为0来关闭这些函数的定义。以上是在IAR移植FreeRTOS的大致过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于IAR平台FreeRTOS移植](https://blog.csdn.net/weixin_30411997/article/details/97783792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [IAR软件移植FreeRTOS操作系统软件](https://blog.csdn.net/qq_41929416/article/details/120188581)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可厉害的土豆

你的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值