二百零六、破困局X單騎救主,當助手琳達通宵陪伴(1 / 1)

天下無難事,唯堅忍兩字為成功之要訣——黃興。   所以,困難猶如一塊石頭,你一錘子砸下去,如果石頭不碎,那就第二錘、第三錘......直到石頭被砸碎為止!   大家都去吃晚飯了,但我沒有同去,而是靜心尋找其死機的原因,因為我這個人有個特點,就是遇到問題了,寧可不吃飯也要先把問題找出來。   很快,我找到死機的原因了,而就在此時,大夥吃完飯回來了。   “X,你怎麼沒有去吃飯啊?!”Tom一進門,就沖我嚷道。   現在我已經變成了他最關心的人了,因為展會上是我說的:明天會給出答案,而我這個人的信譽很好,平時從不作任何無法兌現的承諾,因此Tom自然把“寶”壓在了我的身上。   更重要的是:找出問題不是關鍵,關鍵在於是不是能在雖短的時間內解決問題,因為如果不能解決“死機”的問題,那麼AT&T肯定是不會看上這樣有問題的產品的。   那麼Tom原本希望通過LunX的CWDM係統在OFC的首秀來推動公司下一輪的融資和未來的納斯達克上市的計劃顯然要落空了!   然而,我並沒有向Tom解釋為什麼我沒有去吃晚飯,而是對大聲地對大家說道:“我發現造成‘死機’的原因了!”   大家一聽我找到問題了,都興奮地圍了上來。   Tom更是迫不及待地問道:“What happened?(什麼原因)”   在所有的人中,Tom的心情最迫切,因為他是LunX的創始人,成功了,他的收益最大,失敗了,他承受的壓力自然也最大!   “因為負責下載更新軟件的啟動程序被沖了!”我看了一眼焦急地看著我的Tom,簡短地對大家說道。   “How can?!(怎麼可能)”大家聽我這麼說,就幾乎異口同聲地失聲問道。   因為在大家的認知裡,啟動程序是不允許更新的,且軟件中也沒有任何代碼會把下載的內容寫到啟動程序的存儲空間中去。   “因為斷電造成的乾擾!拔電源時,是一個機械動作,即電源插頭和插座的連接並不是像刀切那樣被一刀兩斷,而是會在斷開和重新連上之間進行機械震蕩,這是為什麼有時候我們拔電源插頭時會看到火花的原因。”我先為大家做了一個關於機械開關在開關時會發生什麼的科普。   “而正是這個機械震蕩,在光通信係統的電源中形成了一個脈沖乾擾,如果這個乾擾足夠強,且又正好發生在往固態存儲器中進行寫操作的過程中,那麼就有可能會攪亂了微處理器在進行固態存儲器的寫操作時的地址線,大部分情況下,受到乾擾的地址線中的很多位會變成零,而啟動程序正好處於整個存儲空間的底部區域,這樣就會導致原有的啟動程序代碼被下載下來的內容覆蓋的情況。”   機械開關在開關的過程中會產生機械震蕩是一個常識性的問題,但未必每個人都清楚這一點可能造成的後果,於是我向大家詳細解釋起了整個電源乾擾發生的過程和造成的後果。   實際上,這樣的問題我遇到不是一次了,差不多十年前,在Everex Inc.,當時的高分辨率顯卡隨機出現死機問題,就是因為電源開關時的機械震蕩形成的脈沖乾擾導致的。   大家一聽,信了,也服了。因為我講的並不是什麼深奧的東西,大家一聽自然明白,隻是你聽別人講能明白,要自己想出來那又是一回事了,這要看你的經驗是否足夠豐富了。   作為一個工程師,經驗是非常重要的,而經驗的獲得,唯有通過解決一個個的疑難雜癥才能獲得,而我喜歡接受挑戰的性格,這讓我比一般的美國工程師更快和更多地積累了經驗。   “解決的方法也很簡單,那就是把啟動程序單獨放到一個ROM中,這樣無論發生什麼情況,都可以保證啟動程序不受影響。”我見大家聽明白了,就把解決問題的方法說了出來。   “Fantastic!(太神奇了)”Tom一聽這麼簡單,原本緊鎖的眉頭舒展了開來,帶頭鼓掌道。   但大家高興了還不到一分鐘,馬上又發現新的問題了。   “Wait a minute!(等一下)”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公司中負責倉庫管理的經理。   這時大家的目光都集中到了琳達身上,因為大家仿佛都看到了希望,因為這是唯一的解決方法,而琳達目前是代理項目經理,因此自然應該是由她去負責協調此事了。   “Wait a minute!(等一下)”就在大家認為問題解決了的時候,突然一位前來為OFC保駕護航的硬件工程師發言了:“倉庫中沒有32KB的ROM,因為我們從來都是隻用固態存儲器,不用ROM!”   這位硬件工程師說的沒錯,因為ROM是一次性寫入的,如果要修改程序,那隻能換一片新的ROM,這樣就太浪費了,因此在進行硬件設計時,選擇了固態存儲器,沒有選擇用ROM,所以倉庫中自然不會有ROM了!   Tom一聽,又傻了,大家也都又傻了,剛剛燃起的一絲希望,又被一盆冷水給澆滅了。   因為軟件的框架改動,雖然工作量大,但努力一下還有成功的可能,而硬件,沒有ROM,那是巧婦難為無米之炊!   屋內一片寂靜。   大家麵麵相覷,束手無策。   “我有一個辦法!”我突然打破了沉默,緩緩地說道。   這好比在一間充滿可燃氣體的屋子裡投入了一顆火星。   “你有辦法?”大家不約而同的向我投來懷疑的目光,驚問道。   “隻需把固態存儲器的‘寫入控製線’割斷,然後用一顆電阻把割斷後的‘寫入控製線’拉高就行了。”我慢條斯理的說著我的解決方案。   “Good idea!(好主意)”前來為OFC保駕護航的那位硬件工程師一聽,拍了一下大腿,高聲驚嘆道。   原來,固態存儲器和ROM的區別就在於前者有一根“寫入控製線”,因此在微處理器的控製線可以把內容寫到存儲器中去,而ROM沒有這根“寫入控製線”,因此隻能通過專用的設備一次性把內容寫到ROM中去。   這是個常識性的問題,作為一個資深的硬件工程師自然是知道的,但知道是一回事,到了危急關頭,能不能想起來——包括用起來,那是另一回事!   就這樣,硬件問題被輕易解決了,剩下的就是修改軟件框架的問題了。   “X,你有把握一個晚上完成這軟件框架的修改嗎?”Tom看硬件的問題解決了,就問起了我有沒有把握在一個晚上把軟件的框架給修改好。   “This is a impossible!(這是一個不可能完成的任務)”這時一同前來OFC的負責軟件的工程師聽Tom這麼說,驚嘆了一句。   在座的其他幾位工程師也發出同樣的聲音。   “沒錯,這個工作的工作量正常情況下大約需要七個工作日,即使加加班,也至少需要三到四個工作日。”我看著Tom,表示贊同剛才那位負責軟件的工程師的說法,說話時麵無表情。   我沒有說我能完成,還是不能完成,但我告訴了Tom修改軟件框架的工作量是多少。   在美國,我已經學會了一個人在某些時候,是需要適當地進行一些討價還價的,否則別人會認為你所付出的一切額外努力都是理所當然的。   “I know! But you are X!Right ?(我知道!但你是X!對嗎?)”   Tom的這話有兩層意思:   一層是給我施加壓力,即不管這個任務的工作量是多少,都必須在一個晚上完成;   另一層是給我戴了頂高帽子。應當承認Tom是一個經驗老到的CEO,他深諳“請將不如激將”。   於是我看著Tom,一臉認真地說道:“OK.I will do my best!(好的,我會盡力而為的)”   “But I need support.(但我需要支持)”我又補充道,說話時環視了幾個同來OFC的軟硬件工程師一眼。   人,有時候還是需要適當地擺點架子的,特別是在關鍵的時候。   “No problem!”Tom見我答應了,鬆了一口氣,然後又半開玩笑地對兩位在座的硬件和軟件工程師說道:“You guys keep one eye open while sleeping.(你們倆睡覺的時候也要睜著一隻眼睛)”   Tom對兩位在座的硬件和軟件工程師發出了隨時準備協助我的命令,接著又轉向琳達說道:“You work with X and takeare everthing.(你負責協助X,找書苑www.zhaoshuyuan.com 包括整體的協調)”   “Ok!”兩位工程師和琳達一起答道。   Tom見一切都安排好了,就站起身來準備離開,臨到房門口,突然想起我還沒有吃晚飯,於是為了討好我,就轉身對琳達說道:“琳達,go to buy a hamburger for X.(去幫X買個漢堡包)”   說完,Tom仿佛感到這樣吩咐琳達不太好,因為琳達好歹也是一個項目經理啊,怎麼能叫她去幫我買漢堡包呢?因此就又用開玩笑的口吻加了一句:“You are his baby-sitter. Right ?(你是他的保姆,對嗎)”   這句玩笑話是當初公司把50%的光通信係統的固件開發任務交給我時,當時Tom對琳達說凡是能讓我節省時間的事她都要主動去做,因此我的老板Frances就開玩笑說這樣琳達就像個保姆。   琳達聽了後笑了,大家也都笑了。自從這天起,琳達是我的保姆這句笑話,就在LunX的工程師中傳開了。   就這樣,我接下了當時大家都認為幾乎不可能完成的任務,我知道,我將迎來一個對LunX來說至為關鍵、同時也是最為困難的一個夜晚......   最為困難之時,就是離成功不遠之日——拿破侖。   【下章看點】   夜深人靜,大家都去睡了,隻剩下孤男寡女的X和琳達兩人一起在OFC的賓館房間內挑燈夜戰......結果怎樣了?   欲知詳情,請見下一章分解。