第56章 聯調

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

  第一輪雙模塊聯調比預期順利。

  管道調度器和參數共享引擎配對——運行四十八小時無異常。波束協同和頻譜感知配對——運行四十八小時無異常。交叉配對也全部通過。

  」第一輪沒出問題,說明單模塊的接口定義做得到位。」方澤在聯調日誌上簽字的時候難得露了個滿意的表情。

  第二輪三模塊聯調開始出問題了。

  管道調度器、參數共享引擎、波束協同三個模塊同時運行時,DSP的總線帶寬出現了爭搶——三個模塊同時訪問片外存儲器的峰值時刻,總線仲裁器來不及響應,導致參數共享引擎的環形緩衝區出現了一次讀取超時。

  超時只有兩毫秒,但在實時系統里,兩毫秒的卡頓足以讓波束協同錯過一次切換窗口。

  左城看著日誌里那個孤零零的超時記錄,沉默了十秒鐘。

  」總線優先級要重新分配。」他說,」波束協同的實時性要求最高,它的總線訪問優先級必須排在第一。管道調度器第二,參數共享引擎第三。」

  方澤改了FPGA的總線仲裁邏輯,重新燒錄。再跑四十八小時——沒有超時。

  但左城不放心,又加了一輪壓力測試——模擬十五顆衛星同時在視野內的極端場景,把三個模塊的負載推到設計上限的百分之一百二十。

  跑了六個小時,波束協同控制器報了一次告警——分層精度切換的判斷閾值在極端負載下出現了邊界條件的誤觸發,把一顆應該用簡化模型跟蹤的候選星錯誤地提升為全精度計算,導致算力瞬間過載。

  唐旭盯著告警日誌看了二十分鐘,然後改了三行代碼——在判斷閾值上加了一個滯回區間,避免信號強度在閾值附近震盪時反覆觸發精度切換。

  三行代碼。一個工程師可能需要三天才能定位的問題,唐旭二十分鐘就找到了根因。

  」波束賦形是我的地盤。」唐旭改完代碼後說了句,語氣平淡得像在說今天吃了什麼。

  第二輪聯調通過。

  七月中旬,第三輪全鏈路聯調開始。

  這一輪要把402的四個模塊和鼎新信息開發的終端協同接口對接起來,在同一塊硬體平台上跑通完整的信號處理鏈路——從衛星信號接收,到頻譜感知,到管道調度,到波束協同,到終端協同,全鏈條打通。

  鼎新的技術總監帶了兩個工程師來402駐場聯調。三個人搬著兩台筆記本電腦和一箱子調試工具進了402的辦公室,在角落裡支了一張臨時工作檯。

  第一天就出了問題。

  鼎新的終端協同接口發給402模塊的狀態數據包格式,和402這邊的解析代碼不匹配。

  」我們按照接口規範文檔V2.3開發的。」鼎新的工程師指著屏幕上的數據包結構,」狀態欄位在第十六個字節開始,長度四字節。」

  陳浩拿出402這邊的接口代碼:」我們也是按V2.3開發的。但我們的解析是從第十二個字節開始讀狀態欄位。」

  兩邊的人面面相覷了三秒鐘。

  左城拿過接口規範文檔翻到對應頁面。看了三十秒後他找到了問題——V2.3版本的文檔里,狀態欄位的偏移量描述有一處歧義。原文寫的是」偏移量12位元組(含包頭)」,但包頭本身的長度在不同模式下是四字節或八字節。鼎新按最大包頭算偏移量十六,402按最小包頭算偏移量十二。

  」文檔的鍋。」左城把文檔放下來,」不糾結誰對誰錯,按實際的包頭長度做動態解析——讀取包頭的模式欄位,再根據模式確定狀態欄位的偏移量。兩邊都改,今天下班前改完。」

  鼎新的工程師看了一眼他們的技術總監。技術總監點了下頭。

  當天下午六點,兩邊的代碼都改完了。重新對接——數據包解析正確,狀態同步正常。

  但這只是第一個接口問題。接下來兩周里,類似的對接問題又冒出來七八個——時間戳精度不一致、心跳包間隔不匹配、異常狀態碼的定義衝突、大小端字節序的假設不同。每一個問題都不大,但每一個都需要兩邊的工程師坐在一起逐行對代碼。

  左城在這兩周里扮演的角色不只是402的技術負責人,更是兩個團隊之間的協調者。每次出現分歧,他都是先看文檔、再看代碼、最後給出一個雙方都能接受的解決方案。不偏袒自己人,不推卸責任,只看怎麼解決問題最高效。

  鼎新的技術總監在聯調第十天的時候私下跟王建平打了個電話。左城不知道他說了什麼,但第二天王建平給左城發了一條消息:」你們的聯調風格讓我的人學到了不少。以後有機會多合作。」


  七月底,全鏈路聯調的最後一項測試——七十二小時連續穩定性運行。

  左城在測試開始前檢查了每一項參數。一百二十路衛星信號仿真輸入,四個核心模塊加終端協同接口全部在線,數據從信號接收端一路流到終端協同輸出端,中間不能斷、不能錯、不能延遲超標。

  他按下了啟動鍵。

  第一個二十四小時——零異常。

  第二個二十四小時——零異常。

  第三個二十四小時的第十九個小時,也就是總運行時間第六十七個小時——系統日誌里出現了一條警告:參數共享引擎的環形緩衝區版本號發生了一次迴繞。

  左城的心提了一下。

  他立刻查看詳細日誌。版本號是三十二位無符號整數,理論上的迴繞周期是四十多億次寫入。但實際運行中參數更新頻率遠高於設計預期——因為全鏈路聯調時所有模塊的參數請求匯聚在一起,更新頻率是單模塊測試時的五倍。

  版本號本身的迴繞不是問題——無符號整數的迴繞是自然的數學行為。但如果有任何模塊在比較版本號時用了有符號比較,迴繞的瞬間就會出現邏輯錯誤。

  他用五分鐘在代碼里搜索了所有版本號比較的語句。

  七處比較,六處用的是無符號比較。

  第七處——管道調度器里的一個邊界檢查函數——用了有符號比較。

  方澤寫的代碼。

  左城沒有叫方澤,自己把那行代碼改了。有符號比較換成無符號比較,一個單詞的差異。

  改完後他重啟了測試。

  最後五個小時——零異常。

  七十二小時穩定性測試通過。

  辦公室里響起了一陣安靜的掌聲。和三個月前架構驗收時的掌聲不同,這次的掌聲帶著一種劫後餘生的釋然。

  左城站在硬體平台前,看著屏幕上穩定跳動的數據曲線,深呼了一口氣。

  八月一號。樣機交付。

  他做到了。

章節目錄