嵌入式系统中的处理器技术
2 嵌入式处理器芯片的开发
2.1 一般开发过程
尽管有几千种现成的芯片可供选择,但是许多设计者需要与众不同的特性。因此,他们开发自己的嵌入式芯片,即所谓的专用集成电路。
设计人员开始时需要从一家公司取得嵌入式微处理器的内核的授权,然后添加他自已应用特有的特性。例如,对于数字照相机处理器来说,他可能为这种电荷耦合设备的芯片添加1个控制器。又比如,对于具有Internet功能的家电处理器来说,可以添加1个Ethernet接口。设计者然后将他的设计交给“铸造厂”,即一家拥有“工厂”(芯片制造厂)的公司,并将部分制造量出售给其他公司。主要的制造厂有United Microelectronics公司、TSMC公司和IBM Microelectronics公司。
对于一些设计者来说,甚至这种灵活性还不够用。他们可以找到某些公司,这些公司拥有可高度定制嵌入式微处理器内核的许可证。利用这类内核,可以开发出用于特殊目的的新机器级指令。对于数字相机处理器而言,1条提高JPEG图像压缩率的指令具有很高的价值。对于MP3音乐播放器来说,1条加速音频解压缩率的指令具有同样的用处。然后,定制的设计交给“铸造厂”进行生产。
和通用计算机不同,嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣,去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用对处理器的选择面前更具有竞争力。嵌入式处理器要针对用户的具体需求,对芯片配置进行裁剪和添加才能达到理想的性能;但同时还受用户订货量的制约。因此不同的处理器面向的用户是不一样的,可能是一般用户、行业用户或单一用户。
嵌入式处理器的发展也体现出稳定性,1个体系一般要存在8~lO年的时间。1个体系结构及其相关的片上外设、开发工具、库函数、嵌入式应用产品是一套复杂的知识系统,用户和半导体厂商都不会轻易地放弃1种处理器。
2.2 嵌入式系统的开发工具
嵌入式处理器是一个复杂的高技术系统,要在短时间内掌握并开发出所有功能是很不容易的,而市场竞争要求产品能够快速上市,这一矛盾要求嵌入式处理器能够有容易掌握和使用的开发工具平台,提高用户和程序员的时间一投入回报率。面对成百上千种处理器,选择是一个问题,学习掌握处理器结构及其应用更需要时间,因此以开发工具和技术咨询为基础的整体解决方案是迫切需要的。好的开发工具除能够开发出处理器的全部功能以外,还应当对用户是友好的。
嵌入式系统开发工具平台主要包括以下几类。
2.2.1 实时在线仿真系统
在计算机辅助设计非常发达的今天,实时在线仿真系统(InCircuit Emulator,ICE)仍是进行嵌入式应用系统调试最有效的开发工具。 ICE首先可以通过实际执行,对应用程序进行原理性检验,排除人难以发现的设计逻辑错误。ICE的另一个主要功能是在应用系统中仿真微控制器的实时执行,发现和排除由于硬件干扰等引起的异常执行行为。此外,高级的ICE带有完善的跟踪功能,可以将应用系统的实际状态变化、微控制器对状态变化的反应、以及应用系统对控制的响应等以一种录像的方式连续记录下来,以供分析,在分析中优化控制过程。很多机电系统难以建立精确有效的数字模型,或是建立模型需要大量人力,这时采用ICE的跟踪功能对系统进行记录和分析是一个快而有效的方法。
ICE不仅是软硬件排错工具,同时也是提高和优化系统性能指标的工具。高档ICE工具(如美国Nohau公司的产品)可根据用户投资裁减功能,亦可根据需要选择配置各种档次的实时逻辑跟踪器(Trace)、实时映像存储器(Shadow RAM)及程序效率实时分析功能(PPA)。
2.2.2 高级语言编译器
C语言作为一种通用的高级语言,大幅度提高了嵌入式系统工程的工作效率,充分发挥出嵌入式处理器日益提高的性能,缩短产品进入市场时间。另外,C语言便于移植和修改,使产品的升级和继承更迅速。更重要的是,采用C语言编写的程序易于在不同的开发者之间进行交流,从而促进了嵌入式系统开发的产业化。
区别于一般计算机中的C语言编译器,嵌入式系统中的C语言编译器要专门进行优化,以提高编译效率。优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程序长5%~20%。编译效率的不同,是区别嵌入式系统C编译器性能差别的重要根据之一。而C编译器残余的5%~10%效率差别,完全可以由现代微控制器的高速度、大存储器空间以及产品提前进入市场来弥补。
新型的微控制器指令速度不断提高,存储器空间也相应加大,已经达到甚至超过了目前的通用计算机中的微处理器,为嵌入式系统工程采用过去一直不敢问津的C++语言创造了条件。C++语言强大的类、继承等功能更便于实现复杂的程序功能。但是C++语言为了支持复杂的语法,在代码生成效率方面不免有所下降。为此,1995年初在日本成立的Embedded C++技术委员会经过几年的研究,针对嵌入式应用制订了减小代码尺寸的EC++标准。EC++保留了C++的主要优点,提供对C++的向上兼容性,并满足嵌入式系统设计的一些特殊要求。在嵌入式高级语言编译器方面处于领先地位的Tasking公司,是EC++技术委员会成员之一,也是最先推出EC++产品的公司。
C/C++/EC++引入嵌入式系统,使得嵌入式开发和个人计算机、小型机等在开发上的差别正在逐渐消除,软件工程中的很多经验、方法乃至库函数可以移植到嵌入式系统。在嵌入式开发中采用高级语言,还使得硬件开发和软件开发可以分工,从事嵌入式软件开发不再必须精通系统硬件和相应的指令集汇编。
另一种高级语言Java的发展则具有戏剧性。Java本来是为设备独立的嵌入式系统设计、为了提高程序继承性的语言,但是目前基于Java的嵌入式开发工具代码生成长度要比嵌入式C编译工具长10倍以上。因此EC++很可能在未来的一段时间内仍是嵌入式系统的主流。
2.2.3 源程序模拟器
源程序模拟器是在广泛使用的、人机接口完备的工作平台上,如小型机和PC,通过软件手段模拟执行某种嵌入式处理器内核编写的源程序的测试工具。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,供程序员检查;高级的模拟器可以利用计算机的外部接口模拟出处理器的I/O电气信号。不同档次和功能模拟器工具价格差距巨大。模拟器软件独立于处理器硬件,一般与编译器集成在同一个环境中,是一种有效的源程序检验和测试工具。但值得注意的是,模拟器毕竟是以一种处理器模拟另一种处理器的运行,在指令执行时间、中断响应、定时器等方面很可能与实际处理器有较大差别。另外,它无法和ICE一样,仿真嵌入式系统在应用系统中的实际执行情况。
嵌入式 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 嵌入式系统实时性的问题(06-21)
- 嵌入式实时系统中的优先级反转问题(06-10)
- 嵌入式Linux系统中MMC卡驱动管理技术研究(06-10)
- FPGA的DSP性能揭秘(06-16)