嵌入式=IT+15年?
作者:风河的首席技术官Tomas Evensen October 23, 2006
文章来源:http://www.ednchina.com/blog/tomas/
这个标题中隐含的问题是,现在多数人所看到的嵌入式产业的问题,那就是多年来嵌入式产业总是跟随着IT产业的轨迹,并且大多数IT领域的趋向最终会在嵌入式领域找到相应的痕迹。确实是这样的,就像我们找到通往DSO领域的道路一样。关于DSO的信息请看John的博客。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
这样会有两个问题:
1. 为什么嵌入式领域会落后?
2. IT领域所有的趋势都会被复制到嵌入式领域吗?
我认为,如果你想得到这些问题的答案,你首先需要对IT领域和嵌入式技术二者之间奇妙的差别有一些了解。我将会对这两个领域的技术做一些比较,而在商业领域也会有一些相似的讨论。
二者确实有一些共同之处,他们同样都是在处理器上运行软件的一种技术。那么,是否所有高效编程的技术(更高级的语言、模块化编程、更高的抽象级别)和更好的硬件(更快、更便宜、更少的种类)都同样能适用于两种技术呢?
让我们看看下面这些趋势:
高效编程
在IT领域这种趋势是十分明显的。当高效编程出现后,我们从二进制语言转到汇编语言,又到了FORTRAN/COBOL/C 以及 Java/C++/C#,有时还会涉及模块化编程。随着语言等级的提高,带给我们的是更高的抽象级别。这使得我们需要对我们运行软件的硬件了解的更少,并且我们用大量的标准类库来完成一些以前靠我们自己编程来做的事情。还使得在底层上重用代码和只关注上层更新成为可能。这样,程序员变得更加高效了。
但提高的效率是需要代价的,那就是我们需要更强的处理能力以及更多的内存等。如果编写一个同样的程序,你需要更多的花费开销。但这是值得的。因为丢掉硬件比在遇到困难时添加程序员划算得多。
但有时,在嵌入式设备上,帐不能这样算;一个更强大的处理器所要耗费的不仅是金钱,它也还会带来更多的能耗、更快的消耗电池等其他负面影响。对于大量已生产的廉价设备来说,添加额外的更快的处理器和更多的内存也会是一笔不小的开销。
JAVA就可以很好的说明软件在嵌入式设备上的差别,Michael Scharf会说java和c是一样高效的,但显然它是错的。Java是通过使用一种叫做just-in-time (JIT)的编译技术来提高在工作站上的性能的;这意味着在你执行代码的时候,你实际上是将java的字节码转换成多个处理器可直接运行的本地代码。由于JIT的运行需要一个在目标机上的编译器并且这个编译器需要缓存来编译代码,所以JIT会消耗一些内存。这也就是在你想要的更快的、更小存储的设备时会遇到问题。
另一个问题是,你所使用的语言越高级,比如JAVA,你将会从硬件上做越强的抽象,这会使得你对同步运行的控制越难。一些设备需要考虑同步的问题,这意味着你需要在一个指定同步窗口上运行代码。汽车安全气囊就是一个典型的例子;你不会希望在一个气囊的膨胀过程中,java的垃圾收集器能够在每毫秒都来执行检查。
硬件趋势
一些硬件从桌面系统到嵌入式系统的转换越来越快。比如,使用多个高效处理器、多核芯片、廉价的内存。这些都很快在嵌入式系统中实现了。
至少有一件事到现在还没有发生,那就是合并成更少的处理器结构和种类。所有在七八十年代的微处理器构架都被两种处理器构架所取代;x86/IA32是其中的一种主导构架。在嵌入式的领域中,我们仍有多种处理器构架,虽然比较相近,但还是在不断变化。比如单独的power pc处理器就有一些在浮点数乘法运算的差别。这意味着操作系统和工具的提供商需要为这种处理器提供特定的支持。对比于X86构架来说,同样的工具和系统可以运行在多种运营商提供的设备上。为什么?
这主要有以下一些原因造成:
l 在IT领域向后兼容性的要求更强
l 在IT领域,驱动的标准推进更快
l 工作站/服务器/桌面系统比电话与路由器之间的差别更小
l 设备的专属性更强
在嵌入式领域的标准化是纵向的,比如,现在一些高级的电话使用的是基于ARM的芯片。
问题
现在我们解释了为什么嵌入领域的发展落后于IT领域了吗,还没有
但是希望了解到你们的观点。
实际上可能有些事情不同(比如使用高级语言是否划算方面),有些事情又可能比较类似;但确定的是,我相信在促进标准的形成方面,我们需要变换思维。在嵌入式领域,我们需要更好的标准来提高效率。
这正是DSO所关注的:用不同的方式来思考,将产业带到一个更高的效率级别上。
daiqiumiao_806246054 2007-5-10 17:08
分析得很中要害!
用户61720 2007-4-27 11:16
有很透彻,是篇比较专业的文章!