RTOS 系统篇-多任务协同与复杂消息的设计

概述

对嵌入式系统的功能进行“任务划分”,是 RTOS 中软件设计的关键。当任务划分比较合理时,整体的软件设计就会比较简洁、高效、容易后期维护(比如增加新功能)。本小节对任务划分的基本方法进行概述,希望能给大家带来一定的启发。

任务的特性

1)独立性:一个任务的内部信息和数据是任务独有的,若要与另一个任务交互信息,最好通过通信组件(如信号量、队列)来实现。

2)动态性:任务的状态是动态变化的,即任务并不是随时都可以运行的,并且上一个过程还在运行的任务,可能下一个时间到来时就被更高优先级的任务或者中断夺走 CPU 的使用权。是的,没有 CPU 使用权(不考虑协处理器的情况)就不能运行。

3)交互性:任务之间(任务与中断之间)需要协同工作,一个任务可能涉及多个输入源(指的是向该任务发送数据、信号的任务或中断)、多个输出源(指的是该任务向其他任务发送数据、信号,使能中断)。

注:输入、输出部分是可选的。

任务的状态

如在RTOS任务状态总结及查看 RTOS 任务的

RTOS 系统篇-多任务协同与复杂消息的设计相关推荐

  1. RTOS 系统篇-看门狗 WatchDog[不喂狗就咬你]

    RTOS 系统篇-看门狗 WatchDog[不喂狗就咬你] 概述 程序设计完成后,要开始考虑系统整体的稳定性了. 在设备上线后,可能因为程序设计不合理.硬件设计有 bug,电气干扰.静电噪声.电源故障 ...

  2. RTOS 系统篇-看门狗 WatchDog 2

    RTOS 系统篇-看门狗 WatchDog 2 概述 上一节在 RTOS 系统篇-看门狗 WatchDog[不喂狗就咬你] 讲解了 看门狗的基本原理,以及任务.中断中触发看门狗的原因.解决方法. 本小 ...

  3. RTOS 系统篇-Tickless 模式简介与测试

    RTOS 系统篇-Tickless 模式简介与测试 概述 上节讲述了统计RTOS 系统中 CPU 利用率的方法.在 CPU 空闲时,将进入空闲任务.在一些简单的应用中,设备的大部分时间都在执行空闲任务 ...

  4. RTOS 系统篇-统计任务的 CPU 使用率

    RTOS 系统篇-统计任务的 CPU 使用率 概述 RTOS 中可以通过一些函数来统计每个任务使用 CPU 的时间,以及所使用时间占据总时间的比例.比如:系统在一段 100s 的时间内,任务 A 使用 ...

  5. 51 rtos系统 : MCUsystem 介绍 -- 基于消息队列

    一个基于消息循环的51操作系统,这个有点象VC的风格,大家看McuSystem.rar 看,这个不错的. ReadMe.txt 默认路径: D:\MCU51\ Version:MS1.01-2003. ...

  6. Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  7. 自己写一个RTOS系统

    本项目为2021年自己从零到一写出来的简易RTOS系统,目的是为了能更加深入的学习RTOS系统及底层运行的逻辑,项目命名为"LinRTOS",为什么会取这个名字呢? LinRTOS ...

  8. rtos系统c语言,让我们来学习RTOS,自己写RTOS

    本帖最后由 lotoohe 于 2016-8-24 08:24 编辑 该RTOS系统命名为ZRTOS,是我在阅读了ucos后,并且借鉴了其它操作系统后实现的,完成了一些基础的工作,可以拿过来学习,也可 ...

  9. SAP系统与MES系统的数据协同技术方案

    1.MES介绍 本文中提到的MES系统是在西门子公司的SIMATIC IT平台上开发完成.所有的应用子系统进行统一分析.统一设计.统一开发,利用统一的开发平台和数据库系统,保证了管理系统的集成性.高效 ...

最新文章

  1. 一、JAVA通过JDBC连接mysql数据库(连接)
  2. java Scanner具有神奇的作用可惜大部分java开发人员不知
  3. MMD的unity导入插件
  4. python列表求平均值_python与统计概率思维
  5. JAVA基础学习预科部分 (Markdown + dox)2021/2/22持续更新中
  6. Linux Shell基础 - Shell 脚本的执行方式
  7. 成本4元、一个月前制成的外卖菜肴包,正霸占你的餐桌
  8. wlnmp+nginx+mysql+php集合包_LNMP(Linux+Nginx+MySQL+PHP)部署详解(一)
  9. java年龄不能超过120,systemd 代码行数超过 120 万,创始人贡献的 commits 最多
  10. java udp socket编程_JavaSocket编程UDP
  11. Linux下ls、vi命令失效的解决办法
  12. 安装ADB驱动 ADB相关问题
  13. 信息系统项目管理师通过率是多少?
  14. pb使用http方式上传下载文件
  15. linux中命令du -sm,Linux中的Du命令
  16. datax运行无法加载主类
  17. 狼人杀 java_狼人杀面杀APP(FGUI教程)
  18. linux网络编程常用头文件总结
  19. Apple iPhone
  20. Docker 跨主机容器网络通信 -- Flannel 实现

热门文章

  1. web学习第七天:来自倔驴的怒吼——生理年龄不代表技术年龄
  2. css实现圆形进度条
  3. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
  4. TCP/IP五层协议体系结构的各层功能
  5. 360doc 个人图书馆地址
  6. [附源码]JAVA+ssm计算机毕业设计餐厅点餐订餐系统(程序+Lw)
  7. css样式对IOS设备苹果手机不支持解决方法
  8. uva 10115(字符串)
  9. 朴素贝叶斯法的参数估计——贝叶斯估计及其Python实现
  10. Mac 驱动检测不出来原因