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()),我们看下任务切换的过程:

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

    关注

    5186

    文章

    20145

    浏览量

    328741
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217940
  • uCOS
    +关注

    关注

    7

    文章

    175

    浏览量

    80531

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCU微控制器CH32L103高速电吹风方案

    MCU微控制器是整个电吹风控制系统的指挥中心。英尚微推出的高速电吹风方案,以MCU微控制器CH32L103为主控微控制器,帮助高速电吹风实现
    的头像 发表于 11-27 16:20 143次阅读

    选择微控制器MCU几个步骤

    就准备微控制器选型了。这当然不是个好主意。 在微控制器方面做任何决策时,硬件和软件工程师首先应设计出系统的高层结构、框图和流程图,只有到那时才有足够的信息开始对微控制器选型进行合理的
    发表于 11-26 07:09

    基于MM32 MCU系列微控制器的空调外机智能控制方案

    MCU微控制器为核心的智能方案逐渐成为主流。英尚微电子推出以灵动微MM32 MCU系列为主控的空调外机参考方案,旨在为空调系统提供更加智能化的控制
    的头像 发表于 11-25 17:10 286次阅读

    单片机的操作系统

    。 ‌ ‌ RT-Thread ‌:国产开源系统,集成GUI、网络协议栈、文件系统等组件,兼容POSIX接口,适合物联网设备。 ‌ 嵌入式操作系统 ‌ μClinux ‌:针对无MMU处理
    发表于 11-14 06:18

    嵌入式实时操作系统的特点

    实时嵌入式操作系统(Real-Time Embedded Operating System)是专门设计用于嵌入式系统的实时操作系统。嵌入式系统是一种特殊的计算机
    发表于 11-13 06:30

    灵动微MM32F3270微控制器的音频设备参考方案

    音频设备系统的主控芯片采用灵动微MM32F3270微控制器微控制器内核采用高性能的Arm®Cortex-M3 32位处理,最高工作频率可达120MHz,内置高速存储
    的头像 发表于 11-04 16:09 195次阅读

    理想汽车智驾操作系统解读

    [首发于智驾最前沿微信公众号]在智能网联与生成式AI技术深度融合的浪潮下,汽车操作系统已经从最初的简单资源管理平台,演化为承载感知决策、执行控制与安全防护的智能化中枢。理想汽车自主研发的星环OS
    的头像 发表于 05-13 10:54 893次阅读
    理想汽车智驾<b class='flag-5'>操作系统</b>解读

    光庭信息推出下一代整车操作系统OS

    ,正式推出面向中央计算架构、支持人机协同开发的下一代整车操作系统OS(AI × Automotive OS),赋能下一代域控软件解决方案的快速研发,显著提升整车智能化水平。 A²
    的头像 发表于 04-29 17:37 1117次阅读
    光庭信息推出下一代整车<b class='flag-5'>操作系统</b>A²<b class='flag-5'>OS</b>

    家用电器开发中微控制器的选型要点

    ROHM提供融入自有低功耗技术优势的丰富的低功耗微控制器产品。通过供应微控制器产品,为从事电池供电的小型设备、家用电器、工业设备、社会基础设施、车载设备等各种系统开发的微控制器用户提供
    的头像 发表于 04-24 10:26 925次阅读
    家用电器开发中<b class='flag-5'>微控制器</b>的选型要点

    儒卓力推出基于英飞凌微控制器的AI控制系统

    的进一步开发,并将其整合到面向应用的演示中。最新成果是基于英飞凌PSOC Edge E84微控制器开发的AI控制系统,集成RAB3雷达手势识别与关键词识别功能。该微控制器支持在边缘端进行神经网络本地化计算,大幅提升
    的头像 发表于 04-09 10:21 923次阅读

    中国汽车报:睿赛德携“程翧整车基础软件OS”亮相操作系统年会

    3月29日,开源操作系统年度技术会议(OS2ATC2025)在京召开。2013年至今,OS2ATC已成功举办12届。聚焦本次技术盛会,围绕“智能系统”主题,本次会议汇聚了国内一线
    的头像 发表于 04-01 21:00 819次阅读
    中国汽车报:睿赛德携“程翧整车基础软件<b class='flag-5'>OS</b>”亮相<b class='flag-5'>操作系统</b>年会

    如何在APM32F407开发板上应用uC/OS-III实时操作系统

    最近我开始学习 uC/OS-III 实时操作系统,并着手将其移植到APM32F407 开发板上。在这个过程中,我遇到了许多有趣的挑战和发现,也感受到了操作系统带来的强大功能和灵活性。
    的头像 发表于 04-01 09:39 1254次阅读
    如何在APM32F407开发板上应用uC/<b class='flag-5'>OS</b>-III实时<b class='flag-5'>操作系统</b>

    新唐科技微控制器在触控应用方面的优势

    应用带来创新解决方案。本次新闻稿将涵盖更多产品系列和技术细节,更全面地展示 NuMicro 微控制器在触控应用方面的优势。
    的头像 发表于 02-27 15:52 1041次阅读

    鸿道Intewell操作系统的Linux实时拓展方案

    鸿道Intewell操作系统是科东软件自主研发的新型工业实时操作系统,历经30多年研发积累,采用业界领先的微内核架构,具备高实时、高安全及强扩展的特性,是目前国内唯一通过汽车、工业控制、医疗仪器、轨道交通四项功能安全认证的
    的头像 发表于 02-27 10:08 616次阅读
    鸿道Intewell<b class='flag-5'>操作系统</b>的Linux实时拓展<b class='flag-5'>方案</b>

    国产银河麒麟操作系统V10和星光麒麟V1.0操作系统如何选择?

    领域打造安全创新操作系统产品,现已形成桌面操作系统、服务操作系统、万物智联操作系统、工业操作系统
    的头像 发表于 01-24 09:14 4210次阅读
    国产银河麒麟<b class='flag-5'>操作系统</b>V10和星光麒麟V1.0<b class='flag-5'>操作系统</b>如何选择?