Date Category misc
  • "" category: 嵌入式

RIP

想到要写这篇文章的时候,心情还是有些沉重的。毕竟自己曾经在这个平台上付出了很多精力与汗水。可以说见证Windows CE的成长,CE也见证了我的成长。但是现在,到了说再见的时候了。

严格来想,第一次见到Windows CE应该是在2000年左右见到世嘉的Dreamcast游戏机。Windows CE 2.x,当然,Windows CE在DC而言,很好的扮演了嵌入式操作系统的角色,退居幕后。很多年之后我才知道DC原来是用的CE的操作系统。

第一次接触Windows CE开发是2002年,Windows CE 3.0,学院网站服务器上万老师放了一个文件夹,是他以前在企业里面做CE驱动的时候留下的一些资料。我闲着无事就在学院服务器里面乱翻,找到了这个东西,知道了还有CE这么个系统。到微软网站上下载了CE的开发工具跟SDK,把自己写的windows程序没怎么费力气就编译运行在了CE上,当时的感觉是跟Windows这不是一样么。

对Windows CE的深入理解开始自2004年,我本科将要毕业的时候,参与了汽车学院的一个项目,负责CE的系统定制跟做一个车载平台。这个项目让我第一次接触了OS层面的开发。也使我对CE的架构跟底层有了深入的了解,也是这个项目,把我带上了嵌入式开发的道路。

读研的时候比较无聊,阅读了很多CE的资料跟源代码,甚至花了一年写了第一本Windows CE的教材。这本教材卖了大概3万本,给我带来了10W人民币左右的收入,现在还有人买。对学生来说,还没出校门赚到10W人民币挺不容易了,所以读书的时候我比较高傲。但其实并没有把这第一桶金继续发酵。这些钱被转化成了在山东威海的半套房子后嘎然而止了,虽然这房子价格翻番了。

后来学院跟微软合作开设CE的联合课程跟培训,我在学院上《Windows CE嵌入式系统》这门课,一直至今。

后来我还参加了微软的认证讲师培训,甚至给好几个公司做过CE开发的培训。当然我个人不太喜欢培训这个活,跟在学校的课堂上讲课比,很没趣,所以自08年以后所有的企业培训邀请我都拒绝了。

07-10年,当了4年的微软Windows CE方向的MVP,11年来香港之前主动放弃了。这算是对我在CE方向上贡献的最高认可吧。

—————————————-

Windows CE从1996年发展至今,已经有16个年头了。版本号从1.0翻到了7.0,据某不愿透露姓名的微软公司员工透露,下一个版本8.0也在开发之中了。但是,Windows CE的辉煌年代已经远去了。

简单的回顾一下CE的历史,自己不难作出判断。

CE诞生于96年,当时为什么会想到要搞这么个东西出来?因为苹果公司93年发布了Newton掌上电脑,当然,当时的苹果已经奄奄一息了,随时都有可能倒闭,但是Newton这个东西让微软看到了掌上电脑的市场。同时起步的还有Palm,也差不多是96年发布了第一个版本的PDA。CE的第一个版本就是要做一个这种掌上电脑,产品的名字就叫Handheld PC。当然,后来的结果大家都知道,苹果的Newton跟微软的H/PC这两个早产儿谁也没捞到便宜。之所以说它们早产,因为当时的软硬件技术、电池技术(AAA5号电池)、存储技术(内存放数据)、显示技术(黑白屏)、网络技术(不能联网)等都不足以支持一个像样的OS运行,反倒是实现比较simple, sometimes naive的Palm赚了便宜。很长一段时间,Palm都是PDA的代名词,国内也有不少山寨的Palm,像联想掌上电脑。所以乔布斯回到苹果后,一上台就把Newton这个没前途的东西给干掉了。

CE诞生后,嵌入式领域也慢慢开始发展起来,微软发现在H/PC领域捞不到好处,当然,微软财大气粗,亏得起,再给你个几个亿美元,在其他领域玩去吧。前面提到的Dreamcast就是一个例子。为此微软还专门开发了CE版本的DirectX。

CE最辉煌的时候是诞生10年后,随着技术发展,软硬件技术都慢慢成熟了,硬件越来越强大。这个时候,在跟Palm的竞争中,CE的后劲就慢慢体现出来了,这就是后发优势。最辉煌的时刻是2005年左右我记得,Palm公司宣布采用基于CE的Pocket PC系统作为自己的Palm设备的操作系统。这无疑宣告CE与Palm的10年抗战的彻底胜利,Pocket PC在PDA市场一统江湖。我记得很清楚,微软甚至自豪的在自己的官网上给Palm的设备做广告,没关系,别买Pocket PC了,买Palm去吧,反正都是我的系统。放到今天来,这是一种什么程度的震撼呢?你就假设苹果突然说以后我的Macbook Pro跟Air都预装Windows 8了,我自己的OS X不要了,然后微软的首页广告,去买Mac去吧,就是这么疯狂。

可惜胜利是短暂的,PDA这个市场迅速消亡了。被汹涌而来的智能手机市场给替代了。PDA的功能成了智能手机功能的子集。PDA能做的事情智能手机都能做,两者价格还差不多。谁会单独去买个PDA呢?在新的智能手机系统的第一轮竞争中,CE的表现只能说勉强不让群众失望。微软02年就开始开发基于CE的手机系统,叫Smartphone,我03年在微软实习的时候看过一些公司的内部文档。这个系统完全是针对没有触摸屏的按键手机开发的。也推出过一些实际的产品。后来手机迅速发展到了触屏时代,没关系,我还有个Pocket PC系统,把PPC加个打电话功能,就成了手机系统了,当时叫Pocket PC Phone Edition。后来统一叫Windows Mobile。

为啥说CE的表现是勉强不让群众失望?都说不怕神一般的对手,就怕猪一般的队友。在第一轮智能手机系统争夺战中,神一般的对手(谷歌、苹果)当时还没登场。谷歌还是个刚起步的小弟,当时还差点被微软收购。苹果乔布斯在忙着卖歌还债。上天给微软安排的是猪一般的对手Nokia及其Symbian系统。对美稍微有一点追求的程序员只要写过一次Symbian的代码,肯定就不想再碰第二次了。搞笑的是诺基亚还拉来一群猪组团跟微软斗,叫Symbian联盟。一群猪加起来也还是猪,被打散了之后,诺基亚乱了阵脚,开始乱收购公司来跟微软对抗,QT就是一个例子。其本质是诺基亚这个公司没有软件基因,没有系统开发能力。反过来看微软,其实在智能手机的战斗中,微软并没有推出什么革命性的东西,只是在吃Pocket PC的老本。当然,这个老本就够把猪对手打翻的。不是微软强,是诺基亚太弱了。

还有一个对手是加拿大RIM的黑莓。其实黑莓跟微软并没有非常正面的冲突。黑莓最早压根就不是个手机,只是个能随手收邮件的机器。美国人嗜电子邮件如命,就像中国人嗜QQ一样。如果2000年左右能有个卖几百块钱,能且只能聊QQ的移动设备,那估计也会大卖。后来才加了手机功能。黑莓主要占领了企业市场,CEO最爱。但是微软一直笃信从大多数人那里赚少量的钱。跟我D一样,农村包围城市,比较恶俗的东西喜欢的人比较多,微软喜欢下里巴人,不喜欢阳春白雪,正所谓曲高和寡。Oracle之于SQL Server,Windows之于Mac,都是一样的道理。所有美国高管人手10部黑莓又能咋地。何况很多黑莓还是公司给配的,滋生了一批双机党,再买个手机私用。市场还没发展到WM跟黑莓全面正面冲突的时候,神一般的对手就杀到了。

iPhone出来之前,大家都以为苹果要做一个能打电话的iPod,毕竟当年苹果能赚钱的也就是iPod。有这种观点的人,真是把苹果看成波导,把iPhone看成“天语音乐手机”了。苹果1挑n,两记重拳把WM,Symbian等一干人等都打翻在地。第一代iPhone告诉了世人手机上的人机交互应该这么玩,笼络了用户;第二代iPhone及随之而来的App Store告诉了码农手机上的软件发布应该这么玩;笼络了开发者。这两个是iPhone革命性的创新。这个时候,CE的10年积累反倒成了累赘,最主要的原因Phone is PC这个假设是不对的。这个我以前的文章分析过,就不展开了。一波未平,一波又起。被打翻在地的Windows Mobile还没起身,又被安Google的Android踩上了一脚,永世不得翻身了。微软毕竟是微软,壮士断腕。舍弃了WM,重新开发了WP7。WP7还是基于Windows CE的,但是对CE做了层层封装,已经根本看不出CE的样子来了。

为什么讲这么多CE在PDA跟手机领域的发展历史,因为操作系统本身并不能创造生产力,要让一个系统产生价值,一定要由应用来推动,CE的定位是通用操作系统,越通用越没用,就像哲学一样让大家觉得很空,必须要发展出基于CE的专用系统才行。Windows CE的发展也是一直是靠应用的推动在发展。应用是科技发展的推动力。比方说你要开发一个操作系统,我想给操作系统开发一个很酷的新特性。如果开发出来这些特性没有应用需要,你开发它干吗?开发出来也成了太阳能手电筒了,虽然很酷,但没用。回顾CE的发展历程,H/PC,Pocket PC,SmartPhone还有Windows Mobile是CE发展的最大推动力,很多版本的CE的新特性都是为了这几个应用而生的,而这些应用平台上的一些特性又反过头来反哺CE。比如6.0的大内存,比如arm版device emulator,比如有特色的电源管理,比如exchange/push mail等。现在,这个最大的驱动力没了!

CE 7最大的特性是Native Silverlight,用native code(C++/COM)来写Silverlight很酷的界面。听着耳熟?对,这不是被某些人吹上天的Win 8上的用户体验救世主兼C++救世主WinRT么?可惜的是目前的Windows Phone 7不在用,而在用managed code写界面。看上去是不是好像有点搞反了?范伟的名言,你等会,有点乱,我缕一下。本来资源受限的手机系统WP7却在采用managed code写代码,资源相对充裕的desktop/laptop/tablet却在采用native code写代码。这,这是什么情况?觉悟了吧,WP7用managed code仅仅是权宜之计。等待Windows 8瓜熟蒂落,下一代Windows Phone直接把底下的CE内核换成NT内核,Desktop/Laptop/Tablet/Phone,所有平台都是用一个Windows 8!这才是微软的构想。这才是真的Write once, run everywhere。写一个程序,在平板,在桌面,在笔记本,在上网本,在手机,在游戏机上都能跑。

构想相当宏伟壮丽。等会,本文的主角,Windows CE怎么办?

前文已经说过,Windows CE已经失去了最大的发展推动力。就像在海上航行的小船,没有了动力,只能随波逐流,随风漂泊,一个大浪打过来,有可能就要葬身鱼腹了。 而且Windows也开始支持ARM CPU了,这无疑跟自家小弟抢饭碗。好吧,我们再来重新检视一下Windows CE还剩下多少“遗产”。

  1. 可定制。定制另一个说法叫裁剪,就是把一个整系统给阉割掉一些功能。为什么要裁剪,资源不够才需要裁剪,否则就放一个完整系统,多好。

  2. MIPS跟SH CPU支持。MIPS还有人用么?SH是啥CPU,搞CE这么多年,我从来没见过真的SH。

  3. 实时性很好的内核。独特优势,但是实时性应用占整个应用比例很少(Linus语)。

  4. Headless Device支持。没了界面,怎么跟Linux比,Linux是天生headless。

  5. 便宜。这个能便宜的过Android么?何况国内还有一堆不花钱用的。

  6. Win32兼容。对于码龄10年以上的老码农,像我,可能还有点诱惑力。

  7. 电源管理。适合电池供电设备,但是如果win8可以跑在平板上,这个也不会完全没有考虑。

  8. 部分源代码开放。对发展本身关系不大,Windows内核的源代码也已经以学术的名义开源了好几年了,网上都可以下,有影响么?

如此看来,Windows CE一时半会不会挂掉,但是它的应用领域可能会被大大的压缩。从手机/平板/PDA这个光环笼罩的大舞台上走下来,CE也就丧失了80%的市场。剩下的呢?可能会被压缩在工控,医疗等一些边缘化领域。毫无疑问未来几年,CE要从波峰滑倒波谷了。

那么有没有可能起死回生,原地复活呢?得看未来有没有什么像手机一样的有巨大影响力的应用来推动了。如果有的话,还是我笃信的嵌入式发展将要攻克的三个堡垒里面的后两个——数字电视,跟智能汽车。不过现在看来,微软用来占领数字电视的设备似乎是XBOX,而不是CE。汽车么,微软一直在跟福特等几个公司在谈在做。至于会不会爆发那就不是短期能看出苗头的事情了。

还有啥要交代的么?学院那门《Windows CE嵌入式系统》的课怎么办?我看2012年入学的培养计划里面还有这门课,学校大纲调整总是滞后好多年。

不负责任的说,好办,反正现在国内的大学里面净教过时的东西,早就过时的16位的汇编语言,foxpro,VB6,Delphi,甚至Dreamweaver都允许教,为啥不允许我教即将过时的CE?反正可以狡辩是掌握原理么,好像一扯到原理就可以瞬间变成永恒。负责任一点,可以与时俱进,两头肥,中间细,多讲ARM跟WP7,少讲CE本身。或者干脆停课把Linux/Android学扎实。

————————————————————–

最后,必须说一句了,本文仅代表个人观点。不代表Microsoft/Google/Apple等任何公司。