文章目录

  • 1. 官方源码下载
  • 2. FreeRTOS 文件夹内容简介
  • 3. IAR的STM32F4的移植
  • 3.1 相关文件的复制


 FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。

1. 官方源码下载

 FreeRTOS源码的官方下载地址为 FreeRTOS官方下载链接,里面有各个版本的下载地址,目前最新的版本为10.2.1。除此之外我也将官方源码和相关手册文档上传至我的资源处,也可以直接进行下载,下载链接为 FreeRTOS源码及官方参考资料。

2. FreeRTOS 文件夹内容简介

 打开官方源码文件夹可以发现里面有 FreeRTOS 和 FreeRTOS-Plus 两个文件夹,FreeRTOS文件夹包含Demo例程和内核源码,是移植过程中要重点查看的,FreeRTOS-Plus 文件夹里面包含的是第三方的产品,一般不使用。
 打开FreeRTOS 文件夹,可以发现里面包含了三个文件夹,将主要的文件夹和文件以文件树的形式总结如下:

└─FreeRTOS
   ├─Demo		// 各种开发平台的Demo例程
   │  ├─CORTEX_M4F_STM32F407ZG-SK	// STM32F407例程
   │  ├─CORTEX_STM32F103_IAR		// STM32F103 IAR 例程
   │  └─CORTEX_STM32F103_Keil		// STM32F103 Keil例程
   ├─License	// 许可证文件
   │  └─license.txt				// 许可证文件
   └─Source		// 移植所需的源码和头文件等
	  ├─include				// 通用头文件,无编译器区分
	  │  └─xxx.h				// 通用头文件,无编译器区分
	  ├─portable			// 编译器相关文件
	  │  ├─IAR					// IAR编译器
	  │  │  ├─ARM_CM0			// M0内核
	  │  │  ├─ARM_CM3			// M3内核
	  │  │  ├─ARM_CM4F			// M4内核
	  │  │  └─ARM_CM7			// M7内核
      │  │     ├─port.c			// 处理器写的接口文件
	  │  │     └─portmacro.h	// port.c对应的头文件
      │  ├─Keil					// Keil编译器
	  │  │  └─See-also-the-RVDS-directory.txt	// 提示查看RVDS文件夹
	  │  │     └─Nothing to see here.	// txt里面的内容
      │  ├─MemMang				// 内存管理相关
	  │  │  ├─heap_1.c			// 动态内存分配相关函数接口
	  │  │  ├─heap_2.c
	  │  │  ├─heap_3.c
	  │  │  ├─heap_4.c
	  │  │  └─heap_5.c
	  │  └─RVDS					// Keil编译器
	  │     ├─ARM_CM0	
	  │     ├─ARM_CM3	
	  │     ├─ARM_CM4F	
	  │     └─ARM_CM7		  
	  │        ├─port.c			// 处理器写的接口文件
	  │        └─portmacro.h	// port.c对应的头文件
	  ├─croutine.c			// 通用c文件,无编译器区分
	  ├─event_groups.c		// 通用c文件,无编译器区分
	  ├─list.c				// 通用c文件,无编译器区分
	  ├─queue.c				// 通用c文件,无编译器区分
	  ├─tasks.c				// 通用c文件,无编译器区分
	  ├─timers.c			// 通用c文件,无编译器区分
	  └─readme.txt			// readme文件

3. IAR的STM32F4的移植

3.1 相关文件的复制

 在自己的工程目录下新建一个名为 FreeRTOS 的文件夹,在此文件夹下建立src和port两个空文件夹,其中src存放 FreeRTOS 中的核心源文件,port存放内存管理以及处理器架构相关的代码,
   1. 将 FreeRTOSv9.0.0\FreeRTOS\Source 下的6个.c文件复制到 src 文件夹下。
   2. 将 FreeRTOSv9.0.0\FreeRTOS\Source\portable\MemMang 下的 heap_3.c 复制到 port 文件夹下。
   3. 将 FreeRTOSv9.0.0\FreeRTOS\Source\portable\IAR\ARM_CM4F 下的 .c和.h文件复制到 port 文件夹下。(注:根据自己的编译环境和实际的芯片内核架构来选择,本次实验采用的是IAR编译环境,使用的芯片是STM32F407,采用的是M4的内核,因此复制此文件)
   4. 将 FreeRTOSv9.0.0\FreeRTOS\Source 下的 include 文件夹直接复制到 FreeRTOS 文件夹下。
   5. 将 FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK 下的 FreeRTOSConfig.h 文件复制到 FreeRTOS 文件夹下。该文件是 FreeRTOS 的配置文件,可以修改此文件来裁剪 FreeRTOS 的功能。