面向物联网的嵌入式系统开发:基于CC2530和STM32微处理器
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 嵌入式系统概述

随着计算机技术的飞速发展和嵌入式微处理器的出现,计算机应用出现了历史性的变化,并逐渐形成了计算机系统的两大分支:通用计算机系统和嵌入式计算机系统(简称嵌入式系统)。

嵌入式系统一词源于20世纪70、80年代之交的美国,早期还曾被称为嵌入式计算机系统或隐藏式计算机,随着半导体技术及微电子技术的快速发展,嵌入式系统得以风靡式发展,性能不断提高,以致出现一种观点,即嵌入式系统通常是基于32位微处理器设计的,往往带操作系统,本质上是瞄准高端领域和应用的。然而随着嵌入式系统应用的普及,这种高端应用系统和之前广泛存在的单片机系统间的本质联系,使嵌入式系统与单片机毫无疑问地联系在了一起。

1.1.1 嵌入式系统的定义

关于嵌入式系统的定义有很多,较通俗的定义是嵌入对象体系中的专用计算机系统。国际电气和电子工程师协会(IEEE)对嵌入式系统的定义是:嵌入式系统是控制、监视或者辅助设备、机器和车间运行的装置。该定义是从应用的角度出发的,强调嵌入式系统是一种完成特定功能的装置,该装置能够在没有人工干预的情况下独立地进行实时监测和控制。这种定义体现了嵌入式系统与通用计算机的不同的应用目的。

我国嵌入式系统定义为:嵌入式系统是以应用为中心,以计算机技术为基础,并且软/硬件可裁减,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

1.1.2 嵌入式系统的特点

嵌入式系统是先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物,这决定了它是技术密集、资金密集、知识高度分散、不断创新的集成系统。同时,嵌入式系统又是针对特定的应用需求而设计的专用计算机系统,这也决定了它必然有自己的特点。

不同嵌入式系统的具体特点会有所差异,但总体来说,嵌入式系统一般有如下特点:

(1)软/硬件资源有限。过去只在PC中出现的电路板和软件现在也被安装到复杂的嵌入式系统之中,这一说法现在只能算部分正确。

(2)功能专一、集成度高、可靠性高、功耗低。

(3)一般具有较长的生命周期,嵌入式系统通常与所嵌入的宿主系统(专用设备)具有相同的使用寿命。

(4)软件程序存储(固化)在存储芯片上,用户通常无法改变,常被称为固件。

(5)嵌入式系统本身无自主开发能力,二次开发需专用设备和开发环境(交叉编译)。

(6)嵌入式系统是先进的计算机技术、半导体技术、电子技术和各行业相结合的产物。

(7)嵌入式系统并非总是独立的设备,很多嵌入式系统并不是以独立形式存在的,而是作为某个更大型计算机系统的辅助系统。

(8)嵌入式系统通常都与真实物理环境相连,并且是激励系统。激励系统可看成一直处在某一状态,等待着输入信号,对于每一个输入信号,它们完成一些计算并产生输出及新的状态。

(9)大部分嵌入式系统都同时包含数字部分与模拟部分的混合系统。

另外,随着嵌入式微处理器性能的不断提高,高端嵌入式系统的应用方面出现了新的特点:

(1)与通用计算机系统的界限越来越模糊。随着嵌入式微处理器性能不断提高,一些嵌入式系统的功能也变得多而全。例如,智能手机、平板电脑和笔记本电脑在功能上越来越接近。

(2)网络功能(能力)已成为必然需求。早期的嵌入式系统一般以单机的形式存在,随着网络的发展,尤其是物联网、边缘计算等的出现,现在的嵌入式系统的网络功能已经不再是特别的需求,几乎成了一种必备的能力。

1.1.3 嵌入式系统的组成

嵌入式系统一般由硬件系统和软件系统两大部分组成。其中,硬件系统包括嵌入式微处理器、存储器、外设接口和必要的外围电路;软件系统包括嵌入式操作系统和应用软件。常见嵌入式系统的组成框图如图 1.1 所示。另外,由于被嵌入对象的体系结构、应用环境不同,因此嵌入式系统往往有不同的结构组成。

图1.1 常见的嵌入式系统的组成框图

1.硬件

嵌入式系统的硬件由嵌入式微处理器(简称微处理器)、存储器、外围电路及外设接口构成。

1)嵌入式处理器

微处理器是嵌入式系统硬件的核心,早期嵌入式系统的微处理器由(甚至包含几个芯片的)CPU来担任,而如今的嵌入式处理器一般是IC(集成电路)芯片形式,它也可以是ASIC(专用集成电路)或者SoC中的一个核,核是VLSI(超大规模集成电路)上功能电路的一部分。嵌入式系统处理器芯片有如下几种:

(1)微处理器:世界上第一个微处理器芯片就是为嵌入式服务的。可以说,微处理器的出现,造成了嵌入式系统设计的巨大变化。微处理器可以是单芯片CPU,也可以包含其他附加的单元(如高速缓存、浮点处理算术单元等)以加快指令处理的速度。

(2)微控制器:微控制器是集成有外设的微处理器,是具有CPU、存储器和其他一些硬件单元的集成芯片。因其单芯片即可组成一个完整意义上的计算机系统,常被称为单片微型计算机,即单片机。最早的单片机芯片是8031处理器,它和后来出现的8051系列是传统单片机系统的主体。在高端的MCU系统中ARM芯片则占有了很大比重。MCU可以成为独立的嵌入式设备,也可以作为嵌入式系统的一部分,是现代嵌入式系统工业的主流,尤其适用于具有片上程序存储器和设备的实时控制。

(3)数字信号处理器(DSP):也称为 DSP 处理器,可以简单地看成高速执行加减乘除算术运算的微芯片,因具有乘法累加器单元,特别适合进行数字信号处理运算(如数字滤波、谱分析等)。DSP的算术运算在硬件中实现,而不像通用处理器在软件中实现,因而其信号处理速度比通用微处理器快2~3倍甚至更多,主要用于嵌入式音频、视频及通信应用上。

(4)片上系统:近来,嵌入式系统正在被设计到单个硅片上,称为片上系统(SoC)。这是一种VLSI上的电子系统,学术上被定义为:将微处理器、IP(知识产权)核、存储器(或片外存储控制器接口)集成在单一芯片上,通常是客户定制的或是面向特定用途的标准产品。

(5)多处理器和多核处理器:有些嵌入式应用,如实时视频或多媒体应用等,即便是DSP也无法满足同时快速执行多项不同任务的要求,这时可能需要两个甚至多个协调同步运行的处理器。另外一种提高嵌入式系统性能的方式是提高处理器的主频,而主频的提高是有限度的,而且过高的主频将导致功耗的攀升,因此采用多个相对低频的处理器配合工作是提升处理器性能,同时降低功耗的有效方式。当系统中的多个处理器均以IP核的形式存在于同一个芯片中时,就可构成多核处理器。目前,多核处理器已成功应用到多个领域。随着应用需求的不断提高,多核架构技术在未来一段时间内仍然是嵌入式系统的重要技术。图1.2所示为多处理器和多核处理器的不同系统布局。

图1.2 多处理器与多核处理器的不同系统布局

2)外设

外设包括存储器、I/O接口及定时器等辅助设备。随着芯片集成度的提高,一些外设被集成到处理器芯片上,称为片内(上)外设;反之则被称为片外外设。尽管 MCU 片上已经包含了外设,但对于需要更多 I/O 端口和更大存储能力的大型系统来说,还必须连接额外的I/O端口和存储器。

2.软件

从复杂程度上看,嵌入式软件可以分成有操作系统和无操作系统两大类。对于高端嵌入式应用,多任务成为基本需求,操作系统作为协调各任务的关键,是必不可少的;此时,嵌入式软件中除了要使用C等高级语言,往往还会用到C++、Java等面向对象类的高级编程语言。

嵌入式软件由应用程序、API、嵌入式操作系统以及BSP(板级支持包)组成,必须能解决一些在台式机或大型计算机软件中不存在的问题:因经常要同时完成若干任务,所以必须能及时响应外部事件,能在无人干预的条件下应对所有异常的情况。

1.1.4 嵌入式操作系统

如图1.3所示,操作系统可以分为多种。

图1.3 操作系统的分类

1.早期的嵌入式操作系统

早期的嵌入式系统大多采用8位或16位单片机作为系统核心控制器,所有硬件资源的管理工作都由程序员自己编写程序来完成,不需要采用专门的操作系统。由于技术的进步,嵌入式系统的规模越来越大、功能越来越强、软件越来越复杂,因此嵌入式操作系统在嵌入式系统中得到了广泛的应用,尤其是在功能复杂、系统庞大的应用中,嵌入式操作系统的作用显得越来越重要。

在嵌入式操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程的思想,将整个程序分解为多个任务模块,每个任务模块的调试、修改几乎不影响其他模块。利用嵌入式操作系统提供的多任务调试环境,可大大提高系统软件的开发效率、降低开发成本、缩短开发周期。在开发应用软件时,程序员不是直接面对嵌入式硬件设备,而是采用一些嵌入式软件开发环境,在操作系统的基础上编写程序的。

嵌入式操作系统本身是可以裁减的,嵌入式系统的外设、相关应用也可以灵活配置,所开发的应用软件可以在不同的应用环境、不同的微处理器芯片之间移植,软件构件可复用,有利于系统的扩展和移植。相对于一般的操作系统而言,嵌入式操作系统仅指操作系统的内核(或者微内核),其他的诸如窗口系统界面或通信协议等模块,可以另外选择。

2.实时嵌入式操作系统

实时嵌入式操作系统是指当发生外界事件或产生数据时,能够接收并以足够快的速度进行处理,其处理结果又能在规定的时间内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调、一致运行的操作系统。因而,提供及时响应和高可靠性是实时操作系统的主要特点。实时嵌入式操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时需要保证的;软实时则只要按照任务的优先级别,尽可能快地完成操作即可。

3.嵌入式操作系统的发展现状

对于实时嵌入式操作系统来说,其最主要的特点就是满足对时间的限制和要求,能够在确定的时间内完成具体的任务。在工程项目中,往往选用实时嵌入式操作系统来统一管理软/硬件资源,使程序设计尽量变得简单,各个子模块的耦合性尽量降低。目前,人们使用得比较多的几个实时嵌入式操作系统有VxWorks、Linux、PSOSystem、Nucleus和μC/OS-II等。

VxWorks是于1983年设计开发的一款实时嵌入式操作系统,这是一个高效的内核,具备很好的实时性能,开发环境的界面也比较友好。VxWorks在对实时性要求极高的领域应用得比较多,如航天航空、军事通信等。

Linux操作系统是实时嵌入式操作系统里面一个重要的分支,其最大的特点是源代码公开并且遵循GPL协议,在近几年也成了研究的热点,其应用范围比较广阔。自从Linux在中国普及以来,其用户数量也越来越大。嵌入式Linux和普通Linux并无本质的差别,实时调度策略、硬件中断和异常执行部分的应用难度都相对较大。目前常见的实时嵌入式Linux操作系统有RT-Linux、μCLinux、国产红旗Linux等。

μC/OS-II具备了一个实时内核应该具备的所有核心功能,编译后的代码只有几KB,用户可以廉价地使用μC/OS-II开发商业产品或进行教学研究,也可以根据自己的硬件性能优化其源代码。