天下无难事,唯坚忍两字为成功之要诀——黄兴。
所以,困难犹如一块石头,你一锤子砸下去,如果石头不碎,那就第二锤、第三锤......直到石头被砸碎为止!
大家都去吃晚饭了,但我没有同去,而是静心寻找其死机的原因,因为我这个人有个特点,就是遇到问题了,宁可不吃饭也要先把问题找出来。
很快,我找到死机的原因了,而就在此时,大伙吃完饭回来了。
“x,你怎么没有去吃饭啊?!”tom一进门,就冲我嚷道。
现在我已经变成了他最关心的人了,因为展会上是我说的:明天会给出答案,而我这个人的信誉很好,平时从不作任何无法兑现的承诺,因此tom自然把“宝”压在了我的身上。
更重要的是:找出问题不是关键,关键在于是不是能在虽短的时间内解决问题,因为如果不能解决“死机”的问题,那么at&t肯定是不会看上这样有问题的产品的。
那么tom原本希望通过lunx的cwdm系统在ofc的首秀来推动公司下一轮的融资和未来的纳斯达克上市的计划显然要落空了!
然而,我并没有向tom解释为什么我没有去吃晚饭,而是对大声地对大家说道:“我发现造成‘死机’的原因了!”
大家一听我找到问题了,都兴奋地围了上来。
tom更是迫不及待地问道:“whathappened?(什么原因)”
在所有的人中,tom的心情最迫切,因为他是lunx的创始人,成功了,他的收益最大,失败了,他承受的压力自然也最大!
“因为负责下载更新软件的启动程序被冲了!”我看了一眼焦急地看着我的tom,简短地对大家说道。
“howcan?!(怎么可能)”大家听我这么说,就几乎异口同声地失声问道。
因为在大家的认知里,启动程序是不允许更新的,且软件中也没有任何代码会把下载的内容写到启动程序的存储空间中去。
“因为断电造成的干扰!拔电源时,是一个机械动作,即电源插头和插座的连接并不是像刀切那样被一刀两断,而是会在断开和重新连上之间进行机械震荡,这是为什么有时候我们拔电源插头时会看到火花的原因。”我先为大家做了一个关于机械开关在开关时会发生什么的科普。
“而正是这个机械震荡,在光通信系统的电源中形成了一个脉冲干扰,如果这个干扰足够强,且又正好发生在往固态存储器中进行写操作的过程中,那么就有可能会搅乱了微处理器在进行固态存储器的写操作时的地址线,大部分情况下,受到干扰的地址线中的很多位会变成零,而启动程序正好处于整个存储空间的底部区域,这样就会导致原有的启动程序代码被下载下来的内容覆盖的情况。”
机械开关在开关的过程中会产生机械震荡是一个常识性的问题,但未必每个人都清楚这一点可能造成的后果,于是我向大家详细解释起了整个电源干扰发生的过程和造成的后果。
实际上,这样的问题我遇到不是一次了,差不多十年前,在everinc.,当时的高分辨率显卡随机出现死机问题,就是因为电源开关时的机械震荡形成的脉冲干扰导致的。
大家一听,信了,也服了。因为我讲的并不是什么深奥的东西,大家一听自然明白,只是你听别人讲能明白,要自己想出来那又是一回事了,这要看你的经验是否足够丰富了。
作为一个工程师,经验是非常重要的,而经验的获得,唯有通过解决一个个的疑难杂症才能获得,而我喜欢接受挑战的性格,这让我比一般的美国工程师更快和更多地积累了经验。
“解决的方法也很简单,那就是把启动程序单独放到一个rom中,这样无论发生什么情况,都可以保证启动程序不受影响。”我见大家听明白了,就把解决问题的方法说了出来。
“fantastic!(太神奇了)”tom一听这么简单,原本紧锁的眉头舒展了开来,带头鼓掌道。
但大家高兴了还不到一分钟,马上又发现新的问题了。
“waitaminute!(等一下)”tom的眉头又重新紧锁了起来,说道:“这是不是意味着我们必须修改整个光通信模块的硬件设计和软件系统的结构?”
硬件要改,那是自然的,因为原来的设计中没有这么一个单独的rom存在。
软件结构要改,因为原来启动程序是整个光通信模块中的软件系统的一部分,并不是完全独立的,现在要独立出来,这样一来,启动程序和控制管理程序之间就存在一个控制权转移的问题,这就要改软件系统的结构了,而软件系统最怕的就是改结构。
大家一听tom这么说,也傻了,因为ofc只有短短的一周时间!
包括at&t的人明天还要看结果呢!而at&t是通信行业内最重要的客户。
所以,如果不能在最短的时间内解决问题——最好是今晚就解决,否则这次ofc等于白来了!
“只需修改软件的框架,而硬件则不用改,只需把其中的一片32kb固态存储器改成32kb的rom就行了,因为两片32kb的固态存储器我只用了其中的一片,还有一片完全空着没用。”我听tom问到是不是要改硬件设计,就摇摇头说只需改软件,硬件可以不用改。
原来,每块光通信模块都有64kb的存储空间,由两片32kb的固态存储器构成。
由于我当年是从只有4kb存储空间四位微处理器起步的,因此已经习惯了尽可能地优化和压缩代码,所以64kb的存储空间我只用了其中的20kb的空间。
换句话说,还有一片32kb的固态存储器完全空着,因此只需用一片32kb的rom来简单替代就行,因为固态存储器和rom的管脚排列是一样的。
tom一听硬件不用改,只需改软件,不禁转忧为喜,因为如果要改硬件,那铁定明天是完成不了的,而如果只改软件,那就还有可能,于是他看了一下手表,对琳达说道:
“ok!琳达,你马上打电话通知robinson,让他马上去仓库,拿上几片32kb的rom,连夜开车送来ofc!”
robinson是lunx公司中负责仓库管理的经理。
这时大家的目光都集中到了琳达身上,因为大家仿佛都看到了希望,因为这是唯一的解决方法,而琳达目前是代理项目经理,因此自然应该是由她去负责协调此事了。
“waitaminute!(等一下)”就在大家认为问题解决了的时候,突然一位前来为ofc保驾护航的硬件工程师发言了:“仓库中没有32kb的rom,因为我们从来都是只用固态存储器,不用rom!”
这位硬件工程师说的没错,因为rom是一次性写入的,如果要修改程序,那只能换一片新的rom,这样就太浪费了,因此在进行硬件设计时,选择了固态存储器,没有选择用rom,所以仓库中自然不会有rom了!
tom一听,又傻了,大家也都又傻了,刚刚燃起的一丝希望,又被一盆冷水给浇灭了。
因为软件的框架改动,虽然工作量大,但努力一下还有成功的可能,而硬件,没有rom,那是巧妇难为无米之炊!
屋内一片寂静。
大家面面相觑,束手无策。
“我有一个办法!”我突然打破了沉默,缓缓地说道。
这好比在一间充满可燃气体的屋子里投入了一颗火星。
“你有办法?”大家不约而同的向我投来怀疑的目光,惊问道。
“只需把固态存储器的‘写入控制线’割断,然后用一颗电阻把割断后的‘写入控制线’拉高就行了。”我慢条斯理的说着我的解决方案。
“goodidea!(好主意)”前来为ofc保驾护航的那位硬件工程师一听,拍了一下大腿,高声惊叹道。
原来,固态存储器和rom的区别就在于前者有一根“写入控制线”,因此在微处理器的控制线可以把内容写到存储器中去,而rom没有这根“写入控制线”,因此只能通过专用的设备一次性把内容写到rom中去。
这是个常识性的问题,作为一个资深的硬件工程师自然是知道的,但知道是一回事,到了危急关头,能不能想起来——包括用起来,那是另一回事!
就这样,硬件问题被轻易解决了,剩下的就是修改软件框架的问题了。
“x,你有把握一个晚上完成这软件框架的修改吗?”tom看硬件的问题解决了,就问起了我有没有把握在一个晚上把软件的框架给修改好。
“thisisamissionimpossible!(这是一个不可能完成的任务)”这时一同前来ofc的负责软件的工程师听tom这么说,惊叹了一句。
在座的其他几位工程师也发出同样的声音。
“没错,这个工作的工作量正常情况下大约需要七个工作日,即使加加班,也至少需要三到四个工作日。”我看着tom,表示赞同刚才那位负责软件的工程师的说法,说话时面无表情。
我没有说我能完成,还是不能完成,但我告诉了tom修改软件框架的工作量是多少。
在美国,我已经学会了一个人在某些时候,是需要适当地进行一些讨价还价的,否则别人会认为你所付出的一切额外努力都是理所当然的。
“iknow!butyouarex!right(我知道!但你是x!对吗?)”
tom的这话有两层意思:
一层是给我施加压力,即不管这个任务的工作量是多少,都必须在一个晚上完成;
另一层是给我戴了顶高帽子。应当承认tom是一个经验老到的ceo,他深谙“请将不如激将”。
于是我看着tom,一脸认真地说道:“ok.iwilldomybest!(好的,我会尽力而为的)”
“butineedsupport.(但我需要支持)”我又补充道,说话时环视了几个同来ofc的软硬件工程师一眼。
人,有时候还是需要适当地摆点架子的,特别是在关键的时候。
“noproblem!”tom见我答应了,松了一口气,然后又半开玩笑地对两位在座的硬件和软件工程师说道:“youguyskeeponeeyeopenwhilesleeping.(你们俩睡觉的时候也要睁着一只眼睛)”
tom对两位在座的硬件和软件工程师发出了随时准备协助我的命令,接着又转向琳达说道:“youworkwithxandtakeareeverthing.(你负责协助x,包括整体的协调)”
“ok!”两位工程师和琳达一起答道。
tom见一切都安排好了,就站起身来准备离开,临到房门口,突然想起我还没有吃晚饭,于是为了讨好我,就转身对琳达说道:“琳达,gotobuyahamburgerforx.(去帮x买个汉堡包)”
说完,tom仿佛感到这样吩咐琳达不太好,因为琳达好歹也是一个项目经理啊,怎么能叫她去帮我买汉堡包呢?因此就又用开玩笑的口吻加了一句:“youarehisbaby-sitter.right(你是他的保姆,对吗)”
这句玩笑话是当初公司把50%的光通信系统的固件开发任务交给我时,当时tom对琳达说凡是能让我节省时间的事她都要主动去做,因此我的老板frances就开玩笑说这样琳达就像个保姆。
琳达听了后笑了,大家也都笑了。自从这天起,琳达是我的保姆这句笑话,就在lunx的工程师中传开了。
就这样,我接下了当时大家都认为几乎不可能完成的任务,我知道,我将迎来一个对lunx来说至为关键、同时也是最为困难的一个夜晚......
最为困难之时,就是离成功不远之日——拿破仑。
【下章看点】
夜深人静,大家都去睡了,只剩下孤男寡女的x和琳达两人一起在ofc的宾馆房间内挑灯夜战......结果怎样了?
欲知详情,请见下一章分解。