第55章 落地

投票推薦 加入書籤 小說報錯

  五月中旬,藍灣通信發來了第一批工程開發用的嵌入式硬體平台。

  兩箱銀灰色的鋁合金機箱,每箱四台,一共八台。每台機箱裡裝著一塊定製的信號處理板卡——雙核DSP加FPGA的異構架構,這是天穹地面終端的核心計算平台。

  張磊拆開第一台機箱的時候,手指都在微微發抖。

  」城哥,這板子的做工也太精緻了吧。」他捧著板卡翻來覆去地看,」比我們實驗室用的開發板高了好幾個檔次。」

  」這是藍灣通信和晶片廠聯合定製的。」左城接過板卡看了一眼絲印,」DSP主頻六百兆赫,FPGA是二十八納米工藝,片上RAM兩兆字節。和我們仿真用的參數模型一致。」

  」一致」這個詞他說得很有信心。但三天後他就知道自己錯了。

  問題出在第一次上板測試。

  方澤把多星管道調度器的代碼移植到DSP上,編譯通過,燒錄成功,啟動運行——然後系統在第十七秒崩潰了。

  」內存溢出。」方澤盯著調試器的輸出,眉頭擰成了一團,」堆棧空間不夠。」

  左城走到他旁邊看了一眼數據。仿真環境裡調度器的峰值內存占用是一點六兆字節,而DSP的片上RAM是兩兆字節,理論上應該夠用。但實際運行時,編譯器生成的代碼比仿真環境的模擬代碼體積大了百分之四十——因為真實的DSP指令集和仿真用的通用指令集不一樣,某些運算需要更多的中間變量和臨時緩衝區。

  一點六兆乘以一點四,等於二點二四兆。超了。

  」仿真和實物之間永遠有gap。」左城的語氣沒有意外,只有冷靜,」這是工程開發階段必須面對的問題。仿真驗證了算法的正確性,但代碼的工程實現必須針對真實硬體重新優化。」

  」怎麼優化?兩兆的RAM是硬限制,改不了。」方澤問。

  」改代碼,不改硬體。」左城坐到方澤旁邊,打開了調度器的原始碼,」第一步,做內存剖析——找出哪些數據結構占了最多的空間。第二步,做數據壓縮——能用短整型的不要用長整型,能復用緩衝區的不要另開新空間。第三步,做代碼瘦身——把編譯器生成的冗餘指令手動優化掉。」

  這三步說起來簡單,做起來是一刀一刀削肉的苦活。

  左城和方澤花了整整一周,把調度器的代碼從頭到尾重寫了一遍。不是改算法——算法不用動——而是改每一行代碼的實現方式,讓它在有限的內存空間裡儘可能高效地運行。

  七天後重新上板。峰值內存占用——一點七八兆。穩了。系統運行了十二個小時,沒有崩潰,沒有溢出,調度器的響應時間和仿真結果完全吻合。

  方澤靠在椅背上長出了一口氣。他的眼鏡片上有兩個明顯的指印——這一周他推眼鏡的頻率比平時高了三倍。

  」這種活兒比寫算法累多了。」他難得抱怨了一句。

  」算法是創造,工程優化是雕刻。」左城說,」兩種累法。」

  但這只是第一個模塊。

  接下來的三周里,同樣的問題在其他三個模塊上依次出現。自適應參數共享引擎的內存問題更嚴重——環形緩衝區在DSP上的對齊要求和仿真環境不同,導致實際占用比預期多了百分之三十。波束協同控制器的問題不在內存,在時序——FPGA的時鐘頻率和仿真的理想時鐘有微小的偏差,導致分層精度切換的判斷邏輯偶爾會錯過一個時鐘周期,造成波束指向的瞬間抖動。

  頻譜感知前端反而是最順利的——因為這個模塊的嵌入式優化在架構設計階段就已經做到位了,定點化、DMA流水線、候選循環頻率預篩選,每一步都是針對真實硬體設計的,上板後只做了幾處寄存器配置的小修改就跑通了。

  」之前砍的那三刀沒白砍。」劉偉感慨了一句。

  六月底,四個模塊全部完成了上板移植和初步聯調。

  左城在白板上更新了進度,第一里程碑的八月節點,目前來看可以按時達成。但中間還有一個關鍵步驟沒有完成:四個模塊之間的聯合測試。

  單獨跑每個模塊都沒問題,但四個模塊同時運行在一塊板卡上、共享同一塊內存、爭搶同一個總線帶寬的時候,會不會出新的問題?

  左城知道答案:一定會!聯調的bug永遠比單模塊測試多,而且往往更隱蔽、更難復現。這是工程開發的鐵律。

  七月初他召開了一次內部會議,把聯調計劃從頭到尾過了一遍。


  」聯調分三輪。」他在白板上畫了一個時間軸,」第一輪:雙模塊聯調,兩兩配對測試兼容性,預計一周。第二輪:三模塊聯調,重點測試資源競爭和時序衝突,預計一周半。第三輪:全鏈路聯調,四個模塊加上鼎新的終端協同接口一起跑,預計兩周。三輪做完,八月交樣機。」

  唐旭看著時間軸:」三輪聯調加上問題修復,滿打滿算五周。時間很緊。」

  」所以從今天開始,所有人只做一件事——聯調。」左城的目光掃過每個人,」其他項目暫停,LoRa的技術支持交給睿聯的人自己處理,我學校的課題往後放。五周之內402隻有一個目標:八月交出能跑的樣機。」

  沒有人反對。整個辦公室的氣氛從這一刻起變了——白板上其他項目的任務卡全部被移到了最邊角的位置,正中央只剩下聯調計劃的三輪時間軸,用紅筆加粗畫了框。

  於穎那天晚上給左城打電話的時候,他正在辦公室里對著調試器發呆。

  」哥,你聲音聽起來很累。」

  」還好。聯調剛開始,比較費腦子。」

  」需要我幫忙嗎?頻譜感知那部分如果有算法問題我可以幫你看。」

  」不用,頻譜感知反而是最穩的。」左城笑了一下,」問題出在硬體適配上,你幫不了——除非你能幫我把DSP的片上RAM變大一倍。」

  於穎笑了:」那我幫不了。但我可以幫你帶飯。」

  」不用特意跑一趟——」

  」不是特意。我明天本來就要去華大圖書館還書,順路。」

  左城知道藍星理工到華大圖書館要坐三站地鐵再走十分鐘,一點都不順路。但他沒有戳穿。

  」那麻煩你了,空空。」

  」不麻煩。」於穎頓了一下,又說了句,」哥,聯調這段時間你別硬扛。真遇到搞不定的問題,記得叫人幫忙。你不是一個人在做這件事。」

  」我知道。」

  掛了電話後左城轉回屏幕。調試器上的波形還在一幀一幀地跑,DSP的內存占用曲線像心跳一樣起伏著。

  五周,熬一熬吧。

  他深吸了一口氣,繼續盯著那條曲線。

章節目錄