该文主要讨论在嵌入式系统开发中,开发人员如何考虑和选择嵌入式处理器、嵌入式操作系统、调试器、仿真器等组成要素;同时,权衡设计与购买的利弊,在系统灵活性、速度、成本、计划和可用工具之间做出权衡。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式系统的应用领域。
嵌入式系统包含硬件和软件两部分:硬件架构上以嵌入式处理器为中心,配置存储器、I/O设备、通信模块等必要的外设;软件部分以软件开发平台为核心,向上提供应用编程接口(API),向下屏蔽具体硬件特性的板级支持包BSP。嵌入式系统中,软件和硬件紧密配合,协调工作,共同完成系统预定的功能。
对于不同的市场应用类型,嵌入式系统开发中的嵌入式处理器、实时操作系统、仿真器、调试器等要素的选择是至关重要的。在进行嵌入式系统开发时,如何全面考虑各开发要素并进行选择,是一个必须考虑的课题。本文描述了嵌入式系统开发的关键特性,并探讨在选择或开发硬件和软件组件的基础上开发高效嵌入式系统的解决方案。
1 嵌入式系统特性
嵌入式系统的设计挑战是使嵌入式系统的独特性能与设备的特殊约束条件相一致。以下是一些嵌入式系统的重要特性:
1)特殊应用系统-嵌入式系统不同于通用处理器,它针对特殊应用进行了优化。
2)反应性系统-反应性计算的意思是系统(主要是软件部分)根据传感器信息对环境作出响应,并利用激励器控制环境,同时系统速度能与环境速度同步。
3)分布式-嵌入式系统的一般特征是多个通信进程在多个通过通信链路链接的CPU或ASIC上运行。
4)异类性-不同的嵌入式系统一般具有不同的结构,以便在处理严格设计约束的嵌入式系统时能够提供更好的设计便利性。
5)苛刻环境-许多嵌入式系统并不工作在受控的环境中,因此它们必须能够经受过热、振动、冲击、电源波动和其它恶劣的物理环境条件的考验。
6)系统安全性和可靠性-由于嵌入式系统复杂度和运算量的不断增长,需要更多地考虑系统安全因素。
7)小型化、重量轻-为了达到便携目的,许多嵌入式系统的重量必须设计得很轻。
8)成本敏感性-不同的嵌入式系统对成本的敏感性有很大的不同。
2 实时系统特性
实时系统要求在外部环境指定的时间间隔内对来自环境的激励信号作出响应(包括物理时间的过渡)。从输入时间到输出时间的延迟必须足够小,以满足可以接受的时间值。通常实时系统需要对环境作出连续及时的响应。
计算的正确性不仅依赖于结果,而且取决于输出发生的时间。一个实时系统必须满足有限响应时间约束条件,否则会产生严重的后果。如果后果是性能的劣化而不是故障,那么这种系统可以看作是一个软实时系统。如果后果是系统发生故障,那么这种系统就是一种硬实时系统。
实时系统有反应式和嵌入式两种类型。反应式实时系统会与环境发生连续的互作用,而嵌入式实时系统主要用于控制大型系统中安装的特殊硬件。
3 嵌入式处理器选择
在嵌入式系统的硬件设备中,嵌入处理器是整个系统的核心部件,其性能的好坏直接决定整个系统的运行效果。
嵌入式系统开发面向具体应用,不同领域的应用市场需要不同款式和性能指标的处理器来开发,于是在嵌入式处理器市场中,中低端的4位、8位和16位处理器依然存在,高性能的32位处理器也有很多产品。随着超大规模集成电路技术和微电子技术发展,包含嵌入式处理器以及部分外围电路的微控制器产品也进入市场,片上系统SoC(System on Chip)产品也开始出现。这些产品的上市,不仅丰富了嵌入式处理器产品,而且也更加方便了工程技术人员进行嵌入式系统的技术开发和扩大嵌入式产品的应用领域。
嵌入式处理器选择的基本原则是满足具体功能性和非功能性指标需求的、市场应用反应良好的、硬件配置最少的嵌入式处理器。如简单的智能仪器仪表设计考虑使用4位或者8位低档单片机8051;和数字信号处理密切相关的选用TI公司的TMX320x系列的DSP(数字信号处理)芯片;如果产品偏重于通信功能,考虑Motorola公司的嵌入式处理器68K系列;如果产品功能比较齐全,可选用嵌入式处理器领域的后起之秀ARM公司的高性能嵌入式处理器ARM芯片系列等。
4 实时操作系统选择
要使整个系统有限的硬件资源充分利用起来,还需要(嵌入式)实时操作系统RTOS(Real Time Operating System)的软件支持。
RTOS重点追求的是实时性、可确定性、可靠性,当然也包括有限资源的管理。一般RTOS内核都很小,在几KB~十几KB之间。流行的RTOS基本上都支持基于优先级的抢占式调度策略和时间片轮转,具有微内核结构,有标准组件可供选用,支持虚拟存储技术和存储保护机制。
由于具体嵌入式应用的功能需求差异以及不同RTOS间不同的性能指标,RTOS的选择有三种方案:一是根据应用需要和公司技术实力,考虑自主开发研究(国内手机厂商宁波波导公司部分款式的手机操作系统就是自主开发的);二是充分考虑系统需求和流行RTOS的性能指标及性价比选择商用RTOS,如WinCE、VxWorks等;三是考虑嵌入式Linux(RT_Linux),RT_Linux是开放源代码的免费自由软件,互联网技术论坛较多,具备较好的裁减性以支持不同的应用范畴。
在众多的实时操作系统中,选择时重点考虑的是它们的性能评价指标,主要包括调度算法、RTOS本身内存开销、RTOS内存管理模式、最大中断禁止时间和最大任务切换时间。当然,也包括RTOS的购买成本和提供的技术支持等相关因素。针对实时性要求较高的应用,需要重点考虑RTOS的最大中断禁止时间和最大任务切换时间。这两个参数越小越好。减小这两个参数值,除了选用较高工作主频的嵌入式处理器外,还和RTOS本身任务调度和中断处理机制密切相关。
选择RTOS时,通常还要考虑系统功能方面支持何种处理器硬件平台,何种API,是否支持核心态用户态、是否支持内存管理单元MMU、可移植性、调试支持、标准支持等。如果开发网络应用,还需要考虑该RTOS是否支持TCP/IP的网络组件和I/O服务等。如果开发游戏和娱乐市场,要着重研究该RTOS对多媒体的支持能力。市场应用需求的多样性,使得RTOS本身应该支持用户自定制能力,根据应用需要在微内核的基础上选用标准组件。
5 仿真器和调试器的选择
调试是嵌入式系统开发过程的重要环节。嵌入式系统调试时,主机上运行的集成开发调试工具(调试器)通过仿真器和目标机相连。仿真器处理宿主机和目标机之间所有的通信,这个通信口可以是串口、并行口或者高速以太网接口。
嵌入式系统开发调试方法有快速原型仿真法和实时在线调试法。快速原型仿真法用于硬件设备尚未完成时,直接在宿主机上对应用程序运行进行仿真分析。在此过程中系统不直接和硬件打交道,由开发调试软件内部某一特定软件模块模拟硬件CPU系统执行过程,并可同时将仿真异常反馈给开发者进行错误定位和修改。实时在线调试法在具体的目标机平台上调试应用程序,系统在调试状态下的执行情况和实际运行模式完全一样,这种方式更有利于开发者实时对系统硬件和软件故障进行定位和修改,提高产品开发速度。
选用的调试器是运行在主机上的集成开发环境,一般需要集编辑、汇编、编译、链接和调试环境于一体,支持低级汇编语言、C和C++语言,基于友好的图形用户界面(GUI),支持用户观察或修改嵌入式处理器的寄存器和存储器配置、数据变量的类型和数值,堆栈和寄存器的使用,支持程序断点设置,单步、断点或者全速运行等特性。
应用需求的多样性导致市场上仿真器和调试器的提供商也较多,Windriver公司的Tornado是一个很好的开发调试工具。根据实践经验,一般配套选择规模较大、信誉较好公司的仿真器和调试器,虽然价格偏高,但是这些公司技术实力强,售后服务好,调试器和仿真器开发结合紧密。如果在开发调试过程遇到技术障碍,可以通过电话或者电子邮件方式及时获取技术支持。如选用ARM系列的嵌入式处理器时,可以购买Multi-ICE仿真器,并附加ARM250集成开发调试环境等。
6 设计或购买
是自己设计还是购买成品呢?如果有可能不重新设计,价格也比较合理的话,购买要比自己开发更有利。由于嵌入式系统预算的缩减、实时操作系统(RTOS)和TCP/IP堆栈等商用技术的改进、嵌入式系统要求的扩展,采用商业性现成(COTS)技术正变得越来越普遍。采用COTS技术能够缩短开发周期中编码、调试、单元测试和代码检查阶段的时间。
然而,做出购买而非设计的决定会改变一个组织的基础开发流程。一个组织希望实现的新业务有:供应商调研和评估、产品评估以及实时的供应商交流与关系建立。产品开发的其它活动不会取消,但会作出一些改变。这些变化包括更关注如何将系统硬件与软件更好地组合在一起,而不再把重点放在模块自己内部的运作上。另外必须更侧重于兼容性、可配置性和可集成性等结构上的问题。
必须很好的理解和高效地管理由于决定采用“购买”而非“设计创建”方式所导致的结果。首先,自然是对供应商提出产品要求、产品可靠性、计划和产品文档等依赖请求。这种情况下产品要求中的灵活性会打些折扣。购买商用产品意味着接受现有的产品要求,但这种要求也许不能完美地匹配自身产品的要求,这就需要设计人员把这种缺点与COTS技术提供的成本与上市时间优势作一个理智的权衡。 因此重要的是最终用户与技术人员必须参与COTS供应商的选择,考虑的重点要放在业务需求上而非技术本身。性价比分析所要考虑的因素应包括易学性、易用性、供应商名声和长期稳定性、许可方式和培训。所有与性能有关的声明必须尽可能采用内部或外部基准或演示来到得有效性认证。为了避免可能出现的偏差,评估标准应该在收到供应商建议前就制定好。选择供应商的主要工作包括研究和理解技术标准和相当的文件、采用类似建议请求(RFP)的标准模式征求供应商的建议、对供应商建议进行评估和排序、选择供应商并签署合同。
除了评估技术外,还应对供应商本身进行评审。要充分了解供应商开业时间的长短、供应商的背景和名声、供应商的其它用户对它的评价和意见、供应商人力资源的投入和对你的计划或项目的支持情况,以及供应商对你业务和要求的理解程度,甚至对未来项目的承诺。以前软件团队认为软件开发方案遵循类似于创建架构的特定模式。提供符合一般模式的抽象方法能够使软件团队定制符合他们特殊要求的方案,同时遵循被前人证明是高效和正确的模式。
嵌入式系统供应商已经认识到需要通过提供软件组件和类似于设计模式的框架来加快软件开发进程。在DSP领域,供应商向DSP设计工程师提供包括参考框架(RF)在内的上百个以DSP为核心的软件组件用于产品和系统开发。设计完好的参考框架能够在设备开发的早期阶段让设计人员快速入门。RF内含方便易用并且适合多种应用的源代码。由此可以取消许多早期的低层设计决策,使开发人员能有更多的时间用在真正显示产品特色的代码开发上。设计人员可以选择能够最大程度满足他们系统需要的专业RF,然后集成适配的算法(可以是其它供应商出售的DSP COTS算法,或供应商自己的算法)生成适合各种终端设备的特殊应用,如宽带、语音、视频图像、生物测量和无线设施。这些RF提供百分之百的C语言源码,并且没有版税要求。
7 小结
显然开发嵌入式实时系统是一个相当复杂的过程,本文阐述了在嵌入式系统开发中嵌入式处理器、嵌入式操作系统、调试器、仿真器等组成要素的选择原则,同时启发开发人员在设计与购买时的利弊关系,要时刻在系统灵活性、速度、成本、计划和可用工具之间做出权衡,并充分考虑各个供应商提供长期可靠支持的可能性。