当李言乘坐的飞机在万米高空,划开太平洋上空厚重的云层,向著东方破晓的晨光飞驰时,深圳南山科技园,位於科兴科学园18层的“星辰之心”研发中心,正被深夜的寂静和浓厚的咖啡苦香所笼罩。
时间,凌晨两点。
巨大的开放式工作区里,只亮著几盏孤零零的檯灯,光晕之下,是一张张因极度专注而显得有些苍白的脸。
空气中瀰漫著一股奇特的气味,是焊锡膏加热后散发的松香、过载的伺服器风扇吹出的暖风、以及不知是第几杯的速溶咖啡混合而成的味道。
这里,是代號“启明星”的软体团队所在地。
“不行!还是不行!內核一加载到引导地址,就直接崩溃了!连个错误代码都没有!”
一个名叫刘宇的年轻工程师猛地將手中的滑鼠推开,靠在椅背上,烦躁地抓了抓自己那本已乱成一团的头髮。
他眼窝深陷,双眼布满血丝,面前的三块显示器上,布满了密密麻麻、如同天书般的底层代码和编译日誌。
他身边,几个同样年轻的同事也是一脸的疲惫与沮—丧。
在过去的一个多月里,这支由韩立博士亲自挑选、堪称国內最顶尖的嵌入式系统开发团队,正在进行一项近乎疯狂的、不为人知的秘密挑战一在李言的直接授意下,他们试图將谷歌刚刚开源不久的android0.9系统內核,移植到一颗联发科(k)的功能机晶片平台上。
这在2008年的任何一个业內人士看来,都是一个彻头彻尾的、荒谬的笑话。
这无异於要將一架波音747的喷气式发动机,硬塞进一辆夏利轿车的引擎盖里。
k的功能机平台,如当时星辰s1/s2所使用的6226系列,其核心架构是ar
7td。
这种架构简单、高效、功耗极低,但它缺少一个关键的部件—u(內存管理单元)。
而android系统所基於的linu內核,从诞生之初,就是为拥有u的、更高级別的ar9或x86架构设计的。
没有u,意味著无法实现虚擬內存、进程隔离这些现代作业系统的基本功能o
“韩博,”刘宇转过头,看向不远处那个始终保持著镇静的身影,声音里带著一丝泄气,“我们是不是————在做一件根本不可能完成的事?这个硬体平台,从根上就和安卓不兼容。我们每解决一个编译错误,就会冒出来十个新的。这就像在一个漏水的木桶里,试图把水装满。”
韩立博士没有立刻回答。
他正站在一块巨大的白板前,上面用红蓝黑三色笔,画满了复杂的內核架构图和引导流程图。
他看著那些如同迷宫般的线条,沉默了片刻,才缓缓转过身。
他的脸色同样苍白,眼袋很重,但那双镜片后的眼睛,却异常明亮。
“小刘,大家,”他的声音不高,却很沉稳,有一种能安抚人心的力量,“李总在布置这个任务的时候,说过一句话。他说,他不指望我们能把这辆夏利送上天,他要的,是让我们通过拆解和重组这台波音发动机,把我们自己,变成一群真正懂得造发动机的人。”
他走到刘宇的工位旁,看著屏幕上那片令人绝望的红色错误提示。
“这个任务,本身就不是为了商业量產。它的唯一目的,是练兵。是让我们在k的第一代智慧型手机平台方案到来之前,把安卓这个黑匣子”,从最底层的每一行代码、每一个驱动、每一个协议开始,彻底吃透。”
他拍了拍刘宇的肩膀:“我们现在遇到的每一个不可能”,都是未来我们在6516平台上,能够领先竞爭对手一步的资本”。別人还在等著k餵饭,而我们,要学会自己做饭。”
他的一番话,让实验室里压抑的气氛稍稍缓和了一些。
年轻的工程师们脸上虽然依旧疲惫,但眼神里重新燃起了一丝斗志。
“好了,”韩立博士推了推眼镜,“都別钻牛角尖了。既然常规的引导方式走不通,我们就换个思路。老王,你那边对k的固件反编译,有什么进展?”
角落里,一个年纪稍长的、头髮花白的工程师抬起头,他的面前摆著一台拆开的星辰a1,各种数据线连接到一台逻辑分析仪上。
“进展不大,韩博。k的固件加密和校验机制非常复杂。但是————我发现了一个有趣的地方。”
他將屏幕转向眾人:“它的bootloader在加载內核前,会对一个特定的內存地址进行一次硬体自检。如果这个地址的数据异常,就会进入一个极少被触发的、用於工厂底层调试的安全模式”。在这个模式下,大部分的硬体校验都会被临时屏蔽掉。”
韩立博士的眼睛猛地一亮!
他快步走到老王身后,死死地盯著屏幕上那段晦涩的汇编代码。