4 软件仿真技术
通过软件仿真的方式来进行嵌入式系统的设计一直是嵌入式开发工具的重点发展方向。软件仿真可以加快软件开发进度,使得软件工程师对硬件工程师的依赖减弱,同时还减少了对硬件损伤的机会。另外给学习者提供了廉价的学习方法,降低了学习门槛。目前,软件仿真技术在嵌入式的各个层面都取得了长足的发展。
(1)OPLD/FPGA设计的仿真
CPLD/FPGA的设计是嵌入式系统硬件设计的重要部分,而且随着SoC系统设计的增长,EDA在硬件设计中所占的比例将越来越大,也越来越复杂。目前的商用EDA设计软件已普遍具有功能强大的逻辑仿真工具,能进行完备的电路功能仿真和时序逻辑仿真,对时序和关键路径延时分析已经非常精确。
例如,Altera公司的设计工具Quartus II就具备以下强大的仿真及验证工具:TimeQuest时序分析器、PowerPlay功耗分析器、芯片规划器、SignalTap II嵌入式逻辑分析器、RTL查看器/技术映射查看器,还能对第三方验证工具提供支持。
(2)单元模块设计的仿真
单元模块的驱动设计是嵌入式系统软件设计的最底层,是嵌入式系统软硬件结合处。过去的嵌入式开发工具所具备的仿真功能都只是局限于对处理器内和指令集的仿真。而近年来出现的一些仿真工具,已经大大扩大了仿真范围,能仿真各种处理器片上单元模块,支持各种外部输入信号的仿真,并可以根据仿真的结果对应用程序进行性能分析,帮助程序员优化软件设计。
例如ARM公司的RealView MDK,充分发挥了Keil公司μVision的模块仿真优势,支持外部信号仿真、快速指令集仿真、中断仿真、片上外设(ADC、DAC、EBI、Tim—ers、UART、CAN、I2C等)仿真等功能,并可将仿真结果以图形化的方式呈现出来,例如逻辑分析仪、通信终端等。
(3)操作系统设计的仿真
操作系统在嵌入式系统软件中占有重要地位,操作系统之上的应用层软件设计往往与PC机上的应用软件设计区别不大。嵌入式系统的操作系统通常需要根据处理器以及硬件来进行定制。目前,嵌入式操作系统的移植工作都需要在对硬件细节充分了解的情况下才能进行,这使研发工作常常会陷入具体硬件细节中不能自拔,硬件不稳定的情况,所花费的时间更是无法预计。
如果能建立一个嵌入式操作系统仿真平台,使嵌入式操作系统的设计和移植工作不用过于考虑底层硬件的细节,只需要知道处理器的体系结构即可开始工作,这将大大加快嵌入式操作系统设计移植和应用层软件开发的进度,也可以为初学者提供一个良好的平台。在x86结构的PC机上,已经出现了一些商业的操作系统仿真软件,例如vmware和virtualPC等,能完全仿真一个真实的PC,用户可以在其上安装各种操作系统。目前,在嵌入式领域还没有出现商业的操作系统仿真平台,但已经出现了一些嵌入式操作系统仿真平台的自由软件。
例如,清华大学陈渝博士于2002年底开始组建的开源项目SkyEye,已经可以模拟基于ARM内核的CPU,包括ARM7TDMI、ARM720T、ARM9TDMI、ARM9xx、ARMlOxx、StrongARM、XScale等,并扩展了一些处理器的内存控制和各种I/O控制器,μClinux、μC/OS—II等多种嵌入式操作系统和各种系统软件(如TCP/IP、图形子系统、文件子系统等)可以在该平台上进行仿真运行,并能对它们进行源码级的分析和测试。SkyEye项目组,近期已经开始了加入MIPS处理器内核的工作。
5 图形化设计方法
图形化开发在嵌入式领域已经越来越多,从硬件设计到软件编程的各个环节都已经有了非常多的优秀工具。例如RealView MDK的启动代码生成器,通过图形对话框可以非常容易地生成上百行的汇编代码,大大提高了效率,尤其是对于新手而言。但是这些图形化设计工具都是针对嵌入式系统设计的某个环节而言的。
将整个嵌入式系统的设计图形化是未来嵌入式系统设计的另一个新趋势。加州大学伯克利分校的EdwardLee提出,现在嵌入式系统的开发手段——如基于文本编程和面向对象的工具——都难以用来构建嵌入式实时系统,因为面向对象很难直观地表达时间和并行性,而时间和并行性在现在的嵌入式系统中是必不可少的。EdwardLee因此提出了面向角色的图形化方法,它能够更好地表达整个系统,减少与特定硬件以及操作系统的相关性,这使更多的软件设计和算法易于理解并被重复使用,更适合嵌入式系统设计。
结 语
综上所述,可以预计在未来2~3年内,Eclipse将成为嵌入式工具的通用平台,多种嵌入式工具将在其上无缝结合,用户可以定制自己的开发工具、管理工具;Core—Sight调试体系结构带来的实时调试分析手段,将成为开发更复杂嵌入式系统的技术保障;软件仿真技术和图形化开发方法目前尽管还只是在部分层面和部分环节上有效,但是它们已经开始改变嵌入式设计的过程,而这一趋势终将带来嵌入式系统设计方法及过程的重大变革。