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