1.前言
由于之前工作和学习都是只单纯的用了单片机,对于操作系统的了解,只是停留于:“我觉得它很简单,只是单纯的任务调度而已”。但是具体如何使用以及RTOS更深层的含义,几乎一无所知,对个人而言,这样的想法无疑是有些坐井观天以及类似于对日后发展”画地为牢“的行为,所以近期准备用业余时间研究一下RTOS,以便于面临全新的挑战。
#2.准备工作
2.准备工作
要做RTOS,网上有如此多的教程和系统,因地制宜,结合手上的板子,决定先以STM32F10x系列的板子上移植FreeRTOS。
准备工作如下:
1.一块好的STM32F10x系列的板子
2.FreeRTOS源码(可以在 FreeRTOS官网里面下载)
3.一个简单的STM32F10x的工程(由于第一次移植,用了一个2LED闪烁的程序的来移植)
3.操作步骤
Step1:
准备2个文件夹,“FreeRTOS源码”用于装从网上下载的FreeRTOS源码,“LED_Mode”就是我的模板工程。
Step2:
在““LED_Mode”文件夹中添加一个子文件夹名为“FreeRTOS”,该文件夹用于从“FreeRTOS源码”中拷贝移植需要的文件。参照了网上的一些资料和自身需要,最后将所需要的内容全部拷入“FreeRTOS源码”;
Step3:
打开“LED_Mode”内的工程(我这里是用的Keil5),在工程目录下新建2个分组,取名为“ FreeRTOS_CORE”和“FreeRTOS_PORTABLE”用于存放所需要的文件,其中“ FreeRTOS_CORE”分组下主要存放FreeRTOS的源码文件,“FreeRTOS_PORTABLE”分组主要存放与硬件和编译器相关的配置文件。
“ FreeRTOS_CORE”分组下的port.c文件选择“FreeRTOS\portable\RVDS\ARM_CM3”中,这里这么选择主要是因为我的板子是M3内核,所以这里也选择M3内的port.c文件。
“ FreeRTOS_CORE”分组下的heap_4.c文件的“LED_Mode\FreeRTOS\portable\MemMang”,选择内存管理方式,暂时不清楚为什么如此选择。
Step4:添加头文件路径
新建了分组并且添加了文件,点击编译,发现Keil5会出现错误警告,分析了一下,犯了一个简单的错误,上一步添加了新的文件进入工程,却忘记在编译器上添加头文件路径了。这里将文件夹“FreeRTOS”头文件路径加入即可。
再次编译发现提示错误信息“..\FreeRTOS\include\FreeRTOS.h(98): error: #5: cannot open source input file "FreeRTOSConfig.h": No such file or directory”,很明显"FreeRTOSConfig.h"文件缺少,在“LED_MODE”下搜索也未搜索到该头文件,对比官方模板文件夹“FreeRTOS源码\FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil”中的源码,发现确实"FreeRTOSConfig.h"未添加进入工程。复制文件到“LED_Mode”,这里搜索了一下"FreeRTOSConfig.h"这个头文件,知道这个文件是用与FreeRTOS的配置文件,我这里直接在网上找了一个相对应的的配置文件进入我的工程(我用的是STM32F103ZET6,这个比较好找),具体如何手动修改,可以看一下博客:https://www.cnblogs.com/icefree/p/8684511.html
这上面有讲解,这儿不做过多描述。
将"FreeRTOSConfig.h"复制到“LED_Mode\FreeRTOS”路径下(别忘记添加头文件路径),重新编译,编译通过。
至此,一个基础工程就移植完成,可以在这上面添加属于FreeRTOS的代码。