个人名片:
🎓作者简介:嵌入式领域优质创作者
🌐个人主页:妄北y📞个人QQ:2061314755
💌个人邮箱:[mailto:2061314755@qq.com]
📱个人微信:Vir2025WBY🖥️个人公众号:科技妄北
🖋️本文为妄北y原创佳作,独家首发于CSDN🎊🎊🎊
💡座右铭:改造世界固然伟大,但改造自我更为可贵。
专栏导航:
妄北y系列专栏导航:
物联网嵌入式开发项目:大学期间的毕业设计,课程设计,大创项目,各种竞赛项目,全面覆盖了需求分析、方案设计、实施与调试、成果展示以及总结反思等关键环节。📚💼💡
QT基础入门学习:对QT的基础图形化页面设计进行了一个简单的学习与认识,利用QT的基础知识进行了翻金币小游戏的制作。🛠️🔧💭
Linux基础编程:初步认识什么是Linux,为什么学Linux,安装环境,进行基础命令的学习,入门级的shell编程。🍻🎉🖥️
深耕Linux应用开发:分享Linux的基本概念、命令行操作、文件系统、用户和权限管理等,网络编程相关知识,TCP/IP 协议、套接字(Socket)编程等,可以实现网络通信功能。常见开源库的二次开发,如libcurl、OpenSSL、json-c、freetype等💐📝💡
Linux驱动开发:Linux驱动开发是Linux系统不可或缺的组成部分,它专注于编写特殊的程序——驱动程序。这些程序承载着硬件设备的详细信息,并扮演着操作系统与硬件间沟通的桥梁角色。驱动开发的核心使命在于确保硬件设备在Linux系统上顺畅运作,同时实现与操作系统的无缝集成,为用户带来流畅稳定的体验。🚀🔧💻
Linux项目开发:Linux基础知识的实践,做项目是最锻炼能力的一个学习方法,这里我们会学习到一些简单基础的项目开发与应用,而且都是毕业设计级别的哦。🤸🌱🚀
非常期待与您一同在这个广阔的互联网天地里,携手探索知识的海洋,互相学习,共同进步。🌐💫🌱 熠熠星光,照亮我们的成长之路
✨✨ 欢迎订阅本专栏,对专栏内容任何问题都可以随时联系博主,共同书写属于我们的精彩篇章!✨✨
文章介绍:
📚本篇文章将深入剖析RTOS学习的精髓与奥秘,与您一同分享相关知识!🎉🎉🎉
若您觉得文章尚可入目,期待您能慷慨地送上点赞、收藏与分享的三连支持!您的每一份鼓励,都是我创作路上源源不断的动力。让我们携手并进,共同奔跑,期待在顶峰相见的那一天,共庆辉煌!🚀🚀🚀
🙏衷心感谢大家的点赞👍、收藏⭐和评论✍️,您的支持是我前进的动力!
目录:
目录:
一、我们为什么要学RTOS
1.1 前后台系统:
1.2 RTOS系统
1.2.1硬实时系统
1.2.2 软实时系统
1.2.3 RTOS的任务管理
1.2.4 常见的RTOS
1.4.5 RTOS的核心内容:实时内核
1.3 可剥夺型内核
1.3.1 RTOS内核与多任务管理
1.3.2 多任务管理的优势包括:
1.3.3 FreeRTOS与可剥夺内核
1.3.4 可剥夺型内核的调度机制
1.3.5 调度场景示例
1.4 为什么讲解FreeRTOS
1.5 相关资料查找
二、FreeRTOS系统简介
2.1 官网所获源码与文档:
一、我们为什么要学RTOS
1.1 前后台系统:
在早期嵌入式系统开发中,没有嵌入式操作系统的概念,开发者直接在裸机硬件上编写程序。例如,对于51单片机,基本没有操作系统的概念。程序通常被分为两个部分:前台系统和后台系统。
简单的小型系统:通常采用前后台系统架构,这种程序结构包括一个死循环和一些中断服务程序:
后台系统(也称任务级):
主程序是一个无限循环。在这个循环中,程序调用各种API函数来完成需要的操作。这个无限循环被称为后台系统。
后台系统主要处理定时的、顺序的任务。
前台系统(也称中断级):
中断服务程序用于处理系统的异步事件。中断服务程序在特定的硬件或软件条件下被触发,处理某些紧急任务或事件。
前台系统主要处理突发的、紧急的任务。
换一种说法:
在这种架构中,嵌入式系统的操作可以分为两层:
1. 任务层:
主程序在一个无限循环中运行,执行各种需要的操作和任务。这是系统的主要操作层,处理大部分常规任务。
任务层负责定期检查和执行系统所需的常规操作。
2. 中断层:
中断服务程序在特定事件发生时被触发,处理这些突发事件。
中断层负责处理所有的异步事件,确保系统能够及时响应外部或内部的紧急情况。
这两层结构确保了嵌入式系统能够有效地运行和响应各种任务和事件。在任务层,系统按照预定的流程执行操作;在中断层,系统能够及时响应紧急事件,提高系统的实时性和可靠性。
1.2 RTOS系统
实时操作系统(RTOS,全称为 Real-Time Operating System)的核心特点是强调实时性。根据应用的严格程度,实时操作系统可以分为硬实时和软实时两类。
1.2.1硬实时系统
定义:要求在规定的时间内必须完成某个操作,不允许超时。
应用领域:硬实时系统通常用于安全至关重要的应用,比如航空航天、医疗设备、工业自动化等。
特点:严格的时间约束,任何延迟或超时都可能导致系统失效或造成严重后果。
1.2.2 软实时系统
定义:要求在大多数情况下在规定的时间内完成操作,但允许偶尔超时。
应用领域:软实时系统通常用于对时间要求不那么严格的应用,比如多媒体、网络通信等。
特点:处理过程超时的后果相对宽松,没有硬实时系统那么严格。
1.2.3 RTOS的任务管理
在实时操作系统中,功能通常被划分为多个任务,每个任务负责实现特定的功能。每个任务通常是一个简单的程序,通常是一个死循环,等待被调度执行。
1.2.4 常见的RTOS
FreeRTOS: 一款轻量级的开源RTOS,广泛应用于嵌入式系统中。
UCOS (MicroC/OS): 另一款常见的RTOS,具有良好的实时性能和小内存占用。
RTX: ARM公司提供的RTOS,集成在Keil开发环境中,广泛应用于Cortex-M系列微控制器。
RT-Thread: 一款开源的RTOS,具有良好的可扩展性和丰富的组件支持。
DJYOS: 一款针对特定应用领域定制的RTOS。
1.4.5 RTOS的核心内容:实时内核
RTOS的核心内容在于实时内核,主要包括以下几部分:
1. 任务管理:
任务的创建、删除、调度和切换。
支持多任务运行,并根据优先级或时间片调度任务。
2. 时间管理:
提供系统时钟、延迟和定时器功能。
确保任务在预期的时间内得到执行。
3. 中断管理:
管理中断的注册、处理和优先级。
实现中断的快速响应和处理,保证系统的实时性。
4. 同步与通信:
提供任务之间的同步机制,如信号量、互斥量、事件标志等。
提供任务之间的通信机制,如消息队列、管道等。
5. 内存管理:
管理任务的内存分配和回收,确保系统稳定运行。
支持动态内存分配和静态内存分配。
实时操作系统(RTOS)通过其实时内核,提供了任务管理、时间管理、中断管理、同步与通信、内存管理等功能,确保系统能够在特定时间内响应和处理事件。RTOS广泛应用于对时间要求严格的嵌入式系统中。通过合理划分任务和利用RTOS的核心功能,开发者能够实现高效、可靠的嵌入式应用程序。
1.3 可剥夺型内核
1.3.1 RTOS内核与多任务管理
RTOS(实时操作系统)的内核负责管理所有任务的运行和调度。内核的多任务管理能力决定了哪个任务在何时运行,以及何时停止当前任务并切换到其他任务。这样的多任务管理机制给人的感觉就像芯片有多个CPU一样,从而实现了CPU资源的最大化利用。
1.3.2 多任务管理的优势包括:
最大化CPU利用率:通过在多个任务之间切换,确保CPU资源得到充分利用。
模块化开发:将复杂应用程序分解为多个独立的任务,每个任务负责特定功能,提高了代码的可维护性和可重用性。
复杂实时应用:通过优先级和调度机制,可以满足复杂应用的实时要求。
1.3.3 FreeRTOS与可剥夺内核
本教程重点讲解RTOS的经典代表作:FreeRTOS。FreeRTOS的内核是可剥夺型的,这一点非常重要,因此需要简单介绍一下什么是可剥夺型内核。
什么是可剥夺型内核?
可剥夺型内核(Preemptive Kernel)是指内核可以随时剥夺当前正在运行任务的CPU使用权,以运行其他具有更高优先级的任务。
优先级调度:内核总是优先运行就绪任务中优先级最高的那个任务。
实时响应:通过优先级调度机制,可以保证高优先级任务快速响应,提高系统的实时性能。
1.3.4 可剥夺型内核的调度机制
1. 任务创建与初始化:在系统初始化时,任务被创建并赋予各自的优先级。
2. 任务调度:内核维护一个就绪任务列表,按优先级排序。每次调度时,内核选择优先级最高的就绪任务运行。
3. 任务切换:当一个高优先级任务变为就绪状态时,内核会立即中断当前低优先级任务的运行,将CPU使用权切换给高优先级任务。
1.3.5 调度场景示例
高优先级任务A:中断低优先级任务B,立即运行。
任务B在等待资源:如果任务B在等待某资源释放而进入阻塞状态,则调度器会选择下一个优先级最高的就绪任务运行。
时间片轮转:在相同优先级的任务之间,内核可以采用时间片轮转机制,确保这些任务公平地分享CPU时间。
可剥夺型内核通过优先级调度机制,确保系统中高优先级的任务能够快速响应并获得运行机会。FreeRTOS作为可剥夺型内核的典型代表,通过其高效的调度机制和丰富的内核功能,为开发复杂的实时应用提供了强大的支持。
1.4 为什么讲解FreeRTOS
1、因为FreeROTS开源。
2、FreeRTOS免费
3、FreeRTOS是很多第三方组件钦定的系统!
1.5 相关资料查找
1、FreeRTOS官网:FreeRTOS™ - FreeRTOS™。
2、开源电子网:www.openedv.com。
3、其他论坛。
二、FreeRTOS系统简介
FreeRTOS是一款高度灵活且支持多任务调度的实时操作系统内核,它允许开发者根据需求裁剪功能,并且不限制任务的数量。FreeRTOS集成了实时系统所需的核心功能,如资源管理、任务间同步和通信机制等。
该系统主要使用C语言编写,确保了代码的结构清晰和可读性强,只有在与硬件紧密相关的极少数情况下才使用汇编语言。这种设计使得FreeRTOS不仅功能强大,而且易于理解和上手,特别适合那些初次探索嵌入式实时操作系统的学生、开发者和爱好者。
2.1 官网所获源码与文档:
下载最终的FreeRTOS源码:
2.2 源码文件夹
FreeRTOS提供了大量针对不同微控制器(MCU)的示例程序,包括ST的F1、F4和F7系列。这些示例对学习和移植FreeRTOS来说非常有帮助,因为我们可以参考这些示例程序来加速开发过程。
License文件夹:这个文件夹包含了与使用FreeRTOS相关的许可信息。如果打算将FreeRTOS用于商业产品,尤其是出口产品,务必仔细阅读和理解这些许可条款。
Source文件夹:顾名思义,这个文件夹包含了FreeRTOS的核心源码。打开该文件夹后,会看到FreeRTOS的主要实现文件。
Demo文件夹:Demo文件夹里面就是FreeRTOS的相关例程。
FreeRTOS的源码文件,这些文件将是我们未来工作中频繁接触的部分。与UCOS相比,FreeRTOS的文件结构相对简洁。`include`文件夹中包含了一些头文件,是移植过程中必需的;而下面的.C文件则是FreeRTOS的核心源码,同样在移植时也必不可少。
特别值得关注的是`portable`文件夹。我们知道,FreeRTOS作为一个操作系统,本质上是纯软件,它如何与硬件进行交互呢?答案就在`portable`文件夹中。这个文件夹中的内容充当了FreeRTOS系统与具体硬件之间的桥梁。
不同的编译环境和不同的MCU会有不同的桥梁实现。因此,`portable`文件夹对移植工作至关重要。打开`portable`文件夹后,我们可以看到其中包含了与不同平台和编译器相关的代码。
RVDS文件夹针对不同的架构的MCU做了详细的分类,STM32F103就参考ARM CM3,打开ARM CM3文件夹。
ARM CM3有两个文件,这两个文件就是我们移植的时候所需要的!
📝大佬觉得本文有所裨益,不妨轻点一下👍给予鼓励吧!
❤️❤️❤️本人虽努力,但能力尚浅,若有不足之处,恳请各位大佬不吝赐教,您的批评指正将是我进步的动力!😊😊😊
💖💖💖若您认为此篇文章对您有所帮助,烦请点赞👍并收藏🌟,您的支持是我前行的最大动力!
🚀🚀🚀任务在默默中完成,价值在悄然间提升。让我们携手共进,一起加油,迎接更美好的未来!🌈🌈🌈