Menu
软件体系结构的基本概念
在决定嵌入式系统结构的众多因素中,最重要的是对系统响应的控制程度。而获得良好响应的困难程度,不仅取决于对绝对响应时间的要求,而且取决于所使用的微处理器的速度和其它的处理需求。
一般来说,对于一个功能有限、响应时间要求很低的系统,可以用一种很简单的结构来实现;而对于一个能对多种不同的事件做出快速响应、并且对截止时间和优先级具有各种不同的处理要求的系统,则要采用一种更加复杂的结构。
几种常见的嵌入式软件结构
轮转结构(round-robin architecture)
Example
不存在中断,主循环知识简单地检查每一个I/O设备,并且为需要服务的设备提供服务
特点
1、优点
程序简单
执行效率高
2、缺点
安全性较差
不能及时处理紧急事务
3、最坏响应时间
除该设备本身外,一次循环的最大时间
带有中断的轮转结构( round-robin with interrupts architecture)
特点
1、优点
可以获得快速响应
可以通过设置优先级实现更多的控制
2、缺点
可能存在潜在的数据共享问题
函数队列结构(function-queue-scheduling architecture)
定义
在这种结构中,中断程序在一个函数指针队列中添加一个函数指针,以供 main 程序调用。主程序只需从该队列中读取相应的指针并且调用相关的函数。
特点
该结构没有规定 main 必须按照中断程序发生的顺序来调用函数,main 可以根据任何可以到达目标的优先级方案来调用函数,这样可以使得任何需要更快响应的任务代码能更早地执行。
响应时间
1、最高优先级的中断
最坏的情况是等于最长任务代码的执行时间 + 中断程序的执行时间。
2、较低优先级的中断
较低优先级的函数可能永远不能执行。
当较低优先级的中断程序很长时,较高优先级的中断程序不能得到及时响应,可将较低优先级的函数分段写,但这样会增加处理的复杂度,需要使用操作系统。
实时操作系统结构(real-time operating system architecture)
不同之处
1)中断程序与任务代码之间的必要信号发送是由实时操作系统处理的,而不需要使用共享变量。
2)在代码中没有用循环来决定下一步要做什么。实时操作系统内部的代码可以决定什么任务代码函数可以运行,它也知道各种任务的子程序,并且可以在任何时刻运行它们中相对比较紧急的子程序。
3)实时操作系统可以在一个任务代码子程序运行期间将其挂起,以便运行另一个子程序。
优先级
实时操作系统不仅能控制任务代码的响应时间,还可以控制中断程序的响应时间。
特点
1、优点:
实时操作系统不仅能够解决响应时间问题,而且还能提供调试工具。
系统的响应时间相对稳定。
2、缺点:
需要一定的费用(付费使用)。
操作系统本身需要一定的处理时间。
软件结构的选择
软件结构的选择可参考以下原则:
- 选择可以满足响应时间的最简单的结构。
- 对于响应时间要求很高而必须选用实时操作系统的,可以考虑选用实时操作系统。
- 若有必要,则可以将四种结构结合起来应用。