1 引 言
随着大数据、AI 技术等高新科技的快速发展,嵌入式系统已经广泛应用在科学研究、军事技术、工程设计、商业文化艺术、娱乐业、日常生活等方方面面。嵌入式系统基于计算机技术,以应用需求为中心,可以定制软件和硬件。它适用于对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。嵌入式系统是一个复杂的系统,包括硬件与软件两大部分,硬件是以处理器为核心器件,再根据具体的应用需求,选择合适的外围设备,通常核心器件的选型基本决定了整个系统的软硬件架构。软件部分则包括开发环境、驱动程序、操作系统、应用程序等部分。整个嵌入式系统需要软硬件协同配合,共同完成具体的应用功能。
2 嵌入式系统硬件平台开发
嵌入式系统硬件平台一般包括处理器及外围设备两部分。目前应用于嵌入式系统的处理器有很多种,其中基于ARM 架构的处理器占主导地位。ARM 公司提供ARM 架构的IP 核,主要包括Classic系列和Cortex 系列。其产品系列如图1 所示。
图1 ARM 架构系列产品
各大厂家在授权付费使用ARM IP 核的基础上也研发各自的芯片,即嵌入式微控制器。目前主流的嵌入式微控制器厂商有ST、Microchip(Atmel)、TI、NXP(Freescale)、ST、SAMSUNG 等。在很大程度上,选择嵌入式开发硬件平台就等同于选择嵌入式微控制器。系统中使用哪种微控制器,取决于应用领域、用户需求、成本、功耗、开发难度等因素。
确定要使用的嵌入式处理器之后,应根据系统需求确定外围设备的选型。系统外围设备的选择因素包括:电源供电系统、调试下载接口、外围时钟电路选择、是否需要外围储存器扩展、是否需要通信接口的收发器、模拟模块的选择、其他功能模块等。
3 软件平台开发
3.1 集成开发环境
嵌入式系统开发之前首先要选择合适的开发工具,要综合考虑开发进度和开发成本等因素。一套完整的集成开发环境(IDE)需要包括编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库。目前主流的几款IDE 包括:
(1) ADS
ADS 是ARM 公司的集成开发环境软件,功能强大,包括:仿真器、C 编译器、实时调试器、应用函数库。ADS 不仅提供软件模拟仿真功能,而且提供强大的实时调试跟踪功能。ADS 支持的硬件调试器是Multi-ICE 仿真器。
(2) IAR
IAR 是由IAR Systems 公司开发的集成开发环境。与其他ARM 开发工具相比,其最大特点是简单易操作。IAR 包含完整的软件仿真程序,用户无需任何硬件支持,可以方便地仿真各种ARM 内核。
(3) KEIL
KEIL 是Keil Software 公司出品的集成开发环境,除了支持ARM 系列处理器以外,还支持51 系列单片机等,是一款通用的开发工具。除一般IDE 功能外,它还可帮助用户准确调试ARM 器件的片内外围功能,并支持Philips、Samsung、Atmel、Analog Devices、Sharp、ST 等众多厂商的ARM 微控制器。
(4) GNU
GNU开发工具最重要特征是它的操作系统和开发工具是免费的,均可以从互联网上获得所有开发工具及源代码。GNU 包括Linux 操作系统、编译器外、调试工具、二进制转换工具。GNU 开发工具的主要缺点是采用命令行方法的方法进行编译链接等操作,这就增加了用户的操作复杂性及难度。但其同时也为用户提供了更大的灵活性,有助于用户更好了解系统设计的基础与细节。
(5) RVDS
RVDS 是ARM 推出的新一代ARM 集成开发工具,其最显著的功能是支持所有ARM 系列处理器,并与许多第三方实时操作系统和工具供应商合作,很大程度上简化了开发流程。
3.2 驱动程序
驱动程序是通过软件控制硬件工作的代码。硬件与软件之间连接的桥梁是寄存器,软件工程师通过阅读芯片的数据手册,操作具体的寄存器控制硬件工作。通常对于ARM 处理器,各大IC 厂家在产品发布时,会将驱动程序开发好,以API 函数库的形式提供给芯片使用者。用户可直接调用封装好的API 函数完成芯片的控制,因此可大大降低开发的难度及周期。对于有某些特殊应用需要的使用者,也可以自行修改驱动代码,以达到例如缩短软件运行时间等特殊目的。
3.3 操作系统
目前应用于ARM 嵌入式开发的实时操作系统有很多,最主流的是VxWorks、μClinux、μC/OS 和eCos 等四种,各具有不同的特点及应用领域。
VxWorks 是美国Wind River 公司开发的一种嵌入式操作系统[6],也是占有市场份额较多的一款嵌入式操作系统。VxWorks 由400 多个独立的目标模块组成,具有灵活的可配置性。用户可以根据自身需求选择合适的模块配置和定制系统,甚至有的核心代码最小可以缩小到8kB 左右。VxWorks 的可配置性也保证了更高的安全性和可靠性,因此被广泛应用于航天航空等对实时性和可靠性要求较高的领域。在外太空探索领域,VxWorks 操作系统一直是NASA 的最爱。
μC/OS 是一款小型的、开源的、抢占式实时操作系统,提供多任务管理和调度、任务之间的同步和通信、内存管理、时间管理、中断服务等功能。该系统对RAM 和ROM 的大小要求比较小,且简单易学,特别适合于嵌入式系统初学入门者,对于ARM Cortex-M 系列的处理器,通常配合μC/OS 实时操作系统,用于多任务处理的应用场景。
μClinux[8]虽然是标准Linux 的缩小版,但是依然继承了Linux 操作系统的主要功能,只是减少了对MMU 内存管理单元的支持,更适合于没有MMU单元的ARM 内核。由于μClinux 缺少对MMU 的支持,因此用户在使用时需要掌握一定的技巧。μClinux主要适用于与网络功能相关的应用,如Cisco 公司的2500/3000/4000 路由器,均是基于μClinux 操作系统开发的。
eCos 嵌入式操作系统,最大的特点是灵活、可配置、模块化设计。其核心代码由一些小组件构成,提供了大量的配置选项,以满足不同的应用需求。该系统主要应用于一些工业级及商业级对成本比较敏感的应用场景中,例如消费电子领域。
3.4 应用软件程序
应用软件程序是嵌入式系统功能的软件代码实现。对于简单的应用需求,通常不需要操作系统的支持;对于需要多任务处理的复杂应用需求,则需要选择一款合适的操作系统进行多任务的并行处理。
4 结 束 语
嵌入式开发已从传统的单机,板级和串行通信转变为多机、分布式计算和网络通信。因此,除了考虑开发技术之外,还必须考虑实时嵌入式系统的改进或升级技术,实时开放技术,实时组合技术和实时软件工程技术。嵌入式系统的性能验证技术,以及安全技术、容错技术、可靠性形式验证技术、质量保证技术和测试认证技术也非常重要,还应在后续研究中持续关注。