1.1.3 嵌入式软件及开发环境
1.嵌入式软件特点
(1)独特实用性
嵌入式软件与外部硬件和设备联系紧密,根据应用需求定向开发,面向产业,面向市场,每种具体的嵌入式软件都有各自独特的应用环境和实用价值。
(2)灵活实用性
嵌入式软件作为嵌入式系统中的模块化软件十分灵活,配置上极其优化,对系统整体继承性较小,升级更新非常方便。
(3)软件代码精简
由于嵌入式系统本身的有限存储空间,以及低成本、低功耗等限制,使嵌入式软件相比其他大型机软件具有更加精简、效率更高的特点。
(4)高可靠性稳定性
嵌入式系统的应用领域如汽车、工业控制、航空、航天等对软硬件的可靠性稳定性要求很高,因此嵌入式软件需要具有高可靠性、高稳定性,以及完备的错误处理故障恢复等功能。
2.嵌入式软件分类
(1)嵌入式系统软件
嵌入式系统软件是用于整体系统控制及管理的软件资源,包括硬件抽象层(Hardware Abstraction Layer,HAL)、板级支持包(Board level Support Package,BSP)、设备驱动程序、嵌入式操作系统及中间件等。
(2)嵌入式应用软件
作为嵌入式系统的上层软件,嵌入式应用软件主要负责与用户交互,面向特定的应用,如音视频播放器、电子地图、通信社交、环境温湿度采集、飞行控制等软件。应用软件通过应用程序接口(Application Programming Interface,API)与底层操作系统进行交互。
(3)嵌入式支撑软件
嵌入式支撑软件主要是辅助嵌入式软件开发的工具软件,如在线仿真、交叉编译器、程序模拟器等工具软件。
3.嵌入式操作系统
(1)嵌入式操作系统特点
1)可装卸性。具有开放性、可伸缩性的体系结构。
2)强实时性。嵌入式操作系统(Embedded Operating System,EOS)实时性一般较强,可用于各种设备控制中。
3)统一的接口。可提供各种设备驱动接口。
4)友好的交互性。操作简单、方便、提供友好的图形用户接口(Graphical User Interface,GUI),图形界面追求易学易用。
5)强大的网络功能。支持TCP/IP及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。
6)强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多的干预,这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务。
7)固化代码。在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,各种内存文件系统被广泛使用。
8)良好的移植性。为了适应多种多样的硬件平台,嵌入式操作系统可在不做大量修改的情况下稳定地运行于不同的平台。
(2)常见的嵌入式操作系统
常见的嵌入式操作系统有μC/OS-II、eCos、Windows CE、VxWorks、pSOS、QNX、Palm OS以及嵌入式Linux等。
(3)嵌入式软件开发环境
1)常见集成开发环境和工具。常见的嵌入式集成开发环境和工具包括GNU工具链、ARM Developer Suite、WindRiver Tornado、Microsoft Embedded Visual C++等。
2)嵌入式交叉开发环境。嵌入式系统通常是一个资源受限的系统,直接在嵌入式系统的硬件平台上编写软件比较困难,因此,需要一个交叉开发环境(Cross Development Environment),如图1-3所示。所谓交叉开发是指在通用计算机上编辑、编译程序,生成目标平台上可以运行的二进制代码格式指令,最后下载到目标平台上运行调试的开发方式。即宿主机-目标机开发方式。
图1-3 嵌入式交叉开发环境
3)嵌入式调试手段。嵌入式调试一般分为硬件调试及软件调试,硬件调试一般包括逻辑故障排除、元器件故障排除、电源故障排除;软件调试一般包括源程序模拟器、ROM监控器、在线仿真器及在线调试器等手段。