第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內核的技術驗證報告》,被加密後,通過一個特殊的渠道,直接發送到了灣省新竹科學園,聯發科總部副總裁的私人郵箱裡。
本章未完,點選下一頁繼續閱讀。