嵌入式系统是硬件与软件结合而构成的一个专门的计算装置,完成特定的功能或任务。它是一个大系统或重大电子设备中的一部分,工作在一个与外界发生交互并受到时间约束的环境中,在没有人干预的情况下进行实时控制。
目前,嵌入式技术在嵌入式应用中占主导地位,主要涉及三种技术:
嵌入式系统设计即软件与硬件相协同验证技术;
与基于UML的实时软件、实时操作系统应用开发等密切相关的嵌入式软件开发技术;
目前嵌入式应用亟待解决的嵌入式软件测试技术。
上述工具的灵活应用为嵌入式软件开发提供了完整的解决方案。但我国目前嵌入式应用的基础和水平还达不到这个要求,国内自主研发的产品还很少,甚至还是空白。因此,无论是对嵌入式软件开发人员,还是对国内厂商来说,任重道远。
系统设计:应用要灵活
嵌入式系统的主要工作模式是响应外部事件。它在软件控制下通过硬件来高速地获取数据,并进行处理,而后产生响应动作。而实时特征是嵌入式系统的主要特征,并根据截止时间的要求,可将实时分为硬实时和软实时。
硬件/软件协同技术 嵌入式系统的设计与当前的硬件所能提供的支持及软件技术的发展紧密相连。应用先进的硬件设计和开发技术,我们可以获得所需的性能。另外,软件的设计离不开硬件的支持,高性能、多功能的硬件允许我们在软件开发和设计上采用好的方法,应用好的语言,使用好的工具。
实时理论概念 嵌入式系统的软件设计与一般的软件设计有很大的不同,它涉及到更多的计算机理论和基于这些理论的算法以及有关的模型技术。实时设计在概念上除了通常的软件设计概念外,有限状态机、并发任务等概念对于实时嵌入式系统的设计相当重要。
实时设计表示 实时嵌入式应用的多样性,是指实时嵌入式应用的不同,所涉及到的问题也不同,所采用的设计方法和设计手段也不同,但从设计角度来决定实时设计中仍要涉及一些具体问题。
实时构件 通过构件组装软件这种方式,可以大大提高软件的开发效率,保证软件的质量。特别是对于实时嵌入式软件,涉及到大量的和时间相关的算法,如果将它们模块化或构件化,并按照特定的模式/定式和框架在软件开发中重用它们,其意义不言而喻。另外,基于构件进行软件开发,还有利于软件开发的自动化。
设计定式和框架 两者都是通过收集成功的软件开发策略来推动重用,其主要差别表现为框架的重点是在具体的设计、算法及应用特定编程语言进行实现的重用上,而定式的重点则是放在抽象设计和软件小型结构的重用上。显然,应用设计定式和框架技术,能够改进软件质量,缩短软件开发时间,也有利于软件开发的自动化。
软件开发:实时是关键
嵌入式应用软件典型的开发方式是“宿主机/目标机”方式,首先利用宿主机上丰富的资源、良好的开发环境开发和仿真调试目标机上的软件,然后通过串口、网络或其它接口将交叉编译生成的目标代码传输并装载到目标机上,并用交叉调试器在监控程序或实时操作系统的支持下进行运行调试。最后,目标机在特定的环境下运行。
实时编程及最小编程环境 运用软件设计方法进行实时嵌入式软件的设计,应用编程语言完成实时嵌入式软件的实现。而应用高级语言或实时编程语言开发实时嵌入式软件,最基本的要求是要有一个最小编程环境,如交叉编译、交叉调试器、宿主机和目标机间的通信工具、目标代码装载工具、目标机内驻监控程序或实时操作系统等。
实时操作系统 实时操作系统是指能进行实时处理的操作系统,它分为两类:一类是专为实时应用设计的专用操作系统,其核心是实时内核;另一类则是在通用操作系统的基础上增加实时功能,如实时Linux、实时UNIX等,其扩展部分是实时执行程序。
实时数据库 在实时数据库中,除了通常对逻辑要求一致以外,还有事务处理完成时间的约束及数据访问和更新时间的约束等。为了满足时间约束和结果可确定的基本需求,开发者不仅要对通常的调度方法和事物管理进行重新设计,而且还要提出在通常数据库系统中没有考虑到或者在实时系统中要增加的新概念,以及对应的新技术。
实时中间件 提高软件生产率和软件质量的需求激发了人们使用中间件的愿望。中间件位于应用和底层之间。它能够使系统设计人员从部件位置、编程语言、OS平台通信协议和互连以及硬件依赖中解放出来,从而大大地简化了软件的开发。
目前,分布式实时系统开发趋势是:编程采用可重用部件,对整个分布式应用部件采用远程方法调用,并在异构环境下尽量定义标准的软件底层基础,在系统中确保QoS的需求。
软件测试:把好开发关
软件测试在整个软件开发过程中处于非常重要的地位,其测试费用占项目总费用的25%以上,对于嵌入式软件则花费更大。嵌入式应用软件的测试同人们通常使用的传统的软件测试相比有较大的差别,除了要考虑和运用传统的测试技术外,还要考虑与时间和硬件密切相关的测试技术运用,如:对外部事件响应的测试问题。
软件分析技术 实时嵌入式系统最大的特点是具有一组动态属性,即中断处理和上下文切换、响应时间、数据传输率和吞吐量、资源分配和优先级处理、任务同步和任务通信等。所有这些性能属性可以很容易地说清楚,但要测试或验证它们(特别是时间确认)是很困难的。因此,对实时嵌入式系统进行分析需要建模和仿真,以及对数学工具的支持。
软件测试技术 测试技术,指的是软件测试的专门途径,以及提供能够更加有效地运用这些途径的特定技术。这些技术可分别用在软件开发过程中的不同阶段,如:开发方的内部测试、第三方的验证和确认测试和维护中的修改和升级测试等。
测试策略主要针对软件测试里的诸多问题而言。对于测试,首先要建立一个好且实用的测试文档标准和开发方及测试方的协作关系,然后明确测试需求和目的及测试过程,制订测试计划,最后进行测试的开发、实施、分析和报告。
软件调试技术 软件调试是在软件测试之后进行,用以定位和排除错误。对于嵌入式应用,无论是测试还是调试,有效的方法仍是借助硬件仿真的手段辅助软件来进行测试和调试。
仿真器一般是由硬件和软件构成。硬件提供低级的监控、控制和保护功能,而在仿真器里的软件提供状态和控制功能以及与宿主机的通信。人们通过调试器用户接口同仿真器的硬件和软件打交道来控制和监督微处理器的工作,从而定位或发现软件的错误。
实际上,仿真器既可用来发现软件错误,也可用来查找硬件错误。这就是仿真器和调试器的主要区别。
摘自《中国计算机报》