嵌入式实时系统的任务设计主要为任务函数的设计、任务优先级的安排、任务的数据结构设计,任务之间的同步与通信设计。

一.任务函数的设计

任务函数按任务结构可分为单次执行任务、周期执行任务和事件触发任务,各任务的主要差异点如下:

单次执行任务:执行完任务后进入休眠状态(一般是从任务调度中删除自己)

周期执行任务:执行完任务后进入等待状态,等待时间为周期时间(当执行周期小于一个时钟节拍或者不是时钟节拍的整数倍时,可设计为定时器中断触发任务)

事件触发任务:等待事件触发后再执行任务

二.任务优先级的安排

任务优先级一般按以下顺序由高到低安排:

中断关联性

紧迫性

关键性

周期性

快捷性

传递性

实际优先级设计应留有余地,以至于将来做功能扩充时不必对原有优先级做大幅度调整。考虑到优先级继承情况,不应将任务的优先级安排得太紧密。

三.任务的数据结构设计

任务的数据结构分为与操作系统有关的数据结构和与操作系统无关的数据结构,与操作系统有关的数据结构可在操作系统配置中进行裁剪,与操作系统无关的数据结构要注意作用域(局部变量还是全局变量)

四.任务之间的同步与通信

在操作系统的管理下,任务间不允许相互调用,需通过同步与通信机制来进行协调,可参考多任务实时系统的同步与通信。具体可分为行为同步、资源同步和数据通信。

对于任务调用的公共函数,有二个处理方法:

①互斥调用:执行时间短设置开关中断,执行时间长则配置信号量

②可重入设计:不使用全局资源

1. 行为同步

①中断与任务间的单向同步:通过信号量或消息邮箱同步

②两个任务间的单向同步:通过信号量同步,当控制方优先级高于被控制方优先级时,控制方在发出信息后调用延时函数挂起自身,让低优先级的被控制任务得以尽快运行

③两个任务间的双向同步:设立交汇点,任务A在交汇点向B发送消息,并等待B回复;B到达交汇点后等待A发送消息,在收到消息后回复A。其执行过程如下:

若任务A优先级高于任务B,任务A先运行,到达交汇点后发送消息给任务B,等待B回复;在A等待的时候,B进入运行状态,B到达交汇点后,收到A发送的消息,B给A回复消息;高优先级任务A被激活,离开交汇点,A被挂起后,B离开交汇点。

若任务A优先级低于任务B,任务B先运行,到达交汇点后等待A发送的消息;在B等待的时候,A进入运行状态,A到达交汇点后,发送消息给任务B并等待B回复;B收到A的消息后给A回复,高优先级任务B先离开交汇点,B被挂起后,A收到回复离开交汇点。

④两个以上任务同步一个任务:使用事件标志组

⑤多个任务相互同步:用一个初始值为0的全局变量作为签到计数器,每个任务先从签到计数器的当前值判断是否是最后一个到达任务,如果是就清零签到计数器并向其他任务发出同步信号,如果不是就通过将签到计数器加1来进行签到,然后等待同步信号(挂起)

2. 资源同步

①  关中断

②  关调度

③  互斥信号量

④  计数信号量

3. 数据通信

①  全局变量:没有行为同步,数据量小的情况下

②  内存数据块:没有行为同步,数据量大的情况下

③  消息邮箱:有行为同步,通信双方执行频度相同下适用;在发送消息方为中断处理程序时,消息保存有全局变量、静态局部变量和将消息内容冒充指针发送的方法,后二种方法较优

④  消息队列:适用于以下情况:消息双方至少一方没有稳定的执行周期;通信双方执行周期不同

转载于:https://www.cnblogs.com/yueze/p/7243750.html

嵌入式实时系统的任务设计相关推荐

  1. 绝对好文:嵌入式系统的软件架构设计!

    要学嵌入式,关注@我要学嵌入式,嵌入式猛男的加油站. 1. 前言 嵌入式是软件设计领域的一个分支,它自身的诸多特点决定了系统架构师的选择,同时它的一些问题又具有相当的通用性,可以推广到其他的领域. 提 ...

  2. 嵌入式linux开发课程设计,嵌入式Linux开发课程设计指导书

    嵌入式Linux开发课程设计指导书 课程编码: 适应专业:计算机专业.电子信息工程专业 学时:3周(计算机专业),2周(电子信息工程专业) 学分: 3(计算机专业),2(电子信息工程专业)时间安排:分 ...

  3. 嵌入式实时系统程序开发一:按键程序编写

    为了回顾以前的东西,以及把操作系统的思想能用在处理器的多任务操作上,会持续连载一些文章,这些思想主要借鉴周慈航<基于嵌入式实时系统程序设计技术>一书 键盘程序控制技术: 键盘作为输入输出口 ...

  4. 嵌入式在线html编辑器,嵌入式HTML编辑器的设计与实现.ppt

    嵌入式HTML编辑器的设计与实现 嵌入式HTML编译器的设计与实现 研究目的和内容 本课题是为了实现可视化HTML编译器的基本功能,将用户编写的HTML语言编译成计算机可识别的机器语言. 使用面向对象 ...

  5. 基于ARM的嵌入式系统外围硬件设计

    基于ARM的嵌入式系统外围硬件设计 一.嵌入式接口分类 (1)基本嵌入式接口 (2)嵌入式网络接口 (3)标准协议接口 (4)无线通信接口 二.基本嵌入式接口 1.实时时钟 (1)功能:专用的电路单元 ...

  6. 嵌入式系统硬件体系设计(一)

    目录 嵌入式系统硬件体系设计概论 1.1嵌入式系统及硬件体系概述 1.1.1嵌入式系统概论 1.1.2嵌入式系统的构成 1.2 嵌入式硬件体系的基本构成 1.3硬件体系设计的相关内容简介 嵌入式系统硬 ...

  7. 基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

    现在嵌入式设备联网,主要有两种模式:以太网RJ-45 接口直接插网线上网:3G/4G 模块拨号上网.随着无线终端设备的不断普及,手机平板等无线设备对网络的需求也日益增加.本篇文章主要介绍基于嵌入式Li ...

  8. c语言嵌入式系统编程软件,C语言嵌入式系统编程软件设计研究论文

    C语言嵌入式系统编程软件设计研究论文 摘要:近年来,C语言编程在嵌入式系统越来越受到广大技术人员的青睐.介绍了C语言系统软件的编程思路,阐述了嵌入式系统编程软件架构的基本知识,包括模块划分.分层架构. ...

  9. 有限状态机的嵌入式Linux按键驱动设计(转载)

    本文转载自边缘之火<有限状态机的嵌入式Linux按键驱动设计(转载)> 原文链接:  http://www.eccn.com/design_2010052509381340.htm 秦国栋 ...

最新文章

  1. Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境
  2. 78、VLAN间路由配置实验之单臂路由
  3. Windows Azure 数据安全(清理和泄漏)
  4. find函数matlab_从零开始的matlab学习笔记——(39)find函数
  5. 方立勋_30天掌握JavaWeb_JDBC、存储过程、事务(二)
  6. c++11/14新特性学习
  7. MySQL存储引擎:MyISAM InnoDB
  8. IOS工作笔记003---windows给VmWare虚拟机OS系统安装xcode
  9. zemax设置 像方远心_[入门] [ZEMAX] [成像] 手把手教程:一个双高斯类镜头
  10. excel表格如何设置双面打印的方法
  11. Apache Tomcat漏洞总结
  12. ppt表格重设链接_如何重设表格
  13. 基于微信网页版二维码扫码支付
  14. 国内商务邮箱品牌——TOM企业邮箱
  15. python写一个数字字典生成器
  16. 十二星座分手时会怎么说?
  17. 寻找全排列的下一个数
  18. 金融机构业务连续性管理
  19. 使用计算机打印文字,Word打印出的文字与电脑上的显示不同怎么办
  20. OpenWrt下使用docker安装icloudpd实现iPhone照片备份私有云盘nas

热门文章

  1. centos6.8升级python3.5.2
  2. linux 内核移植和根文件系统的制作【转载】
  3. Oracle 基础 —SQL语句优化的途径
  4. CC++初学者编程教程(8) VS2013配置编程助手与QT
  5. 开源GIS库GDAL/GEOS在Windows下的编译与 Codeblocks配置
  6. Catalan数(卡特兰数)
  7. sscanf用法详解-hdu2072
  8. python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...
  9. python通用数据库连接_python连接数据库的几种方式!
  10. 用python自动发邮件_Python实现向QQ群成员自动发邮件的方法