OpenPCS的一个重要特点就是源码开放,它遵循开放资源软件的原则,用户一次购买了软件的许可证后,不需要为每一个分发和拷贝另行缴纳任何版权和许可费用。这样大大地降低了设备制造商使用软件后对其产品成本的增加。另一方面,开放源码的软件可允许用户对其软件进行灵活的修改,以适应自己产品或系统的需要。这也是非开放源码软件所无法比拟的优越。
嵌入式系统开发工具及RTOS平台
嵌入式处理器是一个复杂的高技术系统,要在短时间内掌握并开发出所有功能是很不容易的,而市场竞争则要求产品能够快速上市,这一矛盾要求嵌入式处理器能够有容易掌握和使用的开发工具平台。提高用户和程序员的时间投入回报率(ROT1)。
从事嵌入式开发的往往是非计算机人士,面对成百上千种处理器,选择是一个问题,学习掌握处理器结构及其应用更需要时间,因此以开发工具和技术咨询为基础的整体解决方案是迫切需要的。好的开发工具除能够开发出处理器的全部功能以外,还应当是用户友好的。目前嵌入式系统的开发工具平台主要包括下面几类。
1.实时在线仿真系统ICE(In-Circuit Emulator)
直到计算机辅助设计发达的,实时在线仿真系统(ICE)仍是进行嵌入式应用系统调试有效的开发工具。ICE首先可以通过实际执行,对应用程序进行原理检验,排除以人的思维难以发现的设计逻辑错误。ICE的另一个主要功能是在应用系统中仿真微控制器的实时执行,发现和排除由于硬件干扰等引起的异常执行行为。
ICE带有完善的跟踪功能,可以将应用系统的实际状态变化、微控制器对状态变化的反应、以及应用系统对控制的响应等以一种录像的方式连续记录下来,以供分析,在分析中优化控制过程。很多机电系统难以建立一个有效的数学模型,或是建立模型需要大量人力,这时采用ICE的跟踪功能对系统进行记录和分析是一个快而有效的方法。
嵌入式应用的特点是和现实世界中的硬件系统有关,存在各种异变和事先未知的变化,这就给微控制器的指令执行带来了各种不确定,这种不确定只有通过ICE的实时在线仿真才能发现,特别是在分析可靠时要在同样条件下多次仿真,以发现偶然出现的错误。
I CE不仅是软件硬件排错工具,同时也是提高和优化系统能指标的工具。ICE工具(如美国HAU公司的产品)是可根据用户投资裁剪功能的系统,亦可根据需要选择配置各种档次的实时逻辑跟踪器(Trace)、实时映象存储器(Shadow RAM)及程序效率实时分析功能(PPA)。
2.语言编译器(Compiler Tools)
C语言作为一种通用的语言,大幅度提高了嵌入式系统工程师的工作效率,使之能够充分发挥出嵌入式处理器日益提高的能,缩短产品进入市场时间。另外C语言便于移植和修改,使产品的升级和继承更迅速。更重要的是采用C语言编写的程序易于在不同的开发者之间进行交流,从而促进了嵌入式系统开发的产业化。
区别于一般计算机中的C语言编译器,嵌入式系统中的C语言编译器要专门进行优化,以提高编译效率。的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程序长5~20%。编译质量的不同,是区别嵌入式C编译器工具的重要指标。而C编译器与汇编语言工具相比残余的5~20%效率差别,完全可以由现代微控制器的高速度、大存储器空间以及产品提前进入市场的优势来弥补。
新型的微控制器指令及SOC速度不断提高,存储器空间也相应加大,已经达到甚至超过了目前的通用计算机中的微处理器,为嵌入式系统工程师采用过去一直不敢问津的C++语言创造了条件。C++语言强大的类、继承等功能更便于实现复杂的程序功能。但是C++语言为了支持复杂的语法,在代码生成效率方面不免有所下降。
C/C++/EC++引入嵌入式系统,使得嵌入式开发和个人计算机、小型机等之间在开发上的差别正在逐渐消除,软件工程中的很多经验、方法乃至库函数可以移植到嵌入式系统。在嵌入式开发中采用语言,还使得硬件开发和软件开发可以分工,
从事嵌入式软件开发不再必须精通系统硬件和相应用汇编语言指令集。
一种语言,JAVA的发展则具有戏剧。JAVA本来是为设备独立的嵌入式系统设计的、为了提高程序继承的语言,但是目前基于JAVA的嵌入式开发工具代码生成长度要比嵌入式C编译工具差10倍以上。因此EC++很可能将成为未来的主流工具。
3.源程序模拟器(Simulator)
MVME2400-0363 MVME2432-1
MVME2432-3 MVME2433-1 MVME2433-3 MVME2600-2
MVME2603-1121A MVME2603-2131A MVME2603-3141 MVME2603-3151
MVME2603-3161 MVME2604-1131A MVME2604-1141A MVME2604-2141A
MVME2604-3341 MVME2700-1221 MVME2700-1231 MVME2700-1241
MVME2700-1251 MVME2700-1321 MVME2700-1331 MVME2700-1341
MVME2700-1351 MVME2700-1421 MVME2700-1431 MVME2700-1441
MVME2700-1451 MVME2700-3221 MVME2700-3231 MVME2700-3241
MVME2700-3251 MVME2700-3331 MVME2700-3421 MVME2700-3431
MVME2700-3441 MVME2700-3451 MVME2700-3451 MVME2700-4321
MVME2700-4331 MVME2700-4341 MVME2700-4351 MVME2700-4421
MVME2700-4431 MVME2700-4441 MVME2700-4451 MVME297-002 64MB
MVME297-003 128MB MVME297-004 256MB MVME297-128 128MB MVME300
MVME300 MVME300A MVME315 MVME316
MVME320A MVME323 MVME323-1 MVME323S
MVME327A MVME328-1 MVME328S-1 MVME328S-2
MVME328XT-1 MVME328XT-2 MVME330-2 MVME331
MVME332 MVME332XT MVME332XTS MVME332XTS
MVME333-2 MVME333 MVME333S-2 MVME333S MVME333S-2 MVME333S MVME334
MVME334A MVME334B MVME335 MVME336SIO
MVME337-1 MVME338 MVME339 MVME341 MVME341A
MVME350 MVME3604-1131 MVME3604-1 MVME3604-1141 MVME3604-1151
MVME3604-5332 MVME3604-5342 MVME3604-5352 MVME3604-6342
MVME3604-6352 MVME372 MVME374 MVME374-1
MVME376 MVME385 MVME385-120 MVME393
MVME4604-1141 Dual 200MHz MVME4604-5362 Dual 300MHz MVME4604-5462 Dual 400MHz MVME5100-0141
MVME5100-0143 MVME5100-0151 MVME5100-0153 MVME5500-0161
MVME5500-0163 MVME600 MVME6100-0161 MVME6100-0163
MVME705-1 MVME705A MVME705A MVME705B
MVME710B MVME712-104 MVME712M MVME712M MVME712/M
MVME714 MVME719 MVME741 MVME742
MVME761-001 MVME761EXT MVME854TK 01-W2755D01C MVME946
MVPI300 MVSB741 PMC-Span 01-W3298F01A PPMC750-1231
PRPMC800-5251 PRPMC800-5279 PRPMC800-6261 PV5300B33
SMMXER3E100X0 SuperNode system with the TMCP700-001 XR-342 XR342
XR712-121K XR712-123TPK National Instruments VME-MX
VME-MXI-2 VME-MXII Natural Microsystems AG Quad CPCI PN 5536
TX 3210 PN 5646 Revision 2 Odetics AITG-VME AITGVME VTTR- Oregon Micro Systems
PCBVX2B VME37410 VME8 VMEXBJ1S
Pentek 4252 A/D D/A 4283 Floating Point DSP 6102 Analog I/0 Comm Board