|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式软件基础知识 >
|
考试要求:掌握
相关知识点:8个
|
|
|
|
|
在嵌入式系统的发展初期,由于硬件的配置比较低,而且系统的应用范围也比较有限,主要集中在控制领域,对于是否有系统软件的支持,要求还不是很强烈。所以在那个阶段,嵌入式软件的设计主要是以应用为核心,应用软件直接建立在硬件上,没有专门的操作系统,软件的规模也较小,基本上属于硬件的附属品。
|
|
|
在具体实现上,无操作系统的嵌入式软件主要有两种实现方式:循环轮转和前后台系统。
|
|
|
|
如下图所示,循环轮转方式的基本思路是:把系统的功能分解为若干个不同的任务,然后把它们包含在一个循环语句当中,按照顺序逐一执行。当执行完一轮循环后,又回到循环体的开头重新执行。
|
|
|
|
|
循环轮转方式的优点是简单、直观、开销小、可预测。软件的开发就是一个典型的基于过程的程序设计问题,可以按照自顶向下、逐步求精的方式,将系统要完成的功能逐级划分成若干个小的功能模块,像搭积木一样搭起来。由于整个系统只有一条执行流程和一个地址空间,不需要任务之间的调度和切换,因此系统的管理开销很少。
|
|
|
循环轮转方式的缺点是过于简单,所有的代码都必须按部就班地顺序执行,无法处理异步事件,缺乏并发处理的能力。另外,这种方案没有硬件上的时间控制机制,无法实现定时功能。
|
|
|
|
前后台系统就是在循环轮转方式的基础上,增加了中断处理功能,如下图所示。
|
|
|
|
|
上图中的中断服务程序负责处理异步事件,这部分可以看成是前台程序。而后台程序一般是一个无限的循环,负责掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。在系统运行时,后台程序会检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。而对于实时性要求特别严格的操作通常由中断来完成。为了提高系统性能,大多数的中断服务程序只做一些最基本的操作,例如,把来自于外设的数据拷贝到缓冲区、标记中断事件的发生等,其余的事情会延迟到后台程序去完成。
|
|
|
实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先级别,而且任务的执行又是通过先进先出的队列排队,因而对那些实时性要求很高的任务不能立刻得到处理。但由于这类系统的结构比较简单,几乎不需要额外开销,因而在一些简单的嵌入式应用中被广泛地使用,如微波炉、电话机、电子玩具等。
|
|
|
|
从20世纪80年代开始,嵌入式软件进入了操作系统的阶段。这一阶段的标志是操作系统出现在嵌入式系统上,程序员在开发应用程序的时候,不是直接面对嵌入式硬件设备,而是在操作系统的基础上编写,嵌入式软件开发环境也得到了一定的应用。如今,嵌入式操作系统在嵌入式应用中使用得越来越广泛,尤其是在功能复杂、系统庞大的应用中显得愈来愈重要。这种开发方式主要有以下三个优点:
|
|
|
(1)提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能力。这就需要在硬件设计和软件设计这两个方面来提高系统的可靠性和抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。
|
|
|
(2)提高了系统的开发效率,降低了开发成本,缩短了开发周期。
|
|
|
在嵌入式操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程的思想,将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块,而且商业软件一般都提供了良好的多任务调试环境,这样就大大提高了系统的开发效率。
|
|
|
|
在嵌入式操作系统环境下开发应用程序具有很大的灵活性,操作系统本身可以剪裁,外设、相关应用也可以配置,软件可以在不同的应用环境、不同的处理器芯片之间移植,软件构件可复用。
|
|
|
|
|
|
在如上图所示的嵌入式软件体系结构中,最底层是嵌入式硬件,包括嵌入式微处理器、存储器和键盘、输入笔、LCD显示器等输入/输出设备。硬件层之上是设备驱动层,它负责与硬件直接打交道,并为上层软件提供所需的驱动支持。设备驱动层的上面是操作系统层,它可以分为基本部分和扩展部分。前者是操作系统的核心,负责整个系统的任务调度、存储管理、时钟管理和中断管理等功能,这一部分是基础和必备的;后者则是系统为用户提供的一些扩展功能,包括网络、文件系统、图形用户界面GUI、数据库等,这一部分的内容可以根据系统的需要来进行裁剪。在操作系统的上面,是中间件软件,再上面就是各种应用软件了,如网络浏览器、MP3播放器、文本编辑器、电子邮件客户端、电子游戏等。对于嵌入式系统的用户来说,就是通过这些应用软件来跟系统交互。
|
|
|