第97章 韩博士的突破与MTK的橄榄枝(1/2)
当李言乘坐的飞机在万米高空,划开太平洋上空厚重的云层,向着东方破晓的晨光飞驰时,深圳南山科技园,位于科兴科学园18层的「星辰之心」研发中心,正被深夜的寂静和浓厚的咖啡苦香所笼罩。
时间,凌晨两点。
巨大的开放式工作区里,只亮着几盏孤零零的台灯,光晕之下,是一张张因极度专注而显得有些苍白的脸。
空气中弥漫着一股奇特的气味,是焊锡膏加热后散发的松香、重载的服务器风扇吹出的暖风、以及不知是第几杯的速溶咖啡混合而成的味道。
这里,是代号「启明星」的软件团队所在地。
「不行!还是不行!内核一加载到引导地址,就直接崩溃了!连个错误代码都没有!」
一个名叫刘宇的年轻工程师猛地将手中的鼠标推开,靠在椅背上,烦躁地抓了抓自己那本已乱成一团的头发。
他眼窝深陷,双眼布满血丝,面前的三块显示器上,布满了密密麻麻、如同天书般的底层代码和编译日志。
他身边,几个同样年轻的同事也是一脸的疲惫与沮—丧。
在过去的一个多月里,这支由韩立博士亲自挑选、堪称国内最顶尖的嵌入式系统开发团队,正在进行一项近乎疯狂的、不为人知的秘密挑战一在李言的直接授意下,他们试图将谷歌刚刚开源不久的Android0.9系统内核,移植到一颗联发科(MTK)的功能机芯片平台上。
这在2008年的任何一个业内人士看来,都是一个彻头彻尾的、荒谬的笑话。
这无异于要将一架波音747的喷气式发动机,硬塞进一辆夏利轿车的引擎盖里。
MTK的功能机平台,如当时星辰S1/S2所使用的MT6226系列,其内核架构是ARM
7TDMI。
这种架构简单、高效、功耗极低,但它缺少一个关键的部件—MMU(内存管理单元)。
而Android系统所基于的Linu内核,从诞生之初,就是为拥有MMU的、更高级别的ARMv9或X86架构设计的。
没有MMU,意味着无法实现虚拟内存、进程隔离这些现代操作系统的基本功能O
「韩博,」刘宇转过头,看向不远处那个始终保持着镇静的身影,声音里带着一丝泄气,「我们是不是————在做一件根本不可能完成的事?这个硬件平台,从根上就和安卓不兼容。我们每解决一个编译错误,就会冒出来十个新的。这就像在一个漏水的木桶里,试图把水装满。」
韩立博士没有立刻回答。
他正站在一块巨大的白板前,上面用红蓝黑三色笔,画满了复杂的内核架构图和引导流程图。
他看着那些如同迷宫般的线条,沉默了片刻,才缓缓转过身。
他的脸色同样苍白,眼袋很重,但那双镜片后的眼睛,却异常明亮。
「小刘,大家,」他的声音不高,却很沉稳,有一种能安抚人心的力量,「李总在布置这个任务的时候,说过一句话。他说,他不指望我们能把这辆夏利送上天,他要的,是让我们通过拆解和重组这台波音发动机,把我们自己,变成一群真正懂得造发动机的人。」
他走到刘宇的工位旁,看着屏幕上那片令人绝望的红色错误提示。
「这个任务,本身就不是为了商业量产。它的唯一目的,是练兵。是让我们在MTK的第一代智能型手机平台方案到来之前,把安卓这个黑匣子」,从最底层的每一行代码、每一个驱动、每一个协议开始,彻底吃透。」
他拍了拍刘宇的肩膀:「我们现在遇到的每一个不可能」,都是未来我们在MT6516平台上,能够领先竞争对手一步的资本」。别人还在等着MTK喂饭,而我们,要学会自己做饭。」
他的一番话,让实验室里压抑的气氛稍稍缓和了一些。
年轻的工程师们脸上虽然依旧疲惫,但眼神里重新燃起了一丝斗志。
「好了,」韩立博士推了推眼镜,「都别钻牛角尖了。既然常规的引导方式走不通,我们就换个思路。老王,你那边对MTK的固件反编译,有什么进展?」
角落里,一个年纪稍长的、头发花白的工程师擡起头,他的面前摆着一台拆开的星辰A1,各种数据线连接到一台逻辑分析仪上。
「进展不大,韩博。MTK的固件加密和校验机制非常复杂。但是————我发现了一个有趣的地方。」
他将屏幕转向众人:「它的Bootloader在加载内核前,会对一个特定的内存地址进行一次硬件自检。如果这个地址的数据异常,就会进入一个极少被触发的、用于工厂底层调试的安全模式」。在这个模式下,大部分的硬件校验都会被临时屏蔽掉。」
韩立博士的眼睛猛地一亮!
他快步走到老王身后,死死地盯着屏幕上那段晦涩的汇编代码。
「你的意思是————」
「我的意思是,」老王的脸上露出了一丝属于老技术宅的、狡黠的笑容,「我们或许————可以给它喂」一段伪造的自检数据,骗它进入安全模式」。然后,在这个没有任何守卫」的模式下,再强行把我们那个阉割版的Linu内核,灌进去。」
整个实验室,瞬间陷入了死一般的寂静。
所有工程师都停下了手中的工作,目光聚焦在老王的屏幕上。
这个思路,简直是————胆大包天!
这无异于一个盗贼,不去费力地破解银行金库的密码,而是通过伪造煤气管道泄漏的警报,骗得整个安保系统关闭,然后大摇大摆地走进去。
「试!」韩立博士只说了一个字,声音里带着难以抑制的兴奋。
接下来的48小时,整个软件团队进入了一种近乎疯狂的、不眠不休的冲刺状态。
他们将这个思路分解成数十个细分的任务,分组攻关。
有人负责编写伪造的硬件自检代码,有人负责将本已精简的Linu内核,进行新一轮更加残酷的「阉割」,砍掉所有非必要的模块,使其体积压缩到能在MTK那小得可怜的SRAM中勉强运行。
时间一分一秒地过去。失败,调试,再失败,再调试————
周三的深夜,当李言的飞机平稳地降落在香港国际机场时,深圳的「星辰之心」研发中心里,爆发出了一声压抑的、如同野兽般的欢呼!
在经历了上百次的失败后,那台连接着无数测试线的星辰A1工程样机,黑色的屏幕在闪烁了几下之后,中央位置,缓缓地、艰难地,亮起了一行白色的、像素感极强的英文小字:
Hello, StarOS.
屏幕的亮度很低,甚至有些偏色,但那微弱的光芒,在所有工程师布满血丝的眼中,却比任何超新星的爆发,都要来得更加璀璨和震撼!
「亮了————亮了!真的亮了!」刘宇几乎是从椅子上跳了起来,抱着身边的同事,又笑又叫,像个孩子。
韩立博士靠在白板上,长长地、长长地舒了一口气。他感觉自己全身的力气都被抽干了,但一种巨大的、难以言喻的成就感,如同温暖的潮水,瞬间淹没了他。
他们做到了。
他们在一片所有人都认为不可能的荒原上,硬生生地点燃了第一堆篝火。
第二天上午,一份标题为《关于在MTK功能机平台(MT6226A)成功移植并运行精简版Android0.9内核的技术验证报告》,被加密后,通过一个特殊的渠道,直接发送到了湾省新竹科学园,联发科总部副总裁的私人邮箱里。
本章未完,点击下一页继续阅读。