0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Micro Controller OS微控制器操作系统应用设计方案

5RJg_mcuworld 来源:互联网 作者:佚名 2018-04-25 08:52 次阅读

uC/OS----Micro Controller OS微控制器操作系统,美国人Jean Labrosse于1192年完成,1998年出现uC/OS--II,2000年NASA许可可用于飞行器中(无人机中有木有啊!但是很少有极客把他用到飞控中,APM的操作系统是一个裁剪的Linux--Nuxxt什么鬼的)。

uC/OS--II的性能特性不跟大家废话了,大家自己去看它的中文手册吧。有几点要注意理解:

1.用户任务只有56个,因为有8个是系统保留的,这有点像Linux下的系统服务daemons。如空闲任务、统计任务都是系统保留任务。

2.uC/OS中所有函数的调用和服务都有确定的时间,也就是说函数的执行周期确定、执行时间确定,这个由统计任务OSTaskStat()来完成。

3.任务的优先级就是它的标识符,最低优先级 OS_LOWEST_PRIOR=63。

下面进入主题--任务机制:

任务控制块TCB:TCB是描述任务的核心数据结构,存放了它的各种管理信息,包括任务堆栈指针,任务的状态、优先级,任务链表指针等; 一旦务建立了,任务控制块OS_TCB将被赋值。

typedef struct os_tcb

{

栈指针;

INT16U OSTCBId; /*任务的ID*/

链表指针;

OS_EVENT *OSTCBEventPtr; /*事件指针*/

void *OSTCBMsg; /*消息指针*/

INT8U OSTCBStat; /*任务的状态*/

INT8U OSTCBPrio; /*任务的优先级*/

其他……

}OS_TCB;

  • OSTCBStkPtr:指向当前任务栈顶的指针,每个任务可以有自己的栈,栈的容量可以是任意的;

  • OSTCBStkBottom:执行任务栈底的指针;

  • OSTCBStkSize:栈的容量,用可容纳的指针数目而不是字节数(Byte)来表示。

值得一提的是链表指针,这个设计可以快速的使任务就绪和休眠。所有的务控制块分属于两条不同的链表,单向的空闲链表(头指针OSTCBFreeList)和双向的使用链表(头指针为OSTCBList); OSTCBNext、OSTCBPrev:用于将任务控制块插入到空闲链表或使用链表中。每个任务的任务控制块在任务创建的时候被链接到使用链表中,在任务删除的时候从链表中被删除。双向连接的链表使得一成员都能快速插入或删除。

任务的五个状态:休眠、就绪、运行、中断、挂起(阻塞)。

各状态间的相互转换:

好了,既然一共有64个任务,那我是怎么知道现在到底该运行哪个任务呢?这就是任务就绪表的工作了。

多列几种就绪情况会发现,OSRdyGrp和OSRdyTbl[]的赋值与优先级priority有一定的关系哦。我们先列一个编码表叫OSMapTbl[7]=2^n.n=0.1.2...7(同理就有OSUnMapTbl[7])。可以得到这个公式:

说明OSRdyGrp与优先级的高三位有关、OSRdyTbl与优先级的低三位有关.通过上面公式就可以把相应的任务标志为就绪状态。既然有让他进入就绪态的方法,也就有让他解除就绪状态--休眠态的方法:

任务的调度。前面的准备工作做好了之后,下面就可以真正的运行任务了。确定哪个务的优先级最高,应该选择哪个任务去运行,这部分的工作是由调度器(Scheduler)来完成的。任务级的调度是由函数OSSched()完成的;中断级的调度是由另一个函数OSIntExt()完成的。

首先根据就绪表确定最高优先级。然后根据最高优先级替换当前任务的TCB,进行上下文切换。

oid OSSched(void)

{

INT8U y;

OS_ENTER_CRITICAL();

OS_EXIT_CRITICAL();

}

可以看到实际执行任务切换的是OS_TASK_SW()函数(也就是OSCtxSW()),我们看下任务切换的过程:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304782
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209318
  • uCOS
    +关注

    关注

    7

    文章

    175

    浏览量

    78364

原文标题:重拾uC/OS-II之任务机制理解

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA 与微控制器优缺点比较

    和可编程互连组成。它们的主要优点是并行处理能力极强,可以同时执行多个操作,这使得FPGA在需要高速数据处理的应用中表现出色,如数字信号处理(DSP)、通信系统和高速接口。 微控制器 微控制器
    的头像 发表于 12-02 09:58 264次阅读

    嵌入式系统微控制器与微处理的区别

    它们在现代电子设备中的核心作用,并探讨它们如何持续推动技术创新的未来。什么是嵌入式微控制器?嵌入式微控制器是设计用于在电子系统中执行特定任务的紧凑型集成电路。与更广
    的头像 发表于 10-14 11:02 406次阅读
    嵌入式<b class='flag-5'>系统</b>中<b class='flag-5'>微控制器</b>与微处理<b class='flag-5'>器</b>的区别

    什么是微控制器/它的关键组成部分有哪些?

    微控制器
    芯广场
    发布于 :2024年09月18日 15:02:33

    基于鸿道Intewell操作系统的运动控制系统方案

    鸿道Intewell工业实时操作系统运动控制解决方案,采用业界独有的虚拟化技术,融合了实时与非实时业务的应用,满足高集成、高性能实时运动控制的需求。在实时
    的头像 发表于 09-09 10:42 287次阅读
    基于鸿道Intewell<b class='flag-5'>操作系统</b>的运动<b class='flag-5'>控制系统</b><b class='flag-5'>方案</b>

    通用串行总线控制器怎么安装

    现代计算机中,USB控制器通常是主板上集成的一部分。 1. 确定需求和兼容性 在开始安装之前,首先需要确定您的计算机是否需要新的USB控制器,或者是否需要更新现有的控制器。检查您的计算机的硬件规格和
    的头像 发表于 08-29 15:47 664次阅读

    微控制器内部的存储有哪些

    微控制器(MCU)内部的存储微控制器系统的重要组成部分,它负责存储程序代码、数据以及控制逻辑等信息。这些存储
    的头像 发表于 08-22 10:41 739次阅读

    微控制器的结构和应用

    微控制器(Microcontroller Unit,简称MCU)作为嵌入式系统的核心部件,其原理和应用在现代科技发展中占据了举足轻重的地位。本文将从微控制器的原理、基本结构、工作原理、性能特点以及广泛的应用领域等方面进行详细阐述
    的头像 发表于 08-22 10:40 984次阅读

    国产鸿道Intewel操作系统与Codesys高实时虚拟化运动控制解决方案

    Intewell+Codesys方案,基于X86、ARM、MIPS、RISC-V等不同架构的硬件平台,通过Intewell实时操作系统的多种构型形态,包括Intewell-RTOS
    的头像 发表于 07-09 15:24 333次阅读
    国产鸿道Intewel<b class='flag-5'>操作系统</b>与Codesys高实时虚拟化运动<b class='flag-5'>控制</b>解决<b class='flag-5'>方案</b>

    基于FPGA的SPI Flash控制器设计方案

    Flash读写硬件实现方案,该方案利用硬件对SPI Flash进行控制,能够非常方便地完成Flash的读写、擦除、刷新及预充电等操作,同时编写的SPI Flash
    发表于 06-03 10:13

    Elektrobit推出全球首个符合汽车功能安全标准的开源操作系统解决方案

    德国埃朗根,2024年4月23日 – Elektrobit今日宣布推出面向功能安全应用的EB corbos Linux for Safety Applications,这是全球首个符合汽车功能安全标准的开源操作系统 (OS) 解决方案
    的头像 发表于 04-24 09:58 738次阅读
    Elektrobit推出全球首个符合汽车功能安全标准的开源<b class='flag-5'>操作系统</b>解决<b class='flag-5'>方案</b>

    瑞萨CTSU程序在向嵌入式OS操作系统移植时的注意事项

    瑞萨CTSU程序在向嵌入式OS操作系统移植时的注意事项
    的头像 发表于 03-29 08:05 348次阅读
    瑞萨CTSU程序在向嵌入式<b class='flag-5'>OS</b><b class='flag-5'>操作系统</b>移植时的注意事项

    使用RT-Thread操作系统时,在STM32G4系列微控制器上使用PWM设备驱动时遇到了编译错误怎么解决?

    我在使用RT-Thread操作系统时,尝试在STM32G4系列微控制器上使用PWM设备驱动时遇到了编译错误。具体来说,问题出现在处理不同STM32系列时钟配置的条件编译指令中。编译报告了一个“悬空
    发表于 03-22 07:22

    针对 C2000™ 微控制器的集成微控制器 (MCU) 电源解决方案数据表

    电子发烧友网站提供《针对 C2000™ 微控制器的集成微控制器 (MCU) 电源解决方案数据表.pdf》资料免费下载
    发表于 03-04 14:12 0次下载
    针对 C2000™ <b class='flag-5'>微控制器</b>的集成<b class='flag-5'>微控制器</b> (MCU) 电源解决<b class='flag-5'>方案</b>数据表

    联想今年将发布AI OS操作系统

    联想正式宣布,将把AI PC和个人Agent作为2024年的核心业务推进重点,并计划在今年内推出全新的“AI OS操作系统”以及一系列搭载此系统的“AI PC”。这一创新举措标志着联想在人工智能领域的深度布局和前沿探索。
    的头像 发表于 02-18 11:10 1027次阅读

    深度解析全球操作系统格局

    操作系统是负责协调、管理和控制计算机硬件与软件资源的程序,是整个计算机的核心系统软件。 按照操作系统面向的设备类型,通用操作系统主要包括桌面
    的头像 发表于 01-18 15:00 1155次阅读
    深度解析全球<b class='flag-5'>操作系统</b>格局