一、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)