|
发展中的嵌入式系统软件开发
从本世纪70年代初第一个微处理器出现,嵌入式系统已经有25年的历史了。它是一门成熟的技术。但是,"成熟"并不意味着"停滞"或者"令人乏味"。嵌入式系统软件开发更是任重而道远。
微处理器技术的发展
早期的微处理器都是4位和8位的设备。由于制造技术变得越来越复杂,集成的8位微控制器开始出现,并且16位微处理器也开始用于更复杂的嵌入式系统中。32位结构的设备和高度集成的微控制器逐渐占领了高端应用的市场。第一个32位的设备是全RISC结构,逐渐增加的RISC芯片将提供更高的性能。
下图表示了嵌入式微处理器的发展历史,以时间坐标描述,从8位微处理器开始,发展到了今天的32位微处理器。
图1 微处理器的发展过程功能更强大的微处理器并没有取代早期的微处理器,而是给设计人员提供更广的选择
范围。嵌入式系统设计人员有更大的选择范围,可以根据功能、特点、可用性和价格,选择合适的微处理器产品。
但是,随着可供选择设备的增加,影响软件开发人员的因素却不断增加。很明显,各种相应的编程工具必须支持这些处理器,而每种设备的支持工具都可能存在不一致的地方。更重要的是,从一种设备到另一种设备代码和编程的专门技术的移植必须简单。通过仔细的代码设计,使用商品组件,并遵循公认的标准,可以大大提高移植性。因此,这也不是一个大问题。
系统结构
随着微处理器的发展,微处理器所采用的系统结构也在不断改进。早期系统由CPU和一些可以选择的逻辑设备组成。高度集成的设备可以减少芯片的数量,并且高性能的设备给硬件开发人员提出了许多挑战。但对软件工程师而言,系统结构的变化并不影响软件的设计。虽然系统变得更复杂,但仍使用同样的调试技术:在线仿真器、片上调试、ROM监视器和指令集仿真器。然而现在,这种情况开始有所改变。随着嵌入式系统功能的增强,许多设计人员现在都非常重视所使用的微处理器和微控制器。在大多数情况下,设计人员都乐意采用合并更多功能的设备;另一种选择是采用多处理器。这主要是为了满足分布式处理的需求 (如电话交换机)。另外,增加处理器是为了满足某些特定功能的要求(如移动电话中的一个DSP)。现在,软件开发人员所面对的最大挑战之一就是调试多处理器系统。当然可以对每一个设备使用一个调试器。然而,我们需要的是调试系统,每个处理器和它们之间的联系都需要被调试。因此,我们需要在一个调试系统中,支持不同结构多处理器的调试技术。
设计内容的组成
早期,嵌入式系统开发的全过程(包括软件和硬件)都是由一个工程师完成的。软件开发工作只占全部工作的5 ~10 ;随着时间的推移,80年代,软件开发工作已经占到全部工作的50 ;近几年,随着硬件复杂性的增加,软件开发工作急剧增长,经常达到全部工作的70 ~80 。这样软件开发工作经常需要由一个工程师队伍来完成,并且必须面对新的挑战。其中一项就是要有一些可以进行软件测试的硬件。由于很多软件需要在短时间内开发,因此,
要快速提供测试环境。有一些方案可供选择,如指令集仿真器和标准的低价格的商业评估板。另外,低成本的主-目标机连接技术已经得到广泛应用,Motorola的后台调试模式就是一个例子。
软件和硬件设计工程师一起工作是一种发展潮流。通过联合设计,特别是联合验证技术,软件工程师能够尽早在真实硬件上测试,而硬件工程师能够尽早在原型设计周期中验证他们的设计。
软件开发内容
用于软件开发的时间一直在增加。同时,由于国际贸易和全球竞争的加剧,产品推入市场的周期一直在缩短,从根本上影响着嵌入式产品的设计战略。最早期的设计都是由厂家自己单独设计的代码组成,所以非常简单。由于系统越来越复杂,因此多任务模型被广泛应用于软件开发,并且许多开发人员还选择了标准的商品化的实时操作系统产品。随着标准化工作的加强,购买的软件产品或者拥有知识产权的软件产品占全部工作的比例在稳步增加。对于软件开发人员而言,标准软件部件的集成是一回事,在多任务的上下文中调试则是另一回事。涉及选择知识产权的商务决策是非常复杂的,现在和将来都必须面对。
软件开发队伍的大小和分布
嵌入式系统开发带有一些自身的特点,需要的开发人员越来越多。利用常规的编程技术(像C和汇编语言),队伍中大多数成员还必须掌握整个系统的知识。随着开发成员数量的增长,这种工作方式变得越来越不可行。为了有效地管理这个队伍,必须将一些专有技术封装起来,以便使非专业人员可以安全、可靠和直接的方式使用。因而,面向对象的编程技术就产生了。在许多大公司中,软件开发队伍不是简单的增长,而正在分散化。一些成员在一个地方,而其他的成员在其它地方。这些地点也许分布于不同的国家。这在欧洲最为普遍,语言及时差可能成为一个主要问题。这种情况的增加,导致了技术中心的出现,因而使用软件部件变得越来越现实。
编程语言
对早期的4位和8位的微处理器来说,编程语言有选择的余地,只能使用汇编语言。由于当时的应用相对简单,因而并不存在太大问题。随着16位技术的流行,嵌入式系统对高级语言的需要不断增强。这时有几种语言可供选择,如C和Pascal等,它们既适合桌面系统使用,也适合于嵌入式系统。Intel专门为这种应用开发了PL/M语言。Forth也是一种比较流行的语言。[img]http://www.sogou.com/sogoupedia?query=%BA%F3%C0%B4]后来,32位技术逐渐流行,这时就只剩C和Ada了。Ada语言主要用于国防系统。
Microtec公司1995年完成的市场调查结果显示,C语言在嵌入式系统应用占主导地位。随着国防工业发展速度的下降,Ada语言的使用量在下滑。用户开始考虑采用C++语言。预计到2000年,在嵌入式软件开发中,C++语言将占有50 的份额。在最近两年中,这种趋势已经向预期的方向发展,已经有近25 的嵌入式应用系统使用C++语言编码。Java将在未来应用开发中扮演越来越重要的角色。
Microtec公司的产品线
作为嵌入式系统软件开发领域世界领先的专业公司,Microtec将以如下产品迎接这些挑战:
·能够处理多任务和多处理器调试的XRAY Pro调试技术用XRAY Pro调试工具包,得到多方面的调试能力。XRAY Pro是实际上的嵌入式软件开发的标准,它包括享有声誉的XRAY调试器、一个内置文本编辑器、一个编译工具、源码控制以及浏览工具等。除了功能强大的系统级调试外,XRAY还有支持主体仿真和交互开发的优化源码调试能力。XRAY进行C、C++和汇编语言的混合调试,支持高级C++语言功能。用户还可以用XRAY调试最终产品中的可执行代码。XRAY的显示系统丰富多样,可显示复杂的数据结构以及链表等基于指针的结构。最后,一个功能强大的宏语言帮助你进行自动测试。
·成熟C/C++语言技术将支持Java
Microtec的C和C++编译器是针对嵌入式和实时应用的开发工具,可以提高用户的嵌入式软件设计效率,并降低目标硬件的成本。编译器和链接器及汇编器针对嵌入式设计人员的需求进行了优化,这套完整的工具使用易于生成固化到ROM的应用软件,并解决重定位及微细硬件控制等方面的问题。Microtec的编译器支持ANSI和 Kernigan&Ritchie标准的C,并密切跟踪正在形成的ANSI标准的C++。
·带有可选择POSIX界面的VRTX实时操作系统
用VRTX实现嵌入式应用。VRTX具有一组满足用户需要的模块化界面和工具。通过对可向上兼容编程接口和面向对象开发的支持,VRTX保证用户能在将来支持和重复利用源码。VRTX的特点包括易于载入定制硬件、文件系统支持及ANSI/POSIX接口。VRTX网络协议包括TCP/IP、SNMP、TMN、OSI、CMIP、ARM、ISDN、X.25、Frame Relay、SS7和V5等。对STREAMS标准接口的支持使它易于容纳其它网络协议和器件驱动。
·用于Windows CE开发的工具
Windows CE是理想的支持WIN32界面软实时操作系统,适合于带人机对话的消费电子产品。
·带有无缝连接证实环境的硬件/软件协同证实产品 Seamless CVE
结论
在嵌入式系统开发过程中,已经存在的转折点与关键技术的关系是:
微处理器技术已经在各种设备中使用,并且应用面和数量不断扩大。因此,移植问题和编写可移植的代码就显得尤为重要。这样,就对微处理器家族的兼容工具和实时操作系统提出了新的需求。系统结构的进步导致多处理器嵌入式系统将大范围推广应用,推动了与此相关的调试技术的发展。
设计内容的组成已经发生了变化,软件开发工作的比重越来越大,推动了指令集仿真器、片上调试工具和硬件/软件协同验证的发展。软件内容已经从自行设计转向尽量采用具有知识产权的产品,推动了标准实时操作系
统和相应的调试技术的发展。软件开发队伍的大小和分布已经从一个工程师变为一个工程师队伍,甚至这些工程师还分布在不同的地点,促进了支持面向对象的编程和带有标准界面的实时操作系统技术工具的发展。
编程语言的选择面似乎很窄。虽然,对C工具和兼容的C++语言产品依然有很大的需求,但是,随着Java的发展, Java工具将是必不可少的。追踪所有嵌入式系统发展的转折点出现的技术并不是一件容易的事情。由于它们之
间有许多相互关系,因此,孤立地看某一方面没有什么意义。例如:多任务和多处理器调试要求并进;基于标准的实时操作系统技术对处理器移植会带来真正的实惠;一个标准化的实时操作系统界面和C++必须很好匹配。 |
|