[toc]
系统分析师笔记17_嵌入式系统分析与设计
该笔记内容来自《系统分析师教程》第2版。
随着智能制造、物联网、人工智能等技术的快速发展,我国嵌入式系统产品需求在不断增加,嵌入式系统的快速增长,应用领域也在快速扩张,航空航天、汽车电子、交通、通信、家用电器、电子、金融、网络、监控和工业自动化等领域尤其明显。
嵌入式系统是随着微电子技术、软件和传感器技术的发展而快速推进的,但其基本工作原理和特性是有别于我们日常电子系统的。
因此,嵌入式系统软件的分析与设计方法也应具备嵌入式系统的特征。
嵌入式系统概述
嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用的功能、可靠性、成本、体积和功耗等方面的要求,集可配置、可裁减的软硬件于一体的专用计算机系统。
嵌入式系统特点
归纳起来,典型的嵌入式系统具有以下特点:
- (1)专用性强。嵌入式系统是针对具体应用的专门设计的系统,其个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。
- (2)实时性强。很多嵌入式系统对外来事件要求在限定的时间内及时做出响应,具有实时性。根据实时性的强弱,通常将嵌入式系统分为实时嵌入式系统和非实时嵌入式系统,其中大部分为实时嵌入式系统。
- (3)软硬件依赖性强。嵌入式系统的专用性决定了其软硬件的互相依赖性很强,两者必须协同设计,以达到共同实现预定功能的目的,并满足性能、成本和可靠性等方面的严格要求。
- (4)专用处理器。嵌入式系统采用的处理器一般是为嵌入式特定目的而专门设计的嵌入式处理器。
- (5)多种技术紧密结合。嵌入式系统通常是计算机技术、半导体技术、电子技术、机械技术与各行业的具体应用相结合的产物。
- (6)系统透明性。嵌入式系统在形态上与通用计算机系统差异甚大。它的输入设备往往不是常见的鼠标和键盘之类的设备,甚至没有输出装置,用户可能根本感觉不到它所使用的设备中有嵌入式系统的存在,即使知道,也不必关心嵌入式系统的相关情况。
- (7)系统资源受限。嵌入式系统为了达到结构紧凑、高可靠性和低成本的目的,其存储容量、I/O设备的数量和处理器的处理能力都比较有限。
嵌入式系统组成
嵌入式系统是一种嵌入对象体的结构中或带有执行装置的应用环境中的专用系统,它主要由5个核心功能部件组成,即传感器、处理单元(PE)、作动器、输入接口和输出接口。
- (1)传感器。传感器将物理参数转换为待处理的电信号。例如,热电偶是将热量转换为电信号的热传感器。
- (2)处理单元(PE)。数据处理单元(或嵌入式计算机)接收输入接口提供的数字数据,对数据进行处理,并决定执行某个输出功能。
- (3)作动器。作动器从数据处理单元的输出接口接收电信号,并执行物理动作。继电器就是典型的作动器,当继电器被信号激活时,它将打开(或者关闭)某个开关。
- (4)输入接口。实时计算机的输入接口将电信号转换成计算机能够处理的数字形式。传感器有可能嵌入了需要的转换器。
- (5)输出接口。输出接口对实时计算机输出的二进制数据进行处理,将其转换成作动器或其他输出设备需要的信号形式。
其基本工作原理如图17-1所示。 
基于多核处理器的嵌入式系统
嵌入式系统处理器结构包括单核结构、多处理器结构、超线程结构、多核结构、共享Cache的多核结构和采用超线程技术的多核结构6种,如图17-3所示。

目前,多核处理器已被广泛应用于嵌入式系统中,其低功耗、多线程并发等优势很好地满足了嵌入式系统需求。
嵌入式数据库管理系统
嵌入式数据库管理系统(Embedded DatabaseManagement System,EDBMS)是指嵌入式系统中用于存储、管理数据的数据库管理系统。
它是一种对资源的要求相对有限的数据库管理系统,它与操作系统及其应用软件集成在一起,固化在嵌入式计算机上,可以支持与嵌入式系统的专门用途密切相关的应用。
嵌入式数据库管理系统的分类
可以把嵌入式数据库管理系统分成嵌入式内存数据库管理系统、嵌入式实时数据库管理系统以及移动数据库管理系统三大类。三类数据库管理系统的侧重点如图所示。

嵌入式数据库管理系统的组成
—个完整的嵌入式数据库管理系统由若干子系统组成,包括数据库服务器、同步服务器、嵌入式数据库 和连接网络等,如图17-5所示。

嵌入式操作系统
嵌入式操作系统概述
嵌入式操作系统(Embedded Operating System,EOS)是嵌入式系统不可或缺的核心软件。它是一种用途广泛的系统软件,负责嵌入式系统的全部软硬件资源分配、任务调度、控制、协调并行活动等工作。通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统的特点
与通用操作系统相比,嵌入式操作系统主要有以下特点:
- (1)微型化。嵌入式操作系统的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存。因此,EOS必须做得小巧,以占用尽量少的系统资源。
- (2)代码质量高。在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽量精简。
- (3)专业化。嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同应用领域专门设计的。因此,EOS要有很好的适应性和移植性,还要支持多种开发平台。
- (4)实时性强。嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合。因此,实时性成为EOS的又一特点。
- (5)可裁减和可配置。应用的多样性要求EOS具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁减,以适应微型化和专业化的要求。
宏内核和微内核
内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。
目前,从内核结构来划分,可将内核分为宏内核(Monolithic Kernel)、微内核(Micro Kernel)和混合内核。
- (1)宏内核。宏内核管理着用户程序和硬件之间的系统资源,在宏内核架构中,用户服务和内核服务在同一空间中实现。也就是说,内核可以代表内核进程运行代码,就是通常的内核进程。当用户进程经过系统调用或者中断进入内核态时,内核也可以代表它运行代码。其优点是实时性高,用户程序可直接调用内核功能;结构比较简单,易于设计。缺点是代码耦合度高,缺少移植性。
- (2)微内核。内核管理着所有的系统资源,在微内核中用户服务和内核服务在不同的地址空间中实现。在应用程序和硬件的通信中,内核仅提供极少的进程和内存管理服务,而客户端程序和运行在用户空间的服务通过消息的传递来建立通信,它们之间不会有直接的交互。其优点是结构清晰,有利于协作开发;有良好的移植性,代码量非常少;有相当好的伸缩性、扩展性。缺点是系统性能偏低。
- (3)混合内核。混合内核的结构其实与微内核相似,为了提高性能,混合内核中会将一些原本微内核中运行在用户层的功能模块放回内核中,而不常用的,或者需要的时间很长的功能模块还是放在用户层。
多级任务调度算法
当开发多任务的嵌入式系统应用时,因为系统的资源是有限的,多个任务执行时,共享和竞争相同的资源不可避免,在可抢占的多任务环境中,资源共享是任务优先级的一个函数,任务的优先级越高,则任务越重要。当访问共享资源时,高优先级的任务先于较低优先级的任务。嵌入式系统中多个任务利用并发执行达到效率最大化,任务之间协同工作也是实际应用的普遍要求。因此,任务之间的通信和同步问题也是设计人员必须考虑的。
调度算法的分类
调度算法可以分为如下几类:
- (1)软时限算法与硬时限算法。实时系统相当复杂,任务优先级的确定与调度并非易事。实时系统大多综合了软实时和硬实时这两种需求,软实时系统只要求任务尽快执行,并不要求在某一特定时间内完成;在硬实时系统中,要求任务不但要正确无误执行,而且还要准时完成。
- (2)周期性与非周期性算法。
- 周期性算法是指调度周期性的任务算法,即每隔n个时间单元会执行一次的任务。这n个时间单元称为任务周期。
- 非周期性任务是指任务请求处理器的时间是不能预期的。
- (3)可抢占与非抢占算法。
- 可抢占算法是指正在运行的任务可能被其他任务打断,从而放弃CPU,让其他任务执行;
- 非抢占算法是指任务会一直运行到结束或者等待其他资源而被阻塞,否则不会放弃CPU。
- (4)静态算法与动态算法。根据任务优先级确定的时机,调度算法分为静态算法和动态算法两类。
- 静态算法是指任务的优先级在设计时就被确定,在任务运行的过程中不会再发生改变。通常,静态调度算法中确定任务优先级的主要依据有执行时间、任务周期和任务的紧迫性。
- 动态算法是指任务的优先级在运行的过程中动态确定,并且会不断地发生变化和更新,该类算法能够完全掌握系统中运行的任务和截止时间、运行时间、优先级,以及到达时间等时间约束,可以灵活地处理变化的系统情况。
- (5)单处理器调度与多处理器调度算法。
- 单处理器算法仅处理一个处理器的情况。
- 多处理器算法可以处理系统中有多个处理器的情况。多处理器算法又分为同质多处理系统和异质多处理系统两种情况。
- (6)在线与离线调度算法。
- 离线调度算法就是运行中使用的调度信息在系统运行之前就被确定,运行的过程中不再变更,离线调度算法具有确定性,但缺少灵活性,适用于那些能够预先知道运行特性,且不易发生变化的应用类型:
- 在线调度算法是指系统运行的调度信息是运行过程中动态收集获取的,如优先级驱动的调度等,该类算法具有最大的灵活性。
当前,大多数内核支持两种普遍的调度算法,即基于优先级的抢占调度和时间轮转调度算法
嵌入式系统开发
开发平台
嵌入式系统的软件开发方法采用的不是通用的开发方法,而是交叉式开发方法,即软件在一个通用的平台上开发,而在另一个嵌入式目标平台上运行。
这个用于开发嵌入式软件的通用平台称为宿主机系统,被开发的嵌入式系统称为目标机系统。
交叉开发环境
如图所示一个典型的交叉平台开发环境,包含如下三个高度集成的部分:
- (1)运行在宿主机和目标机上的强有力的交叉开发工具和实用程序。
- (2)运行在目标机上的高性能、可裁剪的实时操作系统。
- (3)连接宿主机和目标机的多种通信方式,如以太网、USB、串口等。

交叉编译环境
如图17-18所示是一个典型的交叉编译环境的示例,显示了如何使用开发工具处理各种输入文件,并产生最终目标文件的过程。

在图17-18中,交叉编译器将用户编写的 C/C++/Java 源代码文件根据目标机的CPU类型,生成包含二进制代码和程序数据的目标文件。在此过程中,交叉编译器会建立一个符号表,包含所产生的目标文件中指向映像地址的符号名,当建立重定位输出时,编译器为每个相关的符号产生地址。归档器将这些目标文件收集到一起,形成一个库。最后,链接器将这些目标文件作为输入来产生一个可执行的映像。
开发流程
嵌入式软件的开发通常与嵌入式硬件紧密相关,其软件需求通常是由系统分配给软件的。
嵌入式软件开发过程大体可以分为项目计划、需求分析、概要设计、详细设计、编码实现、下载、调试、固化、测试及运行等几个阶段,各个阶段不断反复,直到最终完成设计目标。
与通用系统的开发类似,嵌入式软件的开发方法也可以采用软件工程中常见的开发模型,如瀑布模型和螺旋模型等。
软硬件协同设计
嵌入式系统设计不同于通用系统的软件设计,通常包含硬件设计和软件设计两个方面。
低功耗设计
嵌入式系统通常都是一些移动设备,不能像通用计算机系统那样,长期插接供电电源。因此,在进行嵌入式系统设计时,必须考虑其功耗问题。
事实上,低功耗设计是嵌入式系统设计中的难点,是一个系统化的综合问题,必须从软件和硬件两方面全面考虑,才能真正有效地降低功耗。
嵌入式系统认证
由于嵌入式系统大多数用于航空、航天、轨道交通等安全性、可靠性要求高的领域,其正确性直接关系人身、财产的安全。
嵌入式系统开发完成后,如何证明系统正确设计并实现了用户要求,并且是安全、可靠的,这就需要进行嵌入式系统验证。
