RTOS实时操作系统——UCOSIII简介

        一、实时操作系统概念:

        (实时操作系统(Real Time Operating System,简称RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制 生产过程 或对处理系统做出 快速响应 ,调度一切可利用的资源完成 实时任务 ,并控制所有实时任务协调一致运行的操作系统):相对于裸机而言能创建多个相同优先级,以及设置相同时间片同时快速处理多线程独立的任务, 高优先级能立即执行并且充分利用已有资源。

        二、实时操作系统特点比较:

裸机:裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序。

裸机特点:(1)实时性差(应用程序轮流执行)

                  (2)delay(空等待,浪费资源)

                  (3)结构臃肿(都在无限循环中进行)

RTOS特点:RTOS全称为Real Time OS,意为实时操作系统,强调实时性。

(1)分而治之(实现功能划分为多个任务)

(2)延时函数(任务调度)

(3)抢占式(高优先级抢占低优先级)

(4)任务堆栈(每个任务都有自己的栈空间)  

三、实时系统分类

1、强实时

        在航空航天等一些关键领域中,应用时间需求应能够得到完全满足,否则就造成如飞机失事等重大的安全事故,造成重大生命财产损失和生态破坏。在这类系统的设计和实现过程中,应采用各种分析、模拟及形式化验证方法对系统进行严格的检验,以保证在各种情况下应用的时间需求和功能需求都能得到满足。

2、弱实时

        某些应用虽然提出了时间需求,但实时任务偶尔违反这种需求对系统的运行以及环境不会造成严重影响,如视频点播系统、信息采集与检索系统就是典型的弱实时系统。在VOD系统中,系统只需保证绝大多数情况下视频数据能够及时传输给用户即可,偶尔的数据传输延迟对用户不会造成很大影响。

四、UCOSIII简介

1.UCOSIII是一个可裁剪,可剥夺的多任务系统,没有任务数目的限制,是UCOS的第三代内核操作系统。

2.为什么要选择UCOSIII:

        2.1稳定、可靠 UCOIII是经过了多种安全认证加持的,包括航空、工业控制、医疗、汽车等等多领域的安全认证。

        2.2uC/OS-I1官方提供了十分完善的资料,共有数十个文档资料。

        2.3支持系列广,支持多种不同架构的不同型号的处理器,如: ST. NXP、Xilinx. Infineon等

        2.4移植简单C语言编写简单易用, 可移植性非常好

三代UCOS比较:

3.相关名词解释:

        任务调度:使用相关的调度算法来决定当前需要执行的哪个任务

        UCOSIII调度方式:

        (1)抢占式调度:主要针对优先级不同的任务,每一个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。

        在UCOSIII中任务优先级数值越小,优先级越高,在抢占式调度下,会随时间抢占上一优先级相对低的任务而执行下一高优先级任务,当高优先级任务被挂起时,会让剩下最高优先级运行,保证资源的充分利用。

        即:1.高优先级任务,优先执行

                2.高优先级任务不停止,低优先级任务无法执行

                3.被抢占的任务将会进入就绪态

        (2)时间片调度:主要针对优先级相同的任务,当多个任务的优先级相同且就绪时,任务调度器就会根据用户所设置的时间片轮流地运行这些任务。

        (时间片:以一次系统时钟节拍为单位的,UCOSIII默认设置任务时间片为100,则其在任务运行100次系统时钟节拍的时间后,切换到另一个相同任务优先级的任务中运行)

        任务均为同等优先级,时间片默认均设置为100ms(可设置不同),被挂起时会立即切换到下一任务。

即:1.同等优先级人物,轮流执行,时间片流转

        2.一个时间片大小,取决为滴答定时器中断频率

        3.每个人物都可以定义自身的时间片长度

        4.被挂起没有用完的时间片不会继续使用

        UCOSIII5种任务状态:

1.运行态 

        正在执行的任务,该任务就处于运行态,注意在STM32中,同一时间仅一个任务处于运行

2.就绪态

        如果该任务已经能够被执行,但当前还未被执行,那么该任务处于就绪态

3.挂起态

        如果一个运行态的任务因延时或等待某一事件 发生时被挂起,那么这个任务就处于挂起态

4.休眠态

        任务已经在CPU的内存中了(任务被删除了),但是还没有交给UCOSIII内核管理

5.中断态

        当处于运行态的任务被中断打断,CPU跳转去执行中断服务函数时,原本属于运行态的任务,会切换到中断态,直到中断结束,在切换回运行态继续运行。


总结:

1、 被创建的任务,初始状态均为就绪态
2、 被删除的任务,会转为休眠态
3、 仅就绪态和中断态可转变成运行态
4、 其他状态的任务想运行,必须先转变成就绪态

UCO-1主要有三大类列表用来跟踪任务状态:
1.就绪列表

        准备运行的任务将放在就绪列表: 0SRdyList[x],其中x代表任
务优先级数值。(当某个位置一时,代表所对应的优先级就绪列表有任务存在)

2.Tick列表

        正在等待延时超时或挂起的对象超时的任务,将放在OSTickList。

3.挂起列表

        当任务等待信号量、事件时,任务将放置在挂起列表PendList。
 

        

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
嵌入式实时操作系统UCOS III是一种常用的RTOS系统,它可以被移植到不同的硬件平台上,例如stm32F103。UCOS III提供了任务管理、中断处理、时间管理等功能,使得开发者可以方便地编写多任务的嵌入式应用程序。 在UCOS III中,任务是系统的基本单元,开发者可以创建多个任务,并且为每个任务指定优先级和堆栈大小。任务可以同步、通信和共享资源,从而实现并发执行和资源管理。此外,UCOS III还提供了延时函数和中断处理函数,以满足实时应用的需求。 为了移植UCOS III到stm32F103上,可以按照以下步骤进行操作: 1. 使用cubemx工具配置stm32F103的硬件资源,例如GPIO、UART等。 2. 在keil中创建一个新的工程,并将UCOS III的源代码添加到工程中。 3. 在工程中创建至少3个任务,并为每个任务设置优先级和堆栈大小。 4. 在任务中编写相应的代码来实现任务的功能。 5. 配置中断处理函数,例如USART1_IRQHandler,以便处理外部中断。 6. 编译和烧录程序到stm32F103上,并运行程序。 通过以上步骤,就可以在stm32F103上成功移植并运行UCOS III。开发者可以根据具体需求,进一步优化任务调度和资源管理,以提高系统的实时性和性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [嵌入式学习——使用STM32F103基于HAL库移植uCOS-III](https://blog.csdn.net/qq_66144143/article/details/127723008)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左耳460

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值