简述
首先不管对RTOS还是FreeRTOS有没有了解,就算什么都不懂,总要让这个系统编译的没有问题,然后跑起来才是重要的。
本文以自己学习FreeRTOS移植为例子,所用环境为IAR 国产芯片,不在FreeRTOS官方支持的芯片列表中。
参考文件以及链接
以下为FreeRTOS内核源码地址:
Github:FreeRTOS Kernel
以下为FreeRTOS工程例子,带了很多支持的Demo.
Github:FreeRTOS
其他资料:
FreeRTOS-内核官网
移植的文件列表
废话不说,直接上拷贝完的工程文件中,所有包含FreeRTOS的部分:
移植步骤
-
将kernel(FreeRTOS-Kernel)中include部分全部加入到项目(.c/.h 部分)。
-
选择kernel -> portable中,与自己编译工具和内核或芯片一样或具有相关性的文件。第一层目录是环境,第二层目录是内核。
-
在FreeRTOS中找到与自己芯片相关的Demo工程,并将FreeRTOSConfig.h拷贝到include文件夹中
-
将kernel->MemMang文件中选择一个拷贝到源文件中,本次举例采用heap_4.c。总共可选的heap文件有1/2/3/4/5. 具体差异可查阅源码的MemMang中的ReadMe文件。
-
将main函数替换为FreeRTOS中带hook的函数。如需要新增的函数列表为,随便参考一个Demo例子,拷贝如下的几个的定义,不然会报错。
vApplicationMallocFailedHook vApplicationIdleHook vApplicationStackOverflowHook vApplicationTickHook
-
设置汇编引用FreeRTOSConfig.h 文件。因为在portasm.s中会引用该文件。
-
编译,并解决问题。
-
新增任务函数,常规操作,点灯,灭灯。