时间触发嵌入式系统:各种系统的概念

news2024/11/17 0:06:06

1.1 引言

一说到软件系统,脑子里面就会闪现很多名词:

        信息系统

        桌面应用系统

        实时系统

        嵌入式系统

        事件触发系统

        时间触发系统

这些名字搞得脑子很乱,感觉都熟悉,又有些陌生,还是需要简单的介绍一下。

1.2 信息系统

信息系统  information system,简称IS,特别是商业信息系统,代表了大量的应用系统。尽管信息系统开发中所遇到的挑战与本专栏关注的问题有很大的不同,但是对这类系统有一个基本的了解对学习还是有很大的帮助。因为目前大多数嵌入式实时系统的开发方法都是根据信息系统的开发方法改编而来的。

计算工资报表的应用程序,就是一个基本的信息系统。

假设这个应用程序的使用用户根据员工的资料来打印公司的工资报表。各种票据的打印可能要花好几个小时。如果在财务年度的末尾要求做一套特别复杂的计算,打印工作就会被延迟几分钟,这就给打印工作带来了一些不方便。在后面的例子中将这些不方便和实时系统中的延迟可能造成的破坏性影响做一个对比。

信息系统往往和针对保存在磁盘中的大量数据所进行的存储与处理联系在一起。在20世纪60年代和70年代,一般使用COBOL这样的面向文档的语言来实现。现在,这样的系统仍在广泛应用,不过大多数是出于维护阶段,而很少使用类似语言做新的应用设计。

实现现代信息系统的更常用的方法是关系数据库(Relational database),通过SQL语言进行数据的存储和操作。关系数据库技术是建立在严谨的数据基础之上,成熟且安全。设计数显可靠的大型关系数据库系统不是意见简单的事,但开发用于家庭和小型企业的应用系统所需的技巧却挺简单。因此,像这样的小型关系数据库系统的实现不再称为一种专门的处理。现在,关系数据库的设计工具作为标准office软件包的一部分,一般PC都装有office软件。但是信息系统的设计人员又有新的要求。比如,除了传统的文字档案,许多医院希望能存储各种图形,比如ECG、X光、CT、MRI等设备的图像。

关系数据库系统可以用于存储图像、语音和波形,这种系统针对处理有限种类的数据类型而做的优化效果并不理想。这使得我们面向对象的数据库系统的兴趣逐渐增加。通常认为面向对象的数据库系统使用起来更灵活。

1.3 桌面系统

在许多信息系统中,桌面/工作站换将和通用桌面应用程序,如文字处理软件占主导地位。现代桌面环境的普遍特征是用户通过搞分辨率的图形屏幕、键盘、鼠标与应用程序交互。如下图所示。除了复杂的用户交互之外,桌面系统独特的特征是与之相关的操作系统,这些操作系统包含DOS、Windows、UNIX等。嵌入式系统的开发人员用到的操作系统一般都是LINUX或者RTOS等。

1.4 实时系统 

大多数软件系统的用户都希望他们的应用程序能够快速响应,不同的是,对于大多数信息系统和一般的桌面应用程序而言,快速反应仅仅是个有用的性能,但是对于许多实时系统,实时性是一个必要的性能。比如下图所示的飞机自动驾驶系统。

假设飞机已经进入了所需要的航向,而系统为了使飞机保持航线必须做出频繁且有规律的变化来操作方向舵、升降舵、副翼和发动机的工作状态。

飞机自动驾驶系统的重要特点是需要以毫秒ms为时间标度,非常迅速地处理输入信息,并产生输出信息。因为即使方向舵偏转角度有微小延迟也能导致难以接受的飞机振动,极端条件下甚至会导致飞机坠毁。所以,飞机的自动驾驶系统是一个非常有代表性的实时系统。

在实践中为了验证飞行系统能够正确工作,仅仅保证尽可能快的处理是不够的。与其他许多实时系统一样,在实时情况下,主要性能是处理的确定性。这就意味着实时系统需要能够保证某个任务总是在特定的时间内完成,比如2ms内,或者在特定的时间间隔中去执行。如果处理过程不能满足和这个要求,那么这个系统就是个垃圾。

引用一个项目经理的话:我们建立了驻留在小型遥测计算机上的系统,该系统配备有各种各样的传感器来测量电磁场、温度、声音、机械损伤等。我们分析这些信号并通过以太网将这些信号传送到计算机。计算机安装在一根一米长的杆的一端,而杆的另一端是核装置。将他们一起放在地下的大洞中,当装置被引爆时,计算机在爆炸波到来前采集数据。爆炸后的钱2.25ms是最值得关注的。当然对于计算机来说闷在远未到达第三个ms之前,信号已经迅速平稳下来,我们认为这就是实时约束。

很明显,在这种情况下,实时系统必须及时完成数据采集,因为它没有第二次机会,这是个比较极端的例子,军工级别的实时系统就是这么硬,没有商量的余地。许多应用系统,比如前面的飞机自动驾驶系统,和这个核武器的信号采集系统是不一样的,需要对某个传感器的信号进行反复采样,经过数字处理之后产生适当的模拟输出信号。假设以1000HZ对输入信号进行采样,那么作为一个实时系统,就必须在1ms之内将结果计算出来。

所谓的实时系统,并不是要求快速处理,而是要求在规定的时间内能处理。

1.5 嵌入式系统

嵌入式系统普遍与实时系统是有关系的,但是嵌入式系统的分类与桌面系统一样。包括实时的和特殊的信息系统。嵌入式系统是一种包含至少一个可编程计算机(一般是单片机、DSP等处理器)的系统。嵌入式系统的应用非常广泛,如各种家电、厨房小家电、汽车、飞机等都用到嵌入式系统。

为了支持复杂的操作系统和应用程序,PC市场是由对更高性能的需求来驱动的,而嵌入式系统的市场却有着不同的需要。如在汽车工业中相关法规和技术改造意味着越来越多的汽车将包含嵌入式系统。有时候,引入这种系统主要是用来降低生产成本,比如用CAN通讯可以节省很多电缆,引入悬挂系统,可以大幅改善乘坐的舒适性和操作性。

汽车的信号灯电路就是一个非常简单的嵌入式系统。在这个系统中,需要通过方向盘旁边的开关控制各种车灯,使司机在转弯、变道、倒车、停车时,有灯光可以提示其他人。在有些国家,要求方向信号灯电路与尾灯共同起作用,有些地方需要信号灯电路与尾灯单独运行。如果一款汽车想在不同的国家销售,比如尊重国家的法规,使用嵌入式系统,就可以简单的解决这些问题,可以通过嵌入式软件,让尾灯系统和其他的灯系统共同作用也可以独立作用,修改软件比修改硬件的成本低多了。

1.6 事件触发系统

有很多应用系统被描述成事件触发的,比如现代桌面系统,各种各样的应用程序在运行中必须对鼠标、键盘的输入事件做出反应,用户希望这个反应是及时的,比如用键盘打字的时候,希望键盘敲下去,字就出来,而不是等一会再出来。

在嵌入式系统中,中断就是一个典型的事件触发行为。

什么是中断

从底层来看,中断是一种硬件机制,用来通知处理器发生了某件事情,这个事情有可能是内部的,比如定时器的溢出,也可能是外部的,比如各种通讯收到信息。

从上层的角度来看,中断提供了一种创建多重任务应用机制,也就是说从表面上看,系统可以在单个处理器上同时执行多个任务,下图给出了一个嵌入式中断处理的原理。

 在上图,系统执行两个后台任务:任务1和任务2.在执行任务1器件,有一个中断产生,中断服务程序ISR1处理这个事件。在执行任务2器件,另外一个中断产生,这次由ISR2处理。

1.7 时间触发系统

与事件触发系统一样,时间触发系统既可以用于桌面系统,也可以用于嵌入式系统。下面的两个例子可以帮助理解时间触发系统与事件触发系统的差异。

医院里有一位医生,必须在一些护理人员的帮助下,24小时照管一些危重病人。医生有两个方案:

方案1:安排护理人员在某个病人出现严重问题的时候来喊医生,这就是时间触发解决方案。

方案2:把闹钟设置为每小时闹铃,当闹钟响的时候,医生就去探访病人,检查病人是否需要治疗,这就是时间触发的解决方案。

对于大多数的医生来说,事件触发系统更有吸引力,因为医生在晚上就可以好好的去睡觉了,有事情护理人员回来找的,大概率能睡好几个小时。如果用时间触发系统,那医生每隔一小时就起来看一下,晚上就别想睡了。

但是嵌入式系统里面的处理器是不需要睡觉的,采用时间触发就更好,把那个时间间隔调小一点,反正是处理器干活。

与安全相关的应用系统中,事件触发方法为首选,主要是因为系统的行为可以预计。在看看那个医生的例子,你就会明白为什么会这样。

假设采用事件触发,当有一个病人不舒服的时候,护理人员觉得是小问题,自己就能处理,就不喊医生了,几个小时后,有4个病人不舒服,护理人员忙不过来,就去喊医生,医生一看不得了,其中有两个病人有严重的并发症,马上进行手术,救活了其中的一个,另一个只好等死。

如果采用时间触发,因为每小时医生都会过来检查,小问题在恶化前就会得到及时的处理,不会因为等太久而产生悲剧。只是医生累点,但是病人的生命得到了保障。

在嵌入式系统中,医院的这种场合反应到事件驱动的应用系统中,就是同时发生了多个事件,或者说有多个中断。处理器同时只能处理其中的一个事件,或者中断。嵌入式工程是不要认为,中断事件不会被丢失,最少在51单片机的处理系统中,如果同时产生多个相同优先级的中断,某些中断就会被丢失。

需要处理同时发生的多个事件,不但增加了系统的复杂性,也降低了对时间触发系统在所有情况下的行为做出预计的能力。相比而言,时间触发系统中,设计人员能够通过仔细安排可控的顺序,保证一次只处理一个事件。

正如已经提到的,时间触发系统的可预测性使得这种系统成为安全相关的系统的首选,在这些系统中可靠性是关键的设计要求。然而,对可靠性的要求不仅仅局限于诸如飞机的自动驾驶系统,甚至低端的应用中也有要求,如闹钟,录像机,监控系统等。

除了提高可靠性之外,时间触发系统将有利于降低CPU的负荷,并减少存储器的使用量。因此,即使是小型嵌入式系统,采用时间触发的方式也是有好处的。

1.8 小结

本章介绍的时间触发系统,将在后面的章节继续完善细化。

下一章将讨论各种不同的软件模式。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/711025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL高可用 MMM

MySQL高可用 MMM 一、MMM1.1 MMM介绍1.2 关于 MMM 高可用架构的说明 二、搭建 MySQL MMM2.1 环境准备2.2 搭建 MySQL 多主多从模式2.3 安装配置 MySQL-MMM 一、MMM 1.1 MMM介绍 Master-Master replication manager for MvSQL,MySQL 主主复制管理器。 1、是一套支持…

vue3如何使用vant中IndexBar索引栏?

目录 1、为什么要使用IndexBar索引栏?2、引入3、基础使用4、处理后端返回的数据5、渲染页面 1、为什么要使用IndexBar索引栏? 在我们开发移动端的时候,有时候会遇到制作通讯录或者城市索引栏,这种时候我们就可以使用vant中快捷方…

warp框架教程2-log模块,addr模块和header模块

log , addr 和 header 从本文开始,我们将介绍 warp 中 Filter 的核心模块。在文档中有 filter 相关模块的介绍, 本文来介绍其中的 addr,header 和 log addr 模块 addr 模块非常简单,它是用来获取远程客户端的地址的。使用起来…

高性能计算学习教程,从入门到精通

学习高性能计算需要一定的计算机科学和数学基础。以下是一个详细的学习路线,从入门到精通高性能计算的步骤: 阶段一:基础知识学习 计算机科学基础:了解计算机体系结构、操作系统、数据结构和算法。学习编程语言如C/C、Python等。 …

苹果手机没法访问Fildder代理服务怎么办

浏览器输入http://ip:port进入可下载证书页面 异常情况: 浏览器访问http://ip:port后无响应,白屏,或有“无法使用跳转网络”的提示 解决方法: 1. PC重新下载fiddle证书并重启 Fildder4--Tools--Options--HTTPS--Actions--"…

【2022吴恩达机器学习课程视频翻译笔记】2.5无监督学习-part-2

2.5无监督学习-part-2 In the last video, you saw what is unsupervised learning, and one type of unsupervised learning called clustering. Let’s give a slightly more formal definition of unsupervised learning and take a quick look at some other types of uns…

ruoyi-vue版本(三十)Spring Security 安全框架中token的生成与解析

目录 1 使用2 写工具类3 使用工具类 1 使用 1 项目里面添加依赖 <!-- Token生成与解析--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId></dependency>2 写工具类 package com.ruoyi.framework.we…

【MQ】消息队列的简介以及常见问题的解决方案

MQ MQ的基本概念 MQ全称Message Queue&#xff08;消息队列&#xff09;&#xff0c;实在消息的传输过程中保存消息的容器。多用于分布式系统之间的通信。 分布式系统的两种通信方式&#xff1a;直接调用、借助第三方间接完成 发送者成为生产者&#xff0c;接受者称为消费者…

想要用独立站打造跨境电商品牌吗?这些方法学起来吧!

随着互联网的发展&#xff0c;越来越多的跨境电商卖家开始考虑在独立站上打造自己的品牌。相比于在第三方平台上经营&#xff0c;拥有独立站不仅能够提高品牌认知度和形象&#xff0c;还能够更好地控制产品质量、维护顾客关系&#xff0c;以及获取更多的利润。而要打造一个成功…

CSS盒模型

目录 盒子区域包含块/containing block包含块的确定包含块的影响 行盒/line-boxes行盒的特性vertical-align BFCFCBFC的创建BFC的作用 关于BFC解决margin折叠问题关于设置overflow:auto解决浮动塌陷问题BFC解决塌陷问题的两个条件BFC计算高度规则 盒子区域 浏览器在展示每一个…

N-121基于微信小程序网上书城系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和管理后台两部分&a…

(23)目标检测算法之YOLOv6 (1)全流程指南:环境安装、模型配置、训练及推理

目标检测算法之YOLOv6 (1)全流程指南&#xff1a;环境安装、模型配置、训练及推理 本文向将介绍 YOLOv6 的整体框架&#xff0c;并提供详细的教程链接。官方论文 ☞ YOLOv6: A Single-Stage Object Detection Framework for Industrial Applicationsv3.0版本论文更新 ☞ YOLOv…

综合评价算法 | Matlab实现基于AHP层次分析法的综合评价算法

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 综合评价算法 | Matlab实现基于AHP层次分析法的综合评价算法 研究内容 AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因 素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作…

测试四—测试分类

一、按测试对象划分 1.1 界面测试 界面测试&#xff08;简称UI测试)&#xff0c;指按照界面的需求&#xff08;一般是UI设计稿&#xff09;和界面的设计规则&#xff0c;对我们软件界面所展示的全部内容进行测试和检查&#xff0c;一般包括如下内容&#xff1a; 验证界面内容…

解决:在微服务中一个服务访问另一个服务的类或方法出现的问题

我的需求&#xff1a; 我需要在用户模块使用公共模块的service和mapper和实体类&#xff0c;出现以下错误 ​ springboot启动错误如下&#xff1a; 报错结果&#xff1a;需要一个类型为“com.buba.yka.mapper.salesmanMapper”的bean&#xff0c;但找不到该bean Error starti…

接口自动化面试题【思路分享】

文末免费领资料 接口自动化流程怎么做的&#xff0c;框架怎么搭建的&#xff1f; 流程&#xff1a; 1、分析需求&#xff0c;确定测试范围 2、搭建自动化测试环境、准备相关测试数据 3、工具选型&#xff0c;搭建测试框架 4、编写用例 5、执行用例&#xff0c;生成测试报…

记录好项目D19

记录好项目 你好呀&#xff0c;这里是我专门记录一下从某些地方收集起来的项目&#xff0c;对项目修改&#xff0c;进行添砖加瓦&#xff0c;变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个网上商城管理系统 一、系统介绍 需求设计主要参考天猫商城的购物流…

【Linux】—— 进程的环境变量

序言&#xff1a; 在上期我们已经对进程PCB以及进程状态进行了详细的解释说明。今天&#xff0c;我将带领大家学习的是关于进程的环境变量的问题。 目录 &#xff08;一&#xff09;孤儿进程 1、基本介绍 2、代码演示 &#xff08;二&#xff09;环境变量 1、基本概念 2…

使用git管理matlab代码

matlab使用git管理代码 设置 Git 源代码管理 - MATLAB & Simulink - MathWorks 中国 在 R2020b 之前&#xff0c;必须安装命令行 Git 客户端&#xff0c;才能使用 Git 合并 MATLAB 中的分支。有关详细信息&#xff0c;请参阅安装命令行 Git 客户端。 1.在 Git 中注册二进…

Groovy系列三 Java SpringBoot 整合 Groovy

目录 一、概述 一、在Java中使用Groovy&#xff1a; 二、在Groovy中使用Java&#xff1a; 三、几种范式的不同、优缺点 Java调用Groovy的类和方法&#xff1a; Groovy调用Java的类和方法&#xff1a; 使用GroovyShell执行Groovy脚本&#xff1a; 使用GroovyClassLoader加…