这里主要内容为系统架构设计师教程(第二版)上对应2.4,嵌入式系统,教材中对于嵌入式描述十分简略只介绍了基本概念,虽然偶尔会考到,但考的时候就一直超纲这里内容较少,后续会逐步进行补充。
文档内容是看了视频后整理,如有遗漏,欢迎评论补充。刷题使用51CTO小程序 如果大家有更好的 可以分享一下。
这里主要内容为系统架构设计师教程(第二版)上对应2.4,嵌入式系统,教材中对于嵌入式描述十分简略只介绍了基本概念,虽然偶尔会考到,但考的时候就一直超纲这里内容较少,大家自行补充。
嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁减的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。
一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组
成。
嵌入式系统应具备以下特性:
嵌入式系统分类
根据不同用途可将嵌入式系统划分为嵌入式实时系统和嵌入式非实时系统两种,而实时系统又可分为强实时系统和弱实时系统。如果从安全性要求看,嵌入式系统还可分为安全攸关系统和非安全攸关系统。
嵌入式系统分为硬件层、抽象层、操作系统层、中间件层和应用层等5层。
嵌入式软件的主要特点如下:
M2M 全称 Machine to Machine,是指数据从一台终端传送到另一台终端,也就是机器与机器的对话。M2M 应用系统构成有智能化机器、M2M 硬件、通信网络、中间件。
DO-178B的目的在于为制造机载系统和设备的机载软件提供指导,使其能够提供在满足符合适航要求的安全性水平下完成预期的功能的信心。为了满足该目标,DO-178B 给予了以下三方面的指导:
在 DO-178B中,目标、过程、数据是软件适航的基本要求
NPU:国产嵌入式神经网络处理器,是一种专门应用于网络应用数据包的处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
NPU也是集成电路的一种,但区别于特殊用途集成电路(ASIC)的单一功能,网络处理更加复杂、更加灵活,一般可以利用软件或硬件依照网络运算的特性特别编程从而实现网络的特殊用途,在一块芯片上实现许多不同功能,以应用于多种不同的网络设备及产品。
NPU的亮点在于能够运行多个并行线程-NPU通过一些特殊的硬件级优化,比如为一些真正不同的处理核提供一些容易访问的缓存系统,将其提升到另一个层次。这些高容量内核比通常的“常规”处理器更简单,因为它们不需要执行多种类型的任务。这一整套的“优化”使得NPU 更加高效,这就是为什么这么多的研发会投入到ASIC中的原因。
NPU的优势之一在于,大部分时间集中在低精度的算法,新的数据流架构或内存计算能力。与GPU 不同,它们更关注吞吐量而不是延迟。
冯诺依曼结构
传统计算机采用冯·诺依曼(VonNeumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
冯·诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
采用单一的地址及数据总线,程序指令和数据的宽度相同。
处理器执行指令时,先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费儿个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。
哈佛结构
哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。
与两个存储器相对应的是系统中的两套独立的地址总线和数据总线。
这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。
但这不意味着可以在一个机器周期内多次访问存储器。
嵌入式硬件系统基本结构如下图所示,一般由嵌入式微处理器、存储器、输入/输出部分组成,其中,嵌入式微处理是嵌入式硬件系统的核心,通常由3大部分组成:控制单元(控制器)、算数逻辑单元(运算器)、寄存器。
根据嵌入式微处理器的字长宽度,可分为4位、8位、16位、32位和64位。一般把 16 位及以下的称为嵌入式微控制器(Embedded Micro Controller),32 位及以上的称为嵌入式微处理器。
如果按系统集成度划分,可分为两类:一种是微处理器内部仅包含单纯的中央处理器单元,称为一般用途型微处理器:另一种则是将CPU、ROM、RAM及I/0等部件集成到同一个芯片上,称为单芯片微控制器(Single Chip Microcontroller)。
如果根据用途分类,一般分为嵌入式微控制器MCU、嵌入式微处理器MPU、嵌入式数字信号处理器DSP、嵌入式片上系统SOC等。
嵌入式微控制器MCU的典型代表是单片机,其片上外设资源比较丰富,适合于控制。MCU芯片内部集成 ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、1/0、串行口、脉宽调制输出、A/D、D/A、FaSh RAM、EEPROM 等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高,其片上外设资源一般较丰富,适合于控制,是嵌入式系统工业的主流。
嵌入式微处理器 MPU由通用计算机中的CPU 演变而来。它的特征是具有 32 位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可性高的优点。目前常见的有ARM、MIPS、POWER PC等。
嵌入式数字信号处理器DSP是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构,流水线处理,其处理速度比最快的 CPU 还快 10-50 倍。在数字滤波、FFT、谱分析等各种仪器上 DSP 获得了大规模的应用。
DSP 特点:
多总线结构,允许 CPU 同时进行指令和数据的访问,因而可以实现流水线操作。
哈佛体系结构,程序和数据空间分开,可以同时访问指令和数据。
数字信号处理的运算特点:乘/加,及反复相乘求和(乘积累加)。
DSP 设置了硬件乘法/累加器,能在单个指令周期内完成乘法/加法运算。
DSP 主要应用:信号处理、图像处理,仪器、语言处理、控制、军事、通讯、医疗、家用电器等领域
嵌入式片上系统SOC,是追求产品系统最大包容的集成器件。SOC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单一的处理器插槽中。多核与多CPU相比,很好的降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以。
双核处理器:基于单个半导体的一个处理器上拥有2个处理器核心。
由于将2个或多个运算核封装在一个芯片上,节省大量品体管、封装成本;显著提高处理器性能;兼容性好;系统升级方便。
2个或多个内核工作协调实现方式:
从目前已经发布或透露的多核处理器原型来看,对称式的处理方式将成为未来多核处理器的主要体系体系结构,同时,多核间将共享大容量的缓存作为处理器之间及处理器与系统内存之间交换数据的“桥梁”。为了提高交换速度,这些缓存往往集成在片内,其数据传输速度是惊人的。
多核 CPU 的调度
多核CPU环境下进程的调度算法一般有全局队列调度和局部队列调度两种:
例题
例题1:嵌入式处理器是嵌入式系统的核心部件,一般可分为嵌入式微处理器(MPU)、微控制器(MCU)、数字信号处理器(DSP)和片上系统(soC)。以下叙述中,错误的是()
A.MPU在安全性和可靠性等方面进行增强,适用于运算量较大的智能系统
B.MCU典型代表是单片机,体积小从而使功耗和成本下降
C.DSP处理器对系统结构和指令进行了特殊设计,适合数字信号处理
D.SOC是一个有专用目标的集成电路,其中包括完整系统并有嵌入式软件的全部内容
答案:A
例题2:以下关于多核处理器的说法中,不正确的是( )
A、采用多核处理器可以降低计算机系统的功耗和体积
B、SMP、BMP和AMP是多核处理器系统通常采用的三种结构,采用哪种结构与应用场景相关,而无须考虑硬件的组成差异
C、在多核处理器中,计算机可以同时执行多个进程,而操作系统中的多个线程也可以并行执行
D、多核处理器是将两个或更多的独立处理器封装在一起,集成在一个电路中
答案:B
嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。
嵌入式软件分类
设备驱动层
又称为板级支持包 BSP,包含了嵌入式系统中所有与硬件相关的代码,直接与硬件打交道,对硬件进行管理和控制,并为上层软件提供所需的驱动支持。
板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。
在嵌入式系统软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的 BSP和Linux的 BSP相对于某一 CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写( BSP的编程过程大多数是在某一个成型的 BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层 OS。
BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:
板级支持包(BSP,也称为硬件抽象层HAL)一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置等功能,它主要具有以下两个特点:
一般来说,BSP主要包括两个方面的内容:引导加载程序BootLoader和设备驱动程序。
引导加载程序
Bootloader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:
设备驱动程序
在一个嵌入式系统当中,操作系统是可能有也可能无的。但无论如何,设备驱动程序是必不可少的。所谓的设备驱动程序,就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口。
对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能:
使用环境的特点:
(1) 设备随时移动性。嵌入式数据库主要用在移动信息设备上,设备的位置经常随使用者一起移动。
移动设备或移动终端在使用的过程中,位置经常发生变化
(2) 网络频繁断接。同时也受到使用方式、电源、无线通信和网络条件等因素的影响。所以,一般并不持续保持网络连接,而是经常主动或被动地间歇性断接和连接。
(3) 网络条件多样化。由于移动信息设备位置的经常变化,导致它们与数据库服务器在不同的时间可能通过不同的网络系统连接,这些网络在带宽、通信代价、网络延迟和aos 等方面可能有所差异。
(4) 通信能力不对称。由于受到移动设备资的源限制,移动设备与服务器之首的网络通信能力是非对称的。移动设备的发送能力都非常有限,使得数据库服务器到移动设备的下行通信带宽和移动设备到数据库服务器之间的上行带宽相差很大
系统组成:
一个完整的EDBMS 由若干子系统组成,包括主数据库、同步服务器、嵌入式数据库和连接网络等几个子系统:
嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)高效的事务处理和数据的安全性等关键问题。
嵌入式操作系统(EOS,Embedded OperatingSystem)是指用于嵌入式系统的操作系统。
嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统C/OS-、嵌入式Linux、Windows Embedded、VxWorks等,以及应用在智能手机和平板电脑的 Android、i0s 等。
嵌入式操作系统的特点
嵌入式实时系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。
对嵌入式实时系统失效的判断,不仅依赖其运行结果的数值是否正确,也依赖提供结果是否及时。实时操作系统
实时操作系统(RTOS)的实时操作系统:
当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行。
因而,提供及时响应和高可靠性是其主要特点。
实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的:软实时则只要按照任务的优先级,尽可能快地完成操作即可。
实时操作系统的特征
因此,实际上来看,实时操作系统如同操作系统一样,就是一个后台的支撑程序,可以按照实时性的要求进行配置、裁剪等。其关注的重点在于任务完成的时间是否能够满足要求。、
例题
例题1:以下关于RTOS(实时操作系统)的叙述中,不正确的是()
A.RTOS不能针对硬件变化进行结构与功能上的配置及裁剪
B.RTOS可以根据应用环境的要求对内核进行裁剪和重配
C.RTOS的首要任务是调度一切可利用的资源来完成实时控制任务
D.RTOS实质上就是一个计算机资源管理程序,需要及时响应实时事件和中断
答案:A
以下描述中,()不是嵌入式操作系统的特点。
A.面向应用,可以进行裁剪和移植
B.用于特定领域,不需要支持多任务
C.可靠性高,无需人工干预独立运行,并处理各类事件和故障
D.要求编码体积小,能够在嵌入式系统的有效存储空间内运行
答案:B
一个典型的交叉平台开发环境,包含三个高度集成的部分:
宿主机和目标机
嵌入式软件开发不同于传统软件开发,其所使用的开发环境、工具都有特殊性,在嵌入式软件开发中,一般使用宿主机和目标机的模式进行系统开发,并且借助于开发工具进行目标开发。
宿主机是指普通 PC机中构建的开发环境,一般需要配置交叉编译器,借助于宿主机的环境,使用交叉编译器进行目标编译,代码生成,同时借助仿真器或者是网络进行目标机的程序调式。
目标机可以是嵌入式系统的实际运行环境,也可以是能够替代实际运行环境的仿真系统。
嵌入式软件开发方式一般是:在宿主机上建立开发环境,完成编码和交叉编译工作,然后在宿主机和目标机之间建立连接,将目标程序下载到目标机中进行交叉调试和运行。如下图:
交叉编译
嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。
由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
交叉调试
嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。
在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试器是一个单独运行着的进程它通过操作系统提供的调试接口来控制被调试的进程。
而在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
嵌入式软件的开发可以分为几个阶段:编码、交叉编译、交叉调试。各个阶段工具如下:
例题
以下关于嵌入式系统开发的叙述,正确的是()
A.宿主机与目标机之间只需要建立逻辑连接
B.宿主机与目标机之间只能采用串口通信方式
C.在宿主机上必须采用交叉编译器来生成目标机的可执行代码
D.调试器与被调试程序必须安装在同一台机器上
答案:C