红岗花园地下室的空气里,除了原本的霉味和烟味,现在又多了一股酸涩的电解液味道。
陈景明那块软包电池的成功,像是一针强心剂,扎进了这群快要猝死的工程师心口。
但这股兴奋劲儿没撑过十二小时。
“崩了。”
孙强把键盘一推,整个人往椅背上一瘫,椅子发出不堪重负的嘎吱声。
屏幕上是一串红得刺眼的报错代码:`Stack overflow`。
“内存溢出。”孙强抓着本来就不多的头发,指着屏幕上的数据条,“一共就512Kb的内存。操作系统内核占了120K,tcp\/Ip协议栈占了200K,剩下的空间连加载字体库都不够,更别说跑图形界面。”
他转过头,看着坐在角落里敲代码的苏晓月。
“晓月,听我一句劝。砍掉图形界面吧。做成纯字符终端,就像doS那样。虽然丑点,但能跑通。咱们只有二十天,现在已经过去一半了。”
苏晓月没理他。
她盯着屏幕上那个死循环的内存分配函数,眼圈黑得像被人打了两拳。
“不行。”
“为什么不行?诺基亚也是字符界面,爱立信也是!咱们凭什么非要搞图标?这硬件根本带不动!”
“因为老板说了,这是电脑,不是电话。”
苏晓月终于停下手,转过身。她手里捏着半块干硬的面包,那是昨晚剩下的。
“如果是字符界面,老百姓看不懂,那就只能卖给工程师。要想卖给所有人,就必须是图形化。”
“那是理想!”孙强急了,拍着桌子上的开发板,“物理限制摆在这儿!512Kb就是512Kb,你就是把这芯片磨出火星子来,它也变不成1mb!”
屋子里的气氛降到了冰点。
赵立在一旁不敢说话,他是做应用的,底层崩了,他写再好的应用也是空中楼阁。
张汉玉推门进来的时候,正好听到这句咆哮。
他手里提着一袋刚买回来的冰镇可乐,瓶壁上挂满了水珠。
“吵什么?”
张汉玉把可乐分给众人,自己拉过一把折叠椅,坐在孙强对面。
“内存不够?”
“不够。差得远。”孙强指着那个红色的报错条,“除非把协议栈砍了,或者把GUI砍了。二选一。”
张汉玉拧开盖子,喝了一口,凉气顺着喉咙冲下去,激得人一激灵。
“都不砍。”
他拿起那支黑色马克笔,走到白板前。白板上已经密密麻麻写满了待办事项,他在角落里擦出一块空白。
“孙工,你觉得内存是什么?”
“存储数据的容器啊。”
“不,是仓库。”张汉玉画了一个方框,“数据是货物。现在货物太多,仓库塞不下了。常规的思路是扩建仓库,但我们没钱,也没硬件支持。”
他在方框门口画了一个小圆圈。
“既然仓库扩不了,那就把货物变小。”
孙强愣了一下:“压缩?”
“对。动态内存压缩。”
张汉玉在圆圈里写了几个字母:`Z-RAm`。
“数据写入内存之前,先经过这个压缩算法。读取的时候,再解压。用cpU的算力,换内存的空间。”
孙强和赵立对视一眼,都从对方脸上看到了“这人疯了”的表情。
“老板,你知不知道这会增加多少cpU负担?”孙强把可乐顿在桌上,“ARm7的主频只有33mhz!它跑系统都已经气喘吁吁了,你还要让它实时压缩解压?那系统会卡成ppt的!”
“不会。”
张汉玉回答得很笃定。
“因为我们要用的数据,大部分是重复的。比如屏幕上的像素点,大片的白色背景,用行程编码(RLE)压缩,几百个字节能压成几个字节。文本数据用哈夫曼编码,也能压下去一半。”
“至于cpU负载……”张汉玉看向苏晓月,“这就看你们的代码水平了。”
“用c写肯定不行。必须用汇编。”
苏晓月突然开口。
她把手里的干面包扔进垃圾桶,拉过键盘,调出了那个黑底绿字的编辑器。
“把内存管理模块重写。每一条指令都自己扣。不走系统调用,直接操作寄存器。”
孙强张大了嘴巴:“全部?那是几千行汇编代码!容易出错不说,调试起来能要人命!”
“没别的路了。”
苏晓月已经开始敲击键盘。
“要么现在认输,去跟宋志敏低头。要么就拼一把,把这颗cpU的潜力榨干。”
键盘声变得密集起来,像骤雨打在铁皮屋顶上。
张汉玉拍了拍孙强的肩膀:“别愣着了。赵立负责把图标素材做减法,能用16色就别用256色。孙强,你配合晓月,把tcp\/Ip协议栈里的冗余代码剔除,只保留最核心的握手和传输功能。”
孙强看着这两个疯子,咬了咬牙,骂了一句脏话。
“妈的,干就干!大不了这二十天不睡了!”
……
红岗花园的地下室,彻底失去了昼夜的概念。
只有墙上挂钟的指针在一圈圈地转,和角落里堆积如山的空可乐瓶在无声地计数。
代码行数在疯狂增长。
苏晓月的手指上缠着创可贴,那是长时间敲击键盘磨出的水泡破了。
张汉玉不懂汇编,但他懂逻辑。他就坐在苏晓月旁边,盯着屏幕上的流程图,随时纠正逻辑错误。
“这里不行。入栈出栈太频繁,浪费时钟周期。换成寄存器直接寻址。”
“这个循环没必要。展开写,用空间换时间。”
“这里的判断逻辑反了……”
三天。
整整三天三夜。
除了上厕所和扒两口饭,所有人都没有离开过那张桌子。空气浑浊得让人窒息,每个人身上都馊了。
第三天凌晨四点。
苏晓月敲下最后一个回车键。
没有报错。
编译通过。
生成的内核文件大小:380Kb。
比之前足足小了将近一半。
“刷机。”
苏晓月的声音哑得像砂纸磨过桌面。
李建国早就准备好了,颤抖着手把那块自制的开发板连上烧录器。进度条缓慢地爬升,每一格都像是在爬过众人的心尖。
滴。
烧录完成。
张汉玉深吸一口气,按下了那个微动开关。
屏幕黑了一下。
一秒。两秒。三秒。
就在孙强以为又要失败的时候,屏幕亮了。
没有乱码,没有报错。
漆黑的背景中央,一个由像素点组成的红色火焰图案,缓缓浮现。
那是星火科技的Logo。
虽然边缘还有些锯齿,虽然色彩只有简单的红黄两色,但在这一刻,它比任何高清大片都要震撼。
紧接着,火焰散去,一个蓝色的界面跳了出来。
左上角是信号格,右上角是电池图标。中间整整齐齐排列着四个图标:电话、短信、联系人、浏览器。
“卧槽……”
孙强捂住嘴,眼泪毫无预兆地流了下来。
真的跑起来了。
在512Kb的内存里,跑出了图形界面。
这是把大象塞进冰箱,而且大象还在冰箱里跳起了踢踏舞。
“别急着哭。”张汉玉指了指桌上那根连着电脑串口的数据线,“还没联网。”
这是最后一道鬼门关。
如果没有网络,这也就是个高级点的电子宠物。
苏晓月把数据线插好。另一头的电脑上运行着一个模拟GSm网络的服务器程序。
她在开发板那小小的按键上操作着。光标移动,选中了“浏览器”。
点击。
屏幕中央出现了一个沙漏图标,开始旋转。
“正在连接……”
地下室里安静得能听到排气扇扇叶转动的声音。
所有人都屏住了呼吸。
这套自制的tcp\/Ip协议栈,能不能扛住真实的数据交换?那个疯狂的压缩算法,会不会在解压数据包的时候崩溃?
屏幕闪了一下。
一行黑色的文字出现在白色的背景上。
`hello, world!`
“通了!”赵立跳起来,脑袋撞到了低矮的天花板,但他根本顾不上疼,抱着孙强又蹦又跳。
“还没完。”
张汉玉的声音依然冷静,但捏着可乐瓶的手指已经把塑料瓶捏变了形。
“文字只是第一步。宋志敏要看的是图。”
他指了指电脑屏幕:“发那张图过去。”
赵立赶紧在电脑端操作,选择了一张16色的位图。
那是张汉玉特意找人画的——一只在悬崖边展翅的雄鹰。
发送。
开发板的屏幕上,沙漏转得更快了。
数据流通过串口,经过压缩算法,挤进那可怜的内存,再被cpU解压,最后渲染到屏幕上。
这一过程在后世可能只需要几毫秒,但在现在,却是漫长的等待。
屏幕上方开始出现色彩。
先是蓝色的天,然后是灰色的岩石,最后是那只褐色的鹰。
一行行,一列列。
像是在慢慢揭开未来的面纱。
当鹰的翅膀完整地展现在屏幕上时,苏晓月身子一软,直接瘫倒在椅子上。
成了。
真的成了。
他们不仅做出了图形界面,还实现了图片传输。
这台躺在杂乱电线中间的丑陋机器,此刻就是世界上最先进的智能终端。
“牛逼!”
李建国大吼一声,抓起桌上的半瓶可乐就要喷洒庆祝。
就在这时,地下室的门被猛地撞开。
李建国还没来得及喷,就看见另一个李建国——负责去华强北搞硬件集成的“分身”,满脸灰败地冲了进来。
他手里捧着一个黑乎乎的东西,还在冒着青烟。
一股刺鼻的焦糊味瞬间盖过了屋里的酸臭味。
“怎么了?”张汉玉心里咯噔一下,猛地站起来。
“烧了……”
李建国把那个东西扔在桌上。那是一块被烧穿的电路板,上面的芯片已经炸裂,露出了里面的晶圆。
“GSm射频模块……烧了。”
李建国喘着粗气,脸上全是黑灰,那是刚才试图抢救时留下的痕迹。
“咱们的数据吞吐量太大,这玩意儿是给打电话设计的,根本扛不住持续的高频数据传输。刚才我试着连续发了十分钟数据包,温度直接飙到一百度,然后就……”
他指了指那个冒烟的尸体。
“这已经是市面上能买到最好的模块了。西门子的工业级。”
庆祝的欢呼声戛然而止。
孙强的笑容僵在脸上。
苏晓月挣扎着坐直身体,看着那块废铁。
软件通了,系统通了,电池通了。
结果死在了最基础的通信模块上?
没有射频模块,这就是个游戏机,根本不是手机。
“还有几天?”张汉玉看着墙上的日历。
那个红色的圈,近在咫尺。
“五天。”
李建国的声音带着哭腔。
“只有五天了。去国外订货根本来不及,而且……咱们也没钱了。”
死局。
真正的死局。
张汉玉盯着那缕青烟,烟雾在灯光下缭绕,像极了宋志敏那张嘲讽的脸。
五天。
造不出射频芯片。
买不到合适的模块。
难道就要倒在终点线前一米的地方?
“别慌。”
张汉玉把那块烧焦的板子拿起来,指尖传来的余温烫得吓人。
他看着那个炸裂的芯片,脑子里飞快地闪过无数种方案。
既然买不到……
“建国。”张汉玉抬起头,眼神里透着一股狠戾,“把咱们之前拆回来的那几台‘大哥大’都拿过来。”
“你要干嘛?”
“既然没有路,那就拆了别人的桥,搭咱们的路。”张汉玉把板子扔回桌上,发出啪的一声脆响。
“把摩托罗拉的模拟信号功放拆下来。我要手搓一个‘混血’模块。”
“模拟信号?”孙强惊叫,“咱们是数字信号!这根本不兼容!”
“那就写个转码器。”
张汉玉转身,看向已经精疲力尽的苏晓月。
“晓月,还能敲得动吗?”
苏晓月推了推滑落的眼镜,把手放在键盘上。
“只要没死,就敲得动。”
张汉玉嘴角勾起一抹疯狂的弧度。
“好。那咱们就给宋志敏准备一份大礼。一份让他这辈子都忘不了的‘炸弹’。”