准备工作:Free-RTOS源码、STM32基础工程。
1.将下载的源码进行解压,解压过程如下。
2.解压后会得到FreeRTOSv9.0.0文件夹,该文件夹包含了FreeRTOS的所有内容。
3.重点看下FreeRTOS与FreeRTOS-Plus文件夹的内容,FreeRTOS文件夹下有Demo、License、 Source三个文件。
4.Demo文件夹里面就是移植好的FreeRTOS的相关例程,这里列举了一些处理器包括ARM7、ARM9、AVR等。
5.可见FreeRTOS为很多MCU做了相关DEMO,这里也少不了ST的MCU,下面框出了ST的M4 M4内核的F4系列和F7系列。
6.这个是基于M3内核的F103系列的工程DEMO,我们重点关注CORTEX_STM32F103_Keil
7.License文件夹我们暂时不用关注,如果您的产品商业化了需要仔细阅读。
8.Source文件夹就知道是重头戏了,这里是FreeRTOS的源码,这些源码是以后我们学习需要熟悉的。大体上看没有UCOSIII那么多。
9.在include文件夹中主要包含了一些重要的头文件,移植的时候是我们所需要的。
10.Portable文件夹主要是用于FreeRTOS与硬件连接的桥梁,实现在不同的编译器和不同的MCU之间架起通向FreeRTOS的桥梁。
11.本平台建立在keil的编译器上,打开keil文件夹可以看到一个See-also-the-RVDS-directory.txt文本,让参考RVDS 文件夹下的路径内容。
12.打开RVDS文件夹,看到CM0、CM3、CM4、CM7内核都在,重点关注ARM_CM3文件夹
13.ARM_CM3文件夹中有port.c和portmacro.h文件,这两个文件是移植的时候所需要的。
14.关于FreeRTOS-Plus文件夹同样也有Demo和Source文件夹。
15.Demo 文件夹下也是一些相关的示例,Source文件夹下相对于FreeRTOS文件夹下的增加了一些功能,如CLI、FAT等,就系统本身而言和FreeRTOS是一样的,因此我们只需要掌握FreeRTOS即可。
16.在基础工程中新建一个FreeRTOS的文件夹
17.添加好FreeRTOS的文件夹后将FreeRTOS下的Source目录下的源码复制到该目录下。
18.可以将portable文件下不需要的文件夹删除,保留我们需要的,以keil平台为例,只需要保留Keil、MemMang、RVDS三个文件夹,其余的均可以删除。
19.在keil基本工程上添加两个分组,分别是FreeRTOS_CORE和FreeRTOS_PORT。
20.向FreeRTOS_CORE分组中添加 croutine.c、event_groups.c、list.c、queue.c、tasks.c、timers.c文件。
21.向FreeRTOS_PORT分组中添加port.c文件,该文件来自路径: portable\RVDS\ARM_CM3 heap_4.c文件来自路径:\portable\MemMang。其中port.c是ARM_CM3文件下的文件,选择M3的内核需要加入该文件。 heap_4.c来自MemMang文件下,作为内存管理的一种方法,我们暂时选择heap_4.c。
22.然后就是添加需要的头文件路径,如下所示:
23.尝试着编译一次,发现不能打开FreeRTOSConfig.h文件
24.由于缺少FreeRTOSConfig.h头文件,编译器会报错,我们可以自己新建一个FreeRTOSConfig.h文件,将其添加进去,这明显不是一个明智的办法,不要忘了我们有demo示例工程哦!从DEMO示例中找到FreeRTOSConfig.文件复制到我们include文件夹下。
25.再次编译,没有错误。
至此,我们的FreeRTOS的移植也全部完成啦。大家可以尽情的体验FreeRTOS带来的流畅体验了~