Skip to main content

嵌入式

作草分茶About 14 min

嵌入式

嵌入式微处理器

冯诺依曼结构

传统计算机采用冯诺依曼结构,也叫做普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

冯诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据地址指向同一个存储器的不同物理位置。

采用单一的地址总线和数据总线,程序指令和数据的宽度相同。

处理器执行指令时,先从存储器中取出指令解码,再取才做书执行运算,是一种串行方式。

哈佛架构

哈佛架构是一种并行体系结构,主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。

与两个存储器相对应的是系统中的两套独立的地址总线和数据总线。

这种分离的程序总线和数据总线可允许在一个机器后期内同事获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了一倍。

分类

根据字长划分

一般把字长宽度是 4 位、8 位、16 位的称为嵌入式微控制器,32 位及以上的称为嵌入式微处理器。

按系统集成度划分

  1. 微处理器内部仅包含单纯的中央处理单元,称为一般用途微处理器;
  2. 将 CPU、ROM、RAM、及 IO 等部件集成到同一芯片上,称为单芯片微控制器;

按用途分类

嵌入式微控制器 MCU

典型代表是单片机。

微控制器的字长宽度在 16 位及以下,最大特点是单片化,体积小,功耗和成本低,可靠性高,片上外设资源比较丰富,适合控制,是嵌入式系统工业的主流。

嵌入式微处理器 MPU

嵌入式微处理器由计算机中的 CPU 演变而来。是字长宽度在 32 位及以上,具有较高的性能,价格偏高。

在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,取出其它冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的有点。

目前常见的有 ARM、MIPS、POWER PC 等。

嵌入式数字信号处理器 DSP

嵌入式数字信号处理器是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。采用哈佛结构、流水线处理、其处理速度比最快的 CPU 还要快 10-15 倍。在数字滤波、FFT、谱分析等各种仪器上 DSP 获得了大规模的应用。

嵌入式片上系统 SOC

嵌入式偏上系统是追求产品系统最大包容的集成器件。最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。是一个有专用目标的集成电路,其中包含了完整系统并有嵌入软件的全部内容。

多核处理器

多核指的是多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片(单个 CPU),能够直接插入单一的处理器插槽中。多核与多 CPU 相比,很好的降低了计算机系统的功耗和体积。在多核技术汇总,由操作系统软件进行调度,多进程、多线程并发都可以。

多核处理器工作卸掉实现方式:

  1. 对称多处理技术 SMP:将两颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源;
  2. 非对称处理技术 AMP:两颗处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的计算任务。

多核 CPU 的调度

全局队列调度

全局队列调度是指操作系统维护一个全局的任务等待队列,当系统中有一个 CPU 空闲时,操作系统就从全局任务等待队列中选取就绪任务开始执行,CPU 核心利用率高。

局部队列调度

局部队列调度是操作系统为每个 CPU 内核维护一个局部的任务等待队列的,当系统中有一个 CPU 内核空闲时,就从该核心的任务等待队列中选取适当的任务执行,优点是无序在多个 CPU 之间切换。

嵌入式软件

嵌入式软件是指应用在嵌入式计算机当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,如:

  1. 规模较小;
  2. 开发难度大;
  3. 实时性和可靠性要求高;
  4. 要求固话存储;

分类

系统软件

控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。

应用软件

嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特定的应用领域,如飞行控制软件、手机软件、地图等。

支撑软件

辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器等。

板级支持包 BSP

板级支持包是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为属于操作系统的一部分,主要是实现对操作系统的支持,为上层驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。

具体功能包括:

  1. 单板硬件初始化,主要是 CPU 的初始化,为整个软件系统提供底层硬件的支持;
  2. 为操作系统提供设备驱动程序和系统中断服务程序;
  3. 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境;
  4. 初始化操作系统,为操作系统的正常运行做好准备。

主要具有一下两个特点:

  1. 硬件相关性,因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间 的接口,BSP 需为操作系统提供操作和控制具体硬件的方法;
  2. 操作系统相关性,不同的操作系统具有各自的软件层次结构,因此不同操作系统具有特定的硬件接口形式;

一般来说,BSP 主要包括两个方面的内容:引导加载程序 BootLoader 和设备驱动程序。

Bootloader

Bootloader是联入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一股包括以下功能:

片级初始化

主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制奇存器、微处理器的核心工作模式及其局部总线模式等。片级初始化把
微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。

板级初始化

通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化 LED 显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含有软件和硬件在内的初始化过程。

加载内核(系统级初始化)

将操作系统和应用程序的映像从 Flash 存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。

设备驱动程序

在一个嵌入式系统当中,操作系统是可能有也可能无的。但无论如何,设备驱动程序是必不可少的。

所谓的设备驱动程序,就是一组库西数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口

对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备驱动程序都会具备以下的一些基本功能。

  • 硬件启动:在开机上电或系统重启的时候,对硬件进行初始化。
  • 硬件关闭:将硬件设置为关机状态。
  • 硬件停用:暂停使用这个硬件。
  • 硬件启用:重新启用这个硬件。
  • 读操作:从硬件中读取数据。
  • 写操作:往硬件中写入数据。

嵌入式系统的组成

一般嵌入式系统由嵌入式处理器相关支撑硬件嵌入式操作系统支撑软件以及应用软件组成。

嵌入式处理器

由于嵌入式系统一般是在恶劣的环境条件下工作,与一般处理器相比,嵌入式处理器应可抵抗恶劣环境的影响,比如高温、寒冷,电磁、加速度等环境因素。为适应恶劣环境,嵌入式处理器芯片除满足低功耗、体积小等需求外,根据不同环境需求,其工艺可分为民用、工业和军用等三个档次。

相关支撑硬件

相关支撑硬件是指除了入式处理器以外的构成系统的其他硬件,包括存储器、定时器、总线、IO 接口以及相关专用硬件。

嵌入式操作系统

嵌入式操作系统是指运行在嵌入式系统中的基础软件,主要用于管理计算机资源和应用软件。与通用操作系统不同,嵌入式操作系统应具备实时性、可剪裁性和安全性等特征。

支撑软件

支撑软件是指为应用软件开发与运行提供公共服务、软件开发、调试能力的软件,支撑软件的公共服务通常运行在操作系统之上,,以库的方式被应用软件所引用。

应用软件

应用软件是指为完成嵌入式系统的某一特定目标所开发的软件。

嵌入式系统应特性

  1. 专用性强。嵌入式系统面向特定应用需求,能够把通用 CPU 中许多由板卡完成的任务集成在芯片内
    部,从而有利于嵌入式系统的小型化。
  2. 技术融合。嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体
    应用相结合,是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
  3. 软硬一体软件为主 。软件是嵌入式系统的主体,有 IP 核。嵌入式系统的硬件和软件都可以高效地设
    计,量体裁衣,去除冗余,可以在同样的硅片面积上实现更高的性能。
  4. 比通用计算机资源少。由于嵌入式系统通常只完成少数几个任务。设计时考虑到其经济性,不能使
    用通用 CPU,这就意味着管理的资源少,成本低,结构更简单。
  5. 程序代码固化在非易失存储器中。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固
    化在存储器芯片或单片机本身中,而不是存在磁盘中。
  6. 需专门开发工具和环境。嵌入式系统本身不具备开发能力,即使设计完成以后,用户通常也不能对
    其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。
  7. 体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强
  8. 对安全性和可靠性的要求高

分层

  1. 硬件层;
  2. 抽象层;
  3. 操作系统层;
  4. 中间件层;
  5. 应用层;

嵌入式数据库系统 EDBMS

使用环境的特点

  1. 设备随时移动性;
  2. 网络频繁断接;
  3. 网络条件多样化;
  4. 通信能力不对称;

系统组成

一个完整的 EDBMS 由若干子系统组成,包括主数据库、同步服务器、嵌入式数据库和连接网络等几个子系统。

嵌入式移动数据库在实际应用中必须解决好数据的一致性、高效的事务处理和数据的安全性等关键问题。

嵌入式操作系统 EOS

  1. 微型化;
  2. 代码质量高;
  3. 专业化;
  4. 实时性强;
  5. 可裁剪可配置;

嵌入式实时操作系统

特征

  1. 高精度计时系统
  2. 多级中断机制
  3. 实时调度机制

嵌入式软件设计

一个典型的交叉平台开发环境,包含三个高度集成的部分:

  1. 运行在宿主机和目标机上的强有力的交叉开发工具和实用程序。
  2. 运行在目标机上的高性能、可裁剪的实时操作系统。
  3. 连接宿主机和目标机的多种通信方式,例如,以太网、USB、串口等。

交叉编译

嵌入式软件开发所采用的编泽为交叉编泽,所谓交叉编泽就是在一不伞台上生成可以在另一个平台上执行的代码。编泽的最主要的工作就在将程序转化成运行该程序的 CPU 所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的 CPU 需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同 CPU 的对应可执行二进制文件。嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。

交叉调试

嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行運信,调试器可!以控制,访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。