2017年3月10日 星期五 晴

不管怎样,后来我还是离开了Z公司。我不是骑驴找马的人,我每次离职都是先辞职,然后过1~6个月才去上班的。我第一次辞职后,面试了很多单位,有做游戏的,有做协议栈的,有做浏览器的,当然也有手机。我那时比较想做游戏开发,这是我小时候就有的愿望,可惜换行跳槽给的薪水不高,我还是老老实实做手机了。如果现在能回到那个时候,我愿意去互联网和金融公司,薪水低都没关系。

 那些年,手机设计公司都活得很好,薪资和奖金都很高。MTK平台已经在国内崭露头角了,MTK一开始是找过Z公司这样的,但Z公司觉得名气没有TI/ADI/高通那样响,就没理MTK。

 MTK平台真的很简单,MTK都帮做好基本的功能了,做参考设计的基础上一个资质很普通的软件熟练工稍微替换图片和铃声就能出货了,不需要开发什么特别的软件功能。

 倘若要和同类产品搞差异化,那就做高仿界面,比如高仿三星UI。功能机没啥特色,再后来就有杭州斯凯这样的公司帮着做内置的软件(免费移植,支持高仿UI界面,特色墙纸,手机QQ、手机MSN、电子书等,主要是靠SP业务收费)。

 如果是大客户需要的,还花钱支持Java(虚拟机公司大概有三家,Jblender等)。功能机手机也能支持FOTA升级,忘了是哪家大公司了,支持差分包升级的。

 倘若有几个大牛做,就可以开发新的功能了。那些年,正是山寨的年代,也是创新的年代,双卡双待、双蓝牙、双摄像头、双电池、八喇叭等都是这个时代的产品。

 回想当年,我也是弄潮儿,我们创造性地搞了双卡双待双通,当时MTK还没支持,我们做了GSM(MT6260)+GSM(MT6223C)双通,还做了GSM+TD双通。通俗地说,所谓双卡双待双通,你可以想象为两个手机绑在一起,通过一些线路连在一起通信,一个为主机,另一个为从机。从省电的角度,平时灭屏待机的情况下主机和从机都是睡眠的,需要通信时,再唤醒对方起来干活。道理大家都懂,但具体怎么干就应该五花八门了,后来我有听说过相互发AT命令的,感觉还是我的设计简洁可靠。

为了帮助理解,我画了个框架图:
双卡双待.png

说明如下:

  1. 蓝色的线表示原来底层和人机界面的消息交互图,假设从机底层对上层发了个请求REQ_COFFEE_FROM_B“我是从机,我我想要杯咖啡”,上层回复RSP_COFFEE_FROM_B响应“好的,给你一杯咖啡”。

  2. 从机红色打叉的部分表示切断了之前的联系,消息被中间层截获并转发处理了。 比如,从机底层对上层发了个请求REQ_COFFEE_FROM_B“我是从机,我想要杯咖啡”,此时中间层截获,把这条REQ_COFFEE_FROM_B消息原封不动地发给主机,主机A收到后又发给主机的上层处理,主机处理后,返回一条RSP_COFFEE_FROM_B给到主机A的中间层,主机A的中间层又转发给从机B的中间层,从机B的中间层最后转发RSP_COFFEE_FROM_B给到从机的底层。 在上述过程中,对于从机B来说,从机底层的所有响应都是能得到跟原来一样的响应的。 从机的上层收不到任何消息也没关系,因为从机B是主机A背后的女人,从机B的上层不需要抛头露面,没收到过任何消息也很平静。

  3. 对于从机B来说,工作量很小,只需要做好从机的中间层,转发原来的消息就好。 对于主机A来说,需要做好中间层转发,此外,上层做原来主机消息(比如REQ_COFFEE_FROM_A)的基础上,多做一下从机消息(比如REQ_COFFEE_FROM_B)的兼容处理就好。不用再研究从机的AT指令了。

  4. 主机和从机的通信消息主要有:从机的信号强度、从机的来电处理、从机的短消息处理、从机的蓝牙消息处理等。

  5. 主机和从机的通讯,主要靠中断来唤醒。为了保证消息的可靠性,需要考虑CRC消息的校验以及重发机制。

基于我的思路,Z老大迅速做出雏形,之后就由我和蒙蒙等来实现完善了。这是我看到Z老大写的最后一次拿得出手的代码了,当我离开Z老大后,我再也没有我能做技术上膜拜的同事了。

MTK功能机后面功能越来越丰富,能玩java或者C写的小游戏,能看电子书,能放mp3,能用浏览器上wap,能上QQ和msn。定位公版市场的,可以一两个软件人员就能迅速出货;定位品牌客户的,则需要很多软件人员来做深度定制。第三方也基本是免费或者给钱设计公司合入的,他们都要赚SP的钱。