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、期待你的点赞,是对作者最大的鼓励