嵌入式系统程序架构的进化
创始人
2024-02-22 23:43:58
0

实用的嵌入式系统我们一般采用分层的架构,可以分成3层(硬件层、驱动层和应用层)或4层(硬件层、驱动层、操作系统层和应用层),这在例解嵌入式系统分层结构已有说明,但是应用程序本身是非常复杂的,尤其是可能涉及到各种人机交互、机机交换的问题,使得系统更加复杂,所以对系统程序的架构做进一步的分析是很有必要的。

下面的分析我们都假定系统在大的层次上分为3层。

1.无交互,少量任务

例:流水灯

2.有少量交互,少量任务

例:按键控制led

1)采用查询方式

2)采用中断方式

3.有多种交互,多种任务

例:处理按键、显示、控制、测量电机转速

1)轮询结构--超级循环结构

主函数的主循环中处理各种交互及业务,适合于简单任务

2)中断驱动的前后台结构

a中断驱动结构

b轮询与中断结合的结构

  • 中断作为后台,主要处理各种设备控制及交互等;
  • 业务逻辑放在主函数的主循环中,作为前台;
  • 中断服务程序中一般不进行业务处理(避免处理时间太长);
  • 前后台之间、任务之间通过变量标志进行同步。

在各种任务中,有些任务是必然存在的:数据的的显示、按键的处理等,一般来说业务逻辑负责处理和产生数据。这时候我们可以采用所谓的MVC架构,M即模型(model),可以看作就是数据,V即视图(view),如何显示数据;而C即控制(control),也就是处理、产生数据;业务逻辑(C)处理数据、模型保存数据、视图显示数据,对于有交互的系统来说这是一种非常有效的架构,通常我们定时器中断周期性的处理显示问题、按键扫描问题。

从上述分析可以看出,对于嵌入式系统来说,定时器是非常重要的。但其重要性还不仅如此,我们常常会遇到系统要求在什么样的时间条件下做什么事情、又在什么样的时间条件下做什么事情,这时定时器中断服务程序可能要控制多个同步变量、或进行多种处理、不仅仅计时,为处理效率考虑,我们常常发现定时器不够用了!

从这里我们也可以看出,嵌入式系统中有三个设备非常重要:GPIO、中断、定时器!一定要掌握。

这里还有几个问题需要解决:

随着系统复杂程度的增加,同步变量的数量越来越多,如何管理这些同步变量?----消息事件机制,统一管理

同一个消息,同一个任务,在不同的状态下需要执行不同的操作,业务逻辑复杂如何解决?---有限状态机

某轮询任务复杂、处理时间较长,影响其他任务的及时处理,如何解决?----大任务拆成小任务(部分解决问题,不是长久之计);多任务操作系统

3)多任务操作系统

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...