软考高级架构师-嵌入式系统
2025.08.06嵌入式系统一般在3-5分浮动,会考到案例专题、综合选择题,因嵌入式系统范围较广,如果没有实际嵌入式经验,不建议在案例专题备考。
嵌入式系统概述
嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。
从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中。
一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。
嵌入式系统初始化过程:片级初始化→板级初始化→系统级初始化
从传统意义上讲,嵌入式系统主要由以下部件组成:
- 嵌入式微处理器(控制器(MCU))
- 存储器(RAM/ROM)
- 内(外)总线逻辑
- 定时/计数器
- 看门狗电路:定时器溢出则中断,系统复位处理。看门狗定时器超时会产生看门狗中断。
- I/O接口(串口、网络、USB、JTAG接口–用来进行CPU调试的常用接口)
- 外部设备(UART、LED等)
- 其他部件
嵌入式系统的典型架构可概括为:层次化模式架构和递归模式架构。
- 层次化模式依赖于概念的抽象,不同使用者可关注到架构的不同层面的细节。
- 递归模式实际上是对系统的抽象:系统中的交互协作可以在不同的层次上进行抽象只不过每层反映的细节不同而已。递归模式的实现实际上就是靠重复应用简单的包含关系。
嵌入式硬件
嵌入式系统的发展大致经历了五个阶段:
- 第一阶段:单片微型计算机(SCM)阶段,即单片机时代。
- 第二阶段:微控制器(MCU)阶段
- 第三阶段:片上系统(SoC)。
- 第四阶段:以lnternet为基础的嵌入式系统。
- 第五阶段:在智能化、云技术推动下的嵌入式系统。
通常嵌入式处理器需要根据不同的使用场景选择不同类型的处理器,从处理器分类看,大致可分为MPU、MCU、DSP、GPU、SoC:
- 微处理器(MicroProcessorUnit,MPU):将微处理器装配在专门设计的电路板上,只保留与嵌入式应用有关的母板功能。微处理器一般以某一种微处理内核为核心,每一种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。
- 微控制器(MicroControlUnit,MCU):又称单片机。与MPU相比MCU的最大优点在于单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。
- 信号处理器(DigitalSignalProcessor,DSP):DSP处理器对系统结构和指令进行了特殊设计(通常,DSP采用哈佛结构),使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。
- 图形处理器(GraphicsProcessingUnit,GPU):GPU是图形处理单元的缩写,是一种可执行3D图形渲染等图像的半导体芯片(处理器)。GPU可用于个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。 它可减少对CPU的依赖,并执行部分原本属于CPU的工作,尤其是在3D图形处理中,GPU采用了核心技术(如:硬件T&L、纹理压缩等)保证了3D快速渲染的能力。 GPU目前已广泛应用于各行各业,GPU中集成了同时运行在GHz的频率上的成千上万个core,可以高速处理图像数据。最新的GPU峰值性能可高达100TFlops以上。
- 片上系统(SystemonChip,SoC):追求产品系统最大包容的集成器件。 它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。 成功实现了软硬件的无缝结合,直接在微处理器片内嵌入操作系统的代码模块。减小了系统的体积和功耗、提高了可靠性和设计生产效率。 狭义角度:信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;广义角度:SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。 国内外学术界一般倾向将SoC定义为将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品。
嵌入式操作系统
嵌入式操作系统(EmbeddedOperatingSystem,EOS)是指用于嵌入式系统的操作系统。 嵌入式操作系统是一种用途广泛的系统软件,负责嵌入式系统的全部软、硬件资源分配、任务调度、控制、协调并行活动等工作。 通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式实时操作系统
根据系统对时间的敏感程度可将嵌入式系统划分为:
- 嵌入式非实时系统
- 嵌入式实时系统:能够在指定或者确定的时间内完成系统功能和外部或内部同步或异步时间做出响应的系统。
如果从安全性要求看,嵌入式系统还可分为:
- 安全攸关系统:安全攸关系统也称为安全关键系统或者安全生命关键系统,是指其不正确的功能或者失效会导致人员伤亡、财产损失等严重后果的计算机系统。
- 非安全攸关系统。
嵌入式实时操作系统兼具嵌入式操作系统的特点和实时操作系统的特点。嵌入式操作系统主要有以下特点:
- 微型化
- 代码质量高
- 专业化
- 实时性强
- 可裁减、可配置
实时操作系统的最核心特点是实时性强。
嵌入式实时操作系统调度算法:
- 时间片轮转调度算法:为每个任务提供确定份额的CPU执行时间。
- 优先级调度算法:静态-系统为每个任务分配一个相对固定的优先顺序。动态-优先级可以动态改变。
- 抢占式优先级调度算法:任何时候运行的任务都是所有就绪任务中具有最高优先级的任务。 大多数RTOS调度算法都是抢占方式(可剥夺方式)。通常根据任务紧急(或松弛)的程度,任务的紧急程度愈高,为该任务所赋予的优先级就愈高。
- 单调速率调度算法(RMS算法):是一种静态优先级调度算法,是经典的周期性任务调度算法。RMS的基本思路是任务的优先级与它的周期表现为单调函数的关系,任务的周期越短,优先级越高;任务的周期越长,优先级越低。
- 最早截止期调度算法(EDF算法):根据任务的截止时间来确定其优先级,对于时间期限最近的任务,分配最高的优先级。
- 最低松弛度优先(LLF)算法:根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,使之优先执行。
操作系统内核架构
内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。 目前从内核架构来划分,可分为宏内核和微内核。
单体内核:
- 实质:将图形、设备驱动及文件系统等功能全部在内核中实现,运行在内核状态和同一地址空间。
- 优点:减少进程间通信和状态切换的系统开销,获得较高的运行效率。
- 缺点:内核庞大,占用资源较多且不易剪裁。系统的稳定性和安全性不好。
微内核:
- 实质:只实现基本功能,将图形系统、文件系统、设备驱动及通信功能放在内核之外。
- 优点:微内核系统结构相当清晰,有利于协作开发。内核精练,便于剪裁和移植(灵活性、可扩展性)系统服务程序运行在用户地址空间,系统的可靠性、稳定性和安全性较高。可用于分布式系统。
- 缺点:用户状态和内核状态需要频繁切换,从而导致系统效率不如单体内核,性能偏低。
鸿蒙操作系统
鸿蒙(HarmonyOs)整体采用分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层。 系统功能按照“系统”-“子系统”“功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块,如图所示。
鸿蒙(HarmonyOS)操作系统架构具有4个技术特性:
- 分布式架构首次用于终端OS,实现跨终端无缝协同体验
- 确定时延引擎和高性能IPC技术实现系统天生流畅
- 基于微内核架构重塑终端设备可信安全
- 通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享
嵌入式数据库
与传统数据库相比,嵌入式数据库系统有以下几个主要特点:
- 嵌入式
- 实时性
- 移动性
- 伸缩性
按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:
- 基于内存方式(MainMemoryDatabase,MMDB):基于内存的数据库系统是实时系统和数据库系统的有机结合。 内存数据库是支持实时事务的最佳技术,其本质特征是以其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。
- 基于文件方式(FileDatabase,FDB):基于文件的数据库系统就是以文件方式存储数据库数据,即数据按照一定格式储存在磁盘中。 使用时由应用程序通过相应的驱动程序甚至直接对数据文件进行读写。
- 基于网络方式(NetwareDatabase,NDB):基于网络的数据库系统是基于手机4G/5G的移动通信基础之上的数据库系统,在逻辑上可以把嵌入式设备看作远程服务器的一个客户端。 嵌入式网络数据库系统的特点是无需解析SQL语句;支持更多的SQL操作;客户端小、无须支持可剪裁性;有利于代码重用。
关于嵌入式网络数据库:
- 实际上,嵌入式网络数据库是把功能强大的远程数据库映射到本地数据库,使嵌入式设备访问远程数据库就像访问本地数据库一样方便。
- 嵌入式网络数据库主要由三部分组成:客户端、通信协议和远程服务器。 客户端主要负责提供接口给嵌入式程序,通信协议负责规范客户端与远程服务器之间的通信,还需要解决多客户端的并发问题,远程服务器负责维护服务器上的数据库数量。
- 这里要说明的是,由嵌入式网络数据库、嵌入式本地数据库(内存或文件)和嵌入式Web服务器等构成了综合的嵌入式综合信息系统。
嵌入式系统设计
嵌入式软件的开发与传统的软件开发方法存在比较大的差异,主要表现在以下方面:
- 嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具下载到目标机或固化在目标机储存器上运行。
- 嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性。
- 嵌入式软件开发的结果通常需要固化在目标系统的储存器或处理器内部储存器资源中。
- 嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备。
- 嵌入式软件对实时性的要求更高。
- 嵌入式软件对安全性和可靠性的要求较高。
- 嵌入式软件开发是要充分考虑代码规模。
- 在安全攸关系统中的嵌入式软件,其开发还应满足某些领域对设计和代码审定。
- 模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能。
JTAG(JointTestActionGroup,联合测试工作组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试和调试。
嵌入式软件设计层面的功耗控制主要可以从以下方面展开:
- 软硬件协同设计,即软件的设计要与硬件的匹配,考虑硬件因素。
- 编译优化,采用低功耗优化的编译技术。
- 减少系统的持续运行时间,可从算法角度进行优化。
- 用“中断”代替“查询”。
- 进行电源的有效管理。