FreeRTOS学习笔记—基础知识

简介: 本文简要介绍了什么是RTOS,介绍了前后台系统和RTOS的工作流程。此外,简单介绍了FreeRTOS的特点,相关概念和优点。最后,介绍了下载FreeRTOS的方法。


🎀 文章作者:二土电子
🐸 期待大家一起学习交流!


一、什么是RTOS

RTOS全称为:Real Time OS,就是实时操作系统核心在于实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。在实时操作系统中,我们可以把要实现的功能划分为多个任务,每任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是个死循环。

RTOS操作系统并不是单指FreeRTOS,它包括很多种,比如FreeRTos,UCOS,RTX,RT-Thread,DJYOS等。采用实时操作系统可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。

二、前后台系统

前后台系统就是我们做嵌入式开发时常用的,一个while(1)轮询,搭配一些中断服务函数。中断服务函数就是前台部分,while(1)轮询是后台部分。如果没有中断请求,软件按照顺序执行while(1)轮询中的各个业务,如果有中断请求。先暂停while(1)中的业务,转去处理中断服务函数内容。处理完成中断后,再继续轮询执行while(1)中的业务。前后台系统有一个很严重的问题,它的业务都是在while(1)中轮流执行的,对于一些紧急任务,无法实时响应,而且任务管理也不方便。但是对于利用单片机进行简单的项目开发,前后台系统足以应付。对于一些业务比较庞大,实时性要求高的项目中,就需要用到RTOS实时操作系统。

4035d31caf8274060f3d713b1582dd16_e2005a5f12d341949daddf073076b1d7.png

三、实时内核(可剥夺型内核)

RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。

Freeos的内核是可剥夺型的。可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。剥夺其他任务的使用权,是由任务调度器来完成的。任务调度器是实时操作系统的核心部分,它会根据任务优先级来分配COU使用权。优先级高的任务处于就绪态时,会告诉任务调度器,请求CPU使用权。

四、RTOS系统

RTOS也会划分许多任务,每一个任务都有自己的任务优先级。高优先级的任务,优先运行。但是中断依旧向前后台系统一样,可以打断任何一个任务。如果在运行低优先级任务时,有一个高优先级的任务就绪,任务调度器就会把CPU使用权转交给高优先级的任务。高优先级任务执行时,可以被中断或者更高优先级的任务打断。

在前后台系统中,中断打断某一个任务,处理完中断后,会接着执行该任务。但是在实时操作系统中,如果某一个任务被中断打断,在处理完中断后,会再执行一次任务调度,会判断当前处于就绪状态的最高优先级的任务是否比中断之前的任务优先级高,如果是的话,会转而执行高优先级任务。总结来说,RTOS系统运行的永远都是处于就绪态的优先级最高的任务。

2d91b51310b350aded2fc8526f162cf2_6e298880c3744d5f934061227c2aab41.png

五、FreeRTOS系统简介

RTOS上面介绍了,是实时操作系统。Free,是免费的意思。FreeRTOS有以下特点

  • 可裁剪、可剥夺型的多任务内核
  • 没有任务数限制
  • 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等
  • 绝大部分都是用C语言编写,只有极少数的与处理器密切相关的部分代码才是用汇编写的
  • 结构简洁,可读性强

FreeRTOS有许多优点

  • FreeRTOS开源
  • FreeRTOS免费
  • FreeRTOS是许多第三方组件使用的系统

六、FreeRTOS源码下载

可以去下面这两个网站下载FreeRTOS的源码

FreeRTOS官网
FreeRTOS代码托管网站

进入代码托管网站

5b06be7a77fd7d48731895ba23bf10ae_ec7be5b4c83e493288911f8d99d824f2.png

这里因为看到其他博主说,V9.0.0 虽然不是最新版本的源码包,但是因为内核很稳定, 并且网上资料很多,所以这里也选择下载V9.0.0。

0ead85c3382dcf6842296508603dede8_ea872af349ac421ea83c09391312f3cf.png

下载完解压即可。

相关文章
|
API
FreeRTOS学习笔记—FreeRTOS移植
本文学习了如何移植FreeRTOS到自己的STM32工程。最后,根据正点原子提供的测试main函数,测试了移植效果。
1127 0
FreeRTOS学习笔记—FreeRTOS移植
|
9月前
|
消息中间件 算法 调度
深入探索嵌入式开发中的 FreeRTOS:从入门到精通
大家好,我是V哥。本文将带你从入门到深入掌握FreeRTOS,一款开源、轻量级的实时操作系统。FreeRTOS为嵌入式开发提供了高效的任务管理、资源调度等功能,极大提升了开发效率和系统可靠性。我们将探讨任务管理、通信同步、内存管理、调度算法、中断处理及性能优化等内容,助你在嵌入式开发中游刃有余。关注威哥爱编程,全栈之路共前行。
608 0
|
存储 安全 API
基于FreeRTOS中的串口不定长接收(使用队列进行数据传输)
基于FreeRTOS中的串口不定长接收(使用队列进行数据传输)
1450 0
|
存储 安全 算法
从0入门FreeRTOS之第二节FreeRTOS的体系结构
FreeRTOS的体系结构设计精巧且高效,专为嵌入式系统量身打造。理解FreeRTOS的体系结构对开发高效、稳定的嵌入式应用至关重要。下面,我们详细介绍FreeRTOS的核心组件、内核机制、中断管理和内存管理等内容。
581 0
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
394 1
|
存储 数据管理 数据处理
处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
通过正确配置UART和DMA、实现有效的错误处理回调函数以及优化数据处理和缓冲区管理,可以有效处理STM32中DMA方式下的 `HAL_UART_ERROR_ORE`错误。这些方法确保了数据的高效传输和处理,避免了因数据溢出导致的通信中断和数据丢失。希望这些解决方案能够帮助您在实际应用中更好地应对和解决此类问题。
1645 0
|
调度 开发者
【Freertos基础入门】2个Freertos的Delay函数
【Freertos基础入门】2个Freertos的Delay函数
1791 1
|
消息中间件 API
【FreeRTOS(二)】FreeRTOS新手入门——计数型信号量和二进制信号量的基本使用并附代码解析
【FreeRTOS(二)】FreeRTOS新手入门——计数型信号量和二进制信号量的基本使用并附代码解析
|
传感器 算法 机器人
OpenTeleVision复现及机器人迁移
本文介绍了OpenTeleVision,一个沉浸式远程操作系统,通过立体视觉反馈和手臂手部动作映射,让操作员能够直观、精准地远程控制机器人执行长期精度任务,并已在两种人形机器人上成功部署。
718 0
OpenTeleVision复现及机器人迁移
|
消息中间件 算法 编译器
【FreeRTOS(一)】FreeRTOS新手入门——初识FreeRTOS
【FreeRTOS(一)】FreeRTOS新手入门——初识FreeRTOS

热门文章

最新文章