【FreeRTOS学习】KEA128移植FreeRTOS

时间:2024-03-19 21:29:50

KEA128移植FreeRTOS

这段时间在学习FreeRTOS,第一步当然是先把操作系统移植到单片机上啦,移植的过程也是遇到不少问题,关键还是KEA128这方面的资料不是很多移植好系统还是费了不少劲。废话少说,下面就是移植过程:

1、把RreeRTOS的源码下载下来,官网是https://www.freertos.org/,在首页点击Dowmload
【FreeRTOS学习】KEA128移植FreeRTOS

然后点Download Sources Code and Prejects 就可以把最新的源码下载下来。最新的是V10版本,但是学习的时候看的是正点原子的教程,所以用的是V9的源码。
【FreeRTOS学习】KEA128移植FreeRTOS

官网下载下来的是一个.exe文件,打开时候会自动下载FreeRTOS源码和Demo工程。
我下面的所有操作都是以V9版本的源码为例。

源码已经全部下载下来了
【FreeRTOS学习】KEA128移植FreeRTOS

文件夹里面又有两个文件夹,分别为FreeRTOS和FreeRTOS-Pulse。其中FreeRTOS里面是源码和示例工程,而FreeRTOS-Pulse里面是一些额外的组件,比如文件系统和网络协议之类的东西,不是必需品。
【FreeRTOS学习】KEA128移植FreeRTOS

FreeRTOS文件夹下的Source文件夹就是源码啦
【FreeRTOS学习】KEA128移植FreeRTOS

2、准备一个工程,我使用的平台是IAR的。
把Source文件夹都Copy到工程目录下,然后修改文件名为FreeRTOS。
【FreeRTOS学习】KEA128移植FreeRTOS

3、删除掉源码中不需要的东西
在FreeRTOS文件夹下的portable文件夹点击进去,会看到很多文件,里面都是各个不同的编译平台使用的,留下需要的即可,我用的是IAR所以IAR文件夹要留下,如果用MDK(Keil 5)就把RVDS留下,其他平台同理。
不管什么编译平台,MemMang文件夹也要留下,里面是有关内存管理的文件。
文件夹删除前如下:
【FreeRTOS学习】KEA128移植FreeRTOS
文件夹删除后如下:
【FreeRTOS学习】KEA128移植FreeRTOS

在IAR文件夹下还有需要删除的文件。
IAR文件夹下的文件:
【FreeRTOS学习】KEA128移植FreeRTOS
这里面都是有关使用的处理器不同内核相关的东西,我要移植的是恩智浦的KEAZ128,它的内核是M0+的所以留下ARM_CM0文件夹即可,其他的都可以删掉,其他的处理器也可以根据不同的内核进行选择。
删除后只留下ARM_CM0文件夹:
【FreeRTOS学习】KEA128移植FreeRTOS

4、把FreeRTOS源码添加到工程中
先添加FreeRTOS的分组,分为CORE,include,PORTABLE,三个分组。
【FreeRTOS学习】KEA128移植FreeRTOS
然后添加源码,CORE里面放的是核心代码,是FreeRTOS文件夹下的几个.c文件。include分组里面放的是include文件夹下的.h文件。PORTABLE文件夹下放的是之前删的就剩下的ARM_CM0里面的文件,还有MemMang文件夹下的heap_4.c文件(heap_1.c一直到heap_5.c这几个文件选一个添加就可以,它们是内存管理的不同实现方式,各有优缺点,我选择的是heap_4.c)
最后添加完成的文件如下所示
【FreeRTOS学习】KEA128移植FreeRTOS

5、添加文件路径
在工程名上右键->Option->C/C++ Complier->preprocessor->Addition include directorie 添加FreeRTOS各个文件的路径。
添加好后的路径如下,记得要使用相对路径
【FreeRTOS学习】KEA128移植FreeRTOS

IAR的话还得添加汇编器的路径因为portasm.s里面包含了”FreeRTOSConfig.h”,所以要在Assembler->preprocessor->Addition include directorie里面把FreeRTOS/include文件夹也要添加进去
【FreeRTOS学习】KEA128移植FreeRTOS

6、添加FreeRTOSConfig.h文件,这个文件在源码中是没有的需要自己编写,我是根据正点原子的修改来的,其实在源码的实例工程里的对应内核的工程里复制一个出来就可以了。
在这些示例工程里找到FreeRTOSConfig.h文件然后复制出来放到include文件夹下面就可以了,我用的KEA128内核是M0+的所以在圈起来的这几个文件夹下的FreeRTOSConfig.h都是可以的,好像其他内核的也是可以的。我的是复制CORTEX_M0+_Atmel_SAMD20_XPlained里面的然后又照着正点原子的进行了修改。
【FreeRTOS学习】KEA128移植FreeRTOS
复制好之后记得这个.h文件也要添加到工程中
【FreeRTOS学习】KEA128移植FreeRTOS

7、最后对FreeRTOSConfig.h文件进行一些必要的修改就可以了。因为我是根据正点原子的FreeRTOSConfig.h进行移植的,其中一定要修改的是SystemCoreClock这个参数,这是STM32下的系统时钟的频率,一定要改成自己用的芯片所使用的频率
【FreeRTOS学习】KEA128移植FreeRTOS

到这里FreeRTOS的系统移植就完成了!