在嵌入式系统内,ARM几乎已经成为一个标准 ,但中国芯片公司采用ARM内核的比例明显要比欧美等地方要低得多。另一个值得注意的是,国内芯片公司很多时候会强调他们的软件都是内部开发的。由于这两个原因,使得中国芯片公司对第3方开发编译器和相关的嵌入式软件的需求比国外低很多。也使得中国的独立的嵌入式软件开发商跑去了为外国的半导体公司服务。在今天芯片利润主要从芯片上软件获取的大趋势下,我们认为第三方软件供应商对芯片公司的作用是不容忽视的,但这必须是在一个在良好的环境下才能实现的。为了创造这样良好的开发环境,编译器肯定是一个重要的环节。
今天的芯片已经不再是一颗功能简单的芯片,绝大部分都是SoC,功能包罗万象,为了实现不同的功能,芯片内有各式各样的模组和软件。从设计到生产,会花掉大量的人力、时间和金钱。相对一个密封的开发环境,容许第三方开发看来会浪费更多的人力和时间。但这恰恰是欧美各大芯片公司跟国内芯片公司一个不同之处。我们也不得不承认这些欧美大芯片公司基本上已经占据市场的主要位置。如果国内芯片公司要挑战他们的话,首先必须要有同样或者更超前的思维。
当然,世事往往都有例外,近年也有很多公司在密封开发系统下取得成功,比如在手机上。它们的成功的确坚定国内芯片公司对密封的开发环境的信心。不过值得注意是,国外公司依然走第三方开发公司的路, 在这种趋势,相信未来的一段日子,国内的第三方开发商也只能为国外公司服务。
要第三方开发公司的合作,最重要是一个对双方有利的合作模式和诚恳的态度。然后,就是一个良好的开发环境,比如编译器。目前,有很多芯片公司会提供免费的编译器,也有芯片公司会采用专用的编译器(这些编译器通常是要购买),更有一些公司的芯片可以用其他公司的编译器。对ARM的用户来说,编译器看起来是最简单的事,因为ARM跟其它公司有提供很多不同的编译器,有部分更有试用版,所以,一般来说都不会理会开发环境,但随着ARM CPU会跟其它ARM CPU或其它DSP放在同一颗芯片上,开发环境也变得复杂起来,ARM公司提供的编译器也不一定能够满足最后产品的要求。
好的编译器不但可以大幅度压缩代码密度还可以大大提升性能
另一方面,也有很多芯片公司会跟一些开发工具的公司合作,如Freescale和Metrowerks, Samsung和Aiji等。毕竟芯片公司的长处是芯片设计,开发工具交给一些专业的公司会更好,但这些开发工具公司出于自身利益的考虑,会使得芯片公司在推广一些新的芯片上遇到一些额外阻力。但不可否认的是,这些公司的开发工具是的确有它的优势。但由于Freescale 或其它公司的CPU和DSP已经有一定的客户基础,所以这方面的问题并不突出。
最后,是当设计芯片时已经把软件的兼容问题想好,芯片出来后,能直接执行其他芯片的目标码,通常这发生在一个后续产品要跟以前的产品兼容,例如ARM11能执行很多在ARM9上的软件,也有一些公司开发出芯片能执行在其他公司开发的软件,不过这真的是说易行难。用芯片来配合软件,我认为是比较吃力的一回事。不过在公司资源有限的情形下,这也是一个方法。
今天,编译器已经不是光把源码转为目标码,大家也开始注意到优化的问题。比如ARM它的CPU就有Thumb指令,使得软件变小,来减少memory并达到节约成本的目的,不过多媒体流行的今天,如何能在相对上低阶平台上,提升软件的速度,使得有一个满意的多媒体效果,已经对现在的嵌入式软件开发人员产生一个挑战。由于很多时候,编译器的效果不理想,软件开发人员就直接用汇编语言来写。目前来说,无论国内和国外,很多项目也是采取这种方式来解决软件执行速度低的问题。但在一些新一代的编译器其实已经能很好的去优化目标码,来达到一个比较高的执行速度。这种编译器能很有效提高软件的速度,并大幅减短的开发时间。对于芯片公司来说,开发一颗芯片是一个巨大的投资,减短的开发时间意味着提前把产品推出市场,能提前哪怕只是一个月的销售也是很重要。但可惜的是这种开发工具一般都很贵,一般的第3方开发公司根本没有能力购买,所以还是依赖芯片公司的决定。
怎样提高软件的速度,其实一个良好的开发环境是可以提供一个帮助,由于新的CPU和DSP的pipeline越来越长,并新增cache,过去依靠软件人员用汇篇语言编写软件会变得越来越不可靠。新的编译器能对SIMD(Single Instruction Multiple Data)和怎样减少cache的miss rate这两方面做出很好的优化。这样他们能尽量利用数据的parallelism把软件的速度提高,这对于CPU 和DSP产生高质素的图像效果至关重要。随着新的消费电子产品面世,会让消费者对图像的要求大幅提高,从2D到3D,从QVGA到VGA,消费者会要求更逼真和更漂亮的视觉效果,过去的假mp4在未来将会消失,无论是芯片公司,第三方的开发公司到消费电子的生产者都应该把握这个机会.
今天的消费电子产品已经比10年前先进得多,商业模式也从过去靠硬件变得更依靠软件,在这个转变当中,我们必须重新评估过去有效的商业模式,能不能适合今天的市场。电子产品的生命周期很短,但开发一个产品的时间可以需要很长,甚至比销售产品的时间更长,面对这样一个挑战,产品开发的管理变得重要。在整个管理中,可能大家会很关心到底怎样才能在成本和时间上满足上级的要求。因为,开发出来的产品的成本和时间能不能赶得上市场才是最关键。无论是自己做,是供应商做或者是找第3方来做,最重要还是赶上市场。除了供应商外,自己做的或者跟第3方合作的就需要一个开发环境。这开发环境中最重要的是编译器,开发软件,一般分为2个阶段,就是编写软件和Debug,当中以Debug最费时间。在Debug当中,相当一部分时间就是编译器耗掉的时间,所以一个省时的编译器,能大幅提高开发的能力。另外,如果能将一些工作,特别是那些陌生的工作交给有经验的第三方也会缩短开发时间。
当MP3把DISCMAN取代,当手机把数码相机取代后,大家开始讨论一个终极的手持产品的出现,它能把所有其它的产品取代。从硬件来看,这是肯定的。因为今天不同手持产品的硬件配置可能很相似,但由于它的软件不同,它就变成不同的产品,但更重要是它的商业模式不同,所以它变成另一个产品。当手机加了摄像头后,它很轻易就取代了数码相机,我已经用手机拍照一段时间,现在是越来越喜欢用手机拍照。但目前的手机就没法替代游戏机,因为游戏机并不靠手机本身,或者是网络费用来挣钱,它是靠卖游戏软件来挣钱。到底这两种不同的模式谁会占到上风,目前还不知道,但有一点肯定的是,要在这两大产业之间发展,并且占有先机,一个良好的开发平台,并有一群有实力的第三方开发商,是必需的。