前言:
FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。
FreeRTOS功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等。
本期首先将FreeRTOS源码移植到ARM Cortex-M0,然后增加任务创建。
移植平台:ARM Cortex-M0
移植对象:FreeRTOS
编译环境:Keil MDK
移植准备: 下载FreeRTOS源码(官方网站下载:http://www.freertos.org)
一、基于ARM Cortex-M0的FreeRTOS移植步骤
步骤1:将FreeRTOS加载到M0软件工程中
-
加载内核源文件,源文件路径:
FreeRTOS\Source
-
加载与处理器相关的硬件接口层源码,源文件路径:
FreeRTOS\Source\portable\GCC\ARM_CM0
-
加载各种类型的堆栈分配方案(只需要选1种)源码,源文件路径:
FreeRTOS\Source\portable\MemMang
-
加载内核源文件的头文件,源文件路径:
FreeRTOS\Source\include
软件工程环境下,加载以上源码的截图如下:
步骤2:修改FreeRTOSConfig.h
#if 0 //Designed by FDG
#ifdef __ICCARM__
#include <stdint.h>
extern uint32_t SystemCoreClock;
#endif
#else
#include "STM32xxxxx.h" // 调用你的芯片底层定义头文件
#include <stdint.h>
extern uLONG SystemFrequency_SysClk; // 声明系统时钟
#endif
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0 //Designed by FDG
#define configCPU_CLOCK_HZ ( SystemFrequency_SysClk ) //Designed by FDG
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES ( 4 ) //Designed by FDG
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128)