系统分析师3:嵌入式技术
系统分析师3:嵌入式技术
嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。本文将从嵌入式系统的概述、硬件、软件、操作系统、多核技术以及设计开发等多个方面进行详细讲解。
1 嵌入式系统概述
1.1 基本概念
- 嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软、硬件集成于一体的专用计算机系统【面向特定领域】,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求
- 从计算机角度看,嵌入式系统是指嵌入各种设备及应用产品内部的计算机系统。它主要完成信号控制的功能,体积小、结构紧凑,可作为一个部件埋藏于所控制的装置中
一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成 - 嵌入式系统通常通过外部接口采集相关输入信息或人机接口输入的命令,对输入数据进行加工和计算,并将计算结果通过外部接口输出,以控制受控对象
1.2 嵌入式系统软件组成架构
在这里插入图片描述
- 硬件层->抽象层->操作系统层->中间件层->应用层
- 嵌入式系统初始化过程:片级初始化->板级初始化->系统级初始化
2 嵌入式硬件
2.1 嵌入式微处理器体系结构
嵌入式微处理器主要用于处理相关任务。由于嵌入式系统通常都在室外使用,可能处于不同环境,因此选择处理器芯片时,也要根据不同使用环境选择不同级别的芯片。其主要因素是芯片可适应的工作环境温度。通常,我们把芯片分为民用级、工业级和军用级。
- 民用级器件的工作温度范围:0 ~ 70℃
- 工业级器件的工作温度范围:-40 ~ 85℃
- 军用级器件的工作温度范围:-55~150℃
当然,除了环境温度外,环境湿度、震动、加速度等也是应考虑的因素。
2.2 总线
基本概念
总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。【总线通常是半双工的】
特点
- 挂接在总线上的多个部件只能分时向总线发送数据,但可同时从总线接收数据
- 通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息
- 从功能上将总线划分为数据总线、地址总线和控制总线
- 从数据传输的方式将总线划分为并行总线和串行总线
- 并行总线:将数据字节的各位用多条数据线同时进行传送【短距离】
- 串行总线:数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。【长距离,传输波特率可调整,正确性依赖于校验码,数据传输方式可以使用多种】
2.3 接口
I/O接口,也称为I/O控制器,它是主机和外设(外部设备)直接的交接界面,通过接口可以实现主机和外设之间的信息交换。
接口的主要功能表现在以下5个方面:
(1) 实现主机和外设的通信联络控制。
(2) 进行地址译码和设备选择。
(3) 实现数据缓冲。
(4) 数据格式的变换。
(5) 传递控制命令和状态信息。
接口的分类:串行接口和并行接口。
IEEE-1394串行接口标准
1394是构建在菊花链或树状的拓扑接口上的,它支持63个节点,每个节点可以支持多达16台设备的菊花链。如果还不够用的话,该标准还支持最多1023条桥接的总线,这样就可以互连1023*63=64449个节点
3 嵌入式系统软件
3.1 基本概念
嵌入式系统具有以下特点:
- 规模较小
- 开发难度大
- 硬件资源有限
- 嵌入式软件一般涉及底层软件的开发,需要软、硬件基础。开发环境和运行环境不同
- 实时性和可靠性要求高。如火箭飞行控制、核电站
- 要求固化存储
3.2 嵌入式系统软件分类
根据系统对时间的敏感程度可将嵌入式系统划分为
嵌入式系统
嵌入式实时系统
强实时系统
弱实时系统
从安全性要求看,嵌入式系统还可分为安全攸关系统
非安全攸关系统
4 嵌入式操作系统
4.1 嵌入式操作系统特点
嵌入式操作系统具有一般操作系统的功能,同时具有嵌入式软件的特点,主要有:
- 非通用型操作系统
- 在性能和实时性方面可能有严格的限制
- 能源、成本和可靠性通常是影响设计的重要因素
- 占用资源少
- 可剪裁、可配置
- 微型化
- 可定制:从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要。
- 实时性
- 可靠性
- 易移植性:为了提高系统的易移植性,通常采用硬件抽象层(HAL)和板级支持包(BSP)的底层设计技术。
4.2 嵌入式实时操作系统
4.2.1 嵌入式实时操作系统分类
按照系统对响应时间的敏感程度,可以分为:
- 硬实时系统:系统对响应时间有严格要求,若响应时间不能满足,是绝对不允许的,
会引起系统的崩溃或致命的错误 - 软实时系统:系统对响应时间有要求,若响应时间不能满足,会带来额外可接受的
代价 - 非实时系统:响应时间没有严格要求
如分时操作系统,基于公平性原则,各进程分享处理器,获得大致相同的运行时间
4.2.2 嵌入式实时操作系统实时性的评价指标
- 任务切换时间
- 中断响应和延迟时间
- 系统响应时间
- 信号量混洗时间
4.2.3 嵌入式实时操作系统调度算法
- 优先级调度算法:系统为每个任务分配一个相对固定的优先顺序
- 抢占式优先级调度算法:根据任务的紧急程度确定该任务的优先级。大多数RTOS调度算法都是抢占方式(可剥夺方式)
- 最早截止期调度算法(EDF算法)︰根据任务的截止时间来确定其优先级,对于时间期限最近的任务,分配最高的优先级
4.3 操作系统内核架构
内核是操作系统的核心部分,它管理着系统的各种资源。内核可以看成连接应用程序和硬件的一座桥梁,是直接运行在硬件上的最基础的软件实体。
目前从内核架构来划分,可分为宏内核(Monolithic Kernel)和微内核(Micro Kernel)。
4.4 微内核操作系统
现代操作系统大多拥有两种工作状态,分别是核心态和用户态。一般应用程序工作在用户态,而内核模块和最基本的操作系统核心工作在核心态。
将传统的操作系统代码放置到更高层,从操作系统中去掉尽可能多的东西,而只留下最小的核心,称之为微内核。(C/S结构)
操作系统的内核服务:异常和中断、计时器、I/O管理等。
5 多核技术
5.1 多核操作系统
对于多核CPU,优化操作系统任务调度算法是保证效率的关键。一般任务调度算法有全局队列调度和局部队列调度
- 全局队列调度:指操作系统维护一个全局的任务等待队列,当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。这种方法的优点是CPU核心利用率较高
- 局部队列调度:指操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache命中率。目前多数多核CPU操作系统采用的是基于全局队列的任务调度算法
6 嵌入式设计与开发
6.1 交叉开发环境
JTAG (Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试和调试。
6.2 嵌入式开发和传统开发的差异
嵌入式软件的开发也与传统的软件开发方法存在比较大的差异,主要表现在以下方面:
(1)嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具卸载到目标机或固化在目标机储存器上运行
(2)嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性
(3)嵌入式软件开发的结果通常需要固化在目标系统的储存器或处理器内部储存器资源中
(4)嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备
(5)嵌入式软件对实时性的要求更高
(6)嵌入式软件对安全性和可靠性的要求较高
(7)嵌入式软件开发时要充分考虑代码的规模
(8)在安全攸关系统中的嵌入式软件,其开发还应满足某些领域对设计和代码的审定
(9)模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能
6.3 低功耗设计
嵌入式系统设计一般要考虑功耗问题,低功耗设计是嵌入式系统设计中的难点,是一个系统化的综合问题,必须从软件和硬件两个方面全面考虑。