目录
FreeRTOS 介绍
什么是 FreeRTOS ?
为什么选择 FreeRTOS ?
FreeRTOS 资料与源码下载
祼机开发与 FreeRTOS
祼机开发:
FreeRTOS:
FreeRTOS 实现多任务的原理
二、移植 FreeRTOS
手动移植
使用CubeMX快速移植
快速移植流程
一些常见问题
1. Timebase Source 为什么不能设置为 SysTick ?
2. FreeRTOS 版本问题
3. FreeRTOS 各配置选项卡的解释
4. 内核配置、函数使能的一些翻译
FreeRTOS 介绍
什么是 FreeRTOS ?
Free 即免费的, RTOS 的全称是 Real time operating system ,中文就是实时操作系统。
注意: RTOS 不是指某一个确定的系统,而是指一类操作系统。比如: uc/OS , FreeRTOS , RTX ,
RT-Thread 等这些都是 RTOS 类操作系统。
FreeRTOS 是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。 由于 RTOS 需占用一定的系统资源 ( 尤其是 RAM 资源 ) ,只有 μC/OS-II 、embOS 、 salvo 、 FreeRTOS 等少数实时操作系统能在小 RAM 单片机上运行。相对 μC/OS-II 、embOS 等商业操作系统, FreeRTOS 操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为10.4.4 版。
为什么选择 FreeRTOS ?
- FreeRTOS 是免费的;
- 很多半导体厂商产品的SDK(Software Development Kit)软件开发工具包,就使用FreeRTOS 作为其操作系统,尤其是WIFI、蓝牙这些带有协议栈的芯片或模块。
- 简单,因为FreeRTOS的文件数量很少。
FreeRTOS 资料与源码下载
最好的资料就是官网提供的资料! FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions
祼机开发与 FreeRTOS
众所周知,游戏与女朋友不可兼得!
祼机开发:
- 玩游戏,结果女朋友生气,分手!
- 陪女朋友,无法玩游戏,抑郁症!
FreeRTOS:
玩 1 秒游戏 -- 陪 1 秒女朋友 -- 玩 1 秒游戏 -- 陪 1 秒女朋友 -- 玩 1 秒游戏 -- 陪 1 秒女朋友 ....
(累死 …… )
但 CPU 是个无情的战斗机器,可以快速在两个乃至多个任务间快速切换,并且不觉得劳累,实现
二者兼顾。
FreeRTOS 实现多任务的原理
严格来说 FreeRTOS 并不是实时操作系统,因为它是 分时复用 的。
系统将时间分割成很多时间片,然后轮流执行各个任务。
每个任务都是独立运行的,互不影响,由于切换的频率很快,就感觉像是同时运行的一样。
二、移植 FreeRTOS
手动移植
过程复杂且繁琐,对新手不友好。如有需要手动移植,可参照以下文章:
(30条消息) FreeRTOS移植到STM32_不秃也很强的博客-CSDN博客 (点击直达)
使用CubeMX快速移植
快速移植流程
1. 在 SYS 选项里,将 Debug 设为 Serial Wire ,并且将 Timebase Source 设为 TIM2 (其它定
时器也行)。
2. 将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator 。
3. 时钟按下图配置
4. 选择 FREERTOS 选项,并将 Interface 改为 CMSIS_V1 。
5. 配置项目信息,并导出代码。
一些常见问题
1. Timebase Source 为什么不能设置为 SysTick ?
裸机的时钟源默认是 SysTick ,但是开启 FreeRTOS 后, FreeRTOS 会占用 SysTick (用来生成 1ms
定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。
2. FreeRTOS 版本问题
V2 的内核版本更高,功能更多,在大多数情况下 V1 版本的内核完全够用。
3. FreeRTOS 各配置选项卡的解释
- Events:事件相关的创建
- Task and Queues: 任务与队列的创建
- Timers and Semaphores: 定时器和信号量的创建
- Mutexes: 互斥量的创建
- FreeRTOS Heap Usage: 用于查看堆使用情况
- config parameters: 内核参数设置,用户根据自己的实际应用来裁剪定制 FreeRTOS 内核
- Include parameters: FreeRTOS 部分函数的使能
- User Constants: 相关宏的定义,可以自建一些常量在工程中使用
- Advanced settings:高级设置
4. 内核配置、函数使能的一些翻译
内核参数的理解内容非常多,可以参考以下文章:
(30条消息) FreeRTOS系列第6篇---FreeRTOS内核配置说明_vassertcalled_研究是为了理解的博客-CSDN博客