嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > FreeRTOS学习第1篇--系统介绍与移植

FreeRTOS学习第1篇--系统介绍与移植

一、FreeRTOS简介

FreeRTOS是一个轻量级的实时操作系统,它提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。它适用于各种不同的硬件平台,并且可以灵活地配置以满足不同的应用需求。FreeRTOS具有可移植性、可扩展性和可维护性,因此被广泛应用于嵌入式系统和物联网设备中。

二、FreeRTOS的优势

FreeRTOS 最大的优势就是开源免费,商业使用的话不需要用户公开源代码,也不存在任何版权问题,是当前小型嵌入式操作系统市场使用率最高的。

有几下几个特点:

  • 免费和开源,遵循 MIT 许可协议,可以在商业和个人项目中自由使用和修改。
  • 可裁剪和可配置,可以根据应用的需求和硬件的资源,选择需要的功能和参数,优化系统的性能和占用空间。
  • 可剥夺和可抢占,可以根据任务的优先级,随时中断低优先级的任务,切换到高优先级的任务,保证实时性和响应性。
  • 支持多种编译器和架构,已经移植到了 40 多种不同的处理器系列,包括 ARM、MIPS、AVR、PIC、x86 等。
  • 支持多种扩展库和组件,提供了网络、文件系统、安全、OTA 更新等功能,以及与 AWS IoT 服务的集成。

三、FreeRTOS的移植

需要的准备工作:准备一个硬件硬件跑代码。

FreeRTOS中有少部分与硬件密切相关的源代码,需要针对不同架构的MCU进行一些改写。例如:针对STM32系列单片机,就需要改写相应的代码,这个过程称为移植。一套移植的FreeRTOS源代码称为一个接口(port)。而在本例中,笔者针对自己现有硬件使用STM32CubeMX进行移植,简单高效,做到一个抛砖引玉的作用。

四、使用STM32CubeMX生成FreeRTOS的代码模板

基本工程配置:

在这里插入图片描述

打开组件选项卡中FreeRTOS,进行启用。

在这里插入图片描述

其中接口选用CMMSIS_V2,这里是ARM公司定义的RTOS接口,学习就学习使用新的版本,但是代码量会多一些。

在这里插入图片描述

使用默认配置进行代码生成,生成代码时会提示

在这里插入图片描述

这个提示的意思就是说FreeRTOS中使用SysTick作为为基础时钟源,而HAL库中也会有一些函数会有时钟需求如:HAL_Delay();这里需要在额外配置一个定时器供HAL库中的延迟函数使用,就需要额外添加一个定时器。

在这里插入图片描述

接着还是要生成代码,但是在NVIC的选项卡中又出现了一些警告,先无视警告,看一下生成的代码

在这里插入图片描述

编译代码并没有错误,使用常规的点灯,能成功跑起来

在这里插入图片描述

此次实验模板成功创建,成功操作系统入坑第一步点灯已成,万事开头难,后期会持续纪录学习纪录。

参考资料:

RTOS - Free professionally developed and robust real time operating system for small embedded systems development (freertos.org)