全模块联调是整个项目最凶险的环节——四个独立开发的功能模块第一次在同一块嵌入式板卡上同时运行,任何一个模块的微小问题都可能引发连锁反应。左城在联调开始前做了三天的预检,把每个模块单独跑了一遍確认没有隱患,然后才下令合併。
合併当天,办公室里所有人都在。
方泽坐在开发板前面,手指悬在键盘上方,屏幕上是四个模块的启动日誌。左城站在他身后,陈浩和张磊一左一右。
“开始。“左城说。
方泽按下回车键。
四个模块的日誌同时开始滚动。信號接收模块率先完成初始化,解调模块紧隨其后,信道估计模块加载预测模型,波束管理接口进入待命状態。
前三十秒一切正常。
第四十一秒,屏幕上跳出了一行红色警告。
“波束管理接口报超时。“方泽的声音绷紧了,手指飞速敲击键盘调出详细日誌,“信道估计模块输出的预测数据包有一个栏位的格式和波束管理接口的期望格式不匹配——差了一个字节对齐。“
一个字节。
整个系统因为一个字节的对齐差异卡住了。
“是我的问题。“左城立刻认领,“信道估计模块的输出结构体我上周改过一版,加了一个状態標誌位,结构体的总长度变了但我忘了同步更新接口文档。方泽那边的波束管理接口是按旧文档写的。“
“改接口文档还是改结构体?“方泽问。
“改结构体。把状態標誌位从四字节压缩成一字节,用位域实现,结构体总长度保持不变。“左城已经在脑子里过完了方案,“给我十分钟。“
他坐到自己的工位上,改了七行代码,重新编译,替换模块。
第二次联调。
这次跑了四分钟,没有报错。方泽开始加负载——模擬一颗卫星掠过地面终端上空的全过程,从捕获信號到稳定跟踪到切换下一颗卫星,全程十二分钟。
十二分钟后,屏幕上的所有指標全部绿灯。
“cpu占用率峰值百分之六十八,內存峰值二百八十三兆,信道预测延迟最大一点七毫秒,波束切换成功率百分之百。“方泽一项一项念出数据,声音越念越稳。
张磊在旁边轻轻吐了口气。
“別急著鬆气。“左城说,“跑七十二小时稳定性测试。“
七十二小时。和当初在蓝湾通信做基站测试时一样的时长。
接下来三天,办公室里有人二十四小时值班。左城排了班表——他自己守前两个夜班,方泽守第三个夜班,陈浩和张磊白天交替盯著。
第一个夜班平安无事。左城靠在椅子上半睡半醒地盯著监控屏幕,系统运行得像一台精密的钟表。
第二个夜班的凌晨三点,系统出现了一次內存波动——第二级环形內存池的占用率突然从百分之四十跳到了百分之七十五,持续了大约二十秒后自动回落。
左城查了日誌,发现是模擬测试脚本在这个时间点切换了一个极端场景——暴雨叠加多星切换,信道估计模块瞬间產生了大量的临时计算缓存。三级內存架构的第二级成功吸收了这个峰值,没有溢出到第三级,系统没有受到任何影响。
他在测试日誌里记下这个事件,標註为“预期行为,无需修復“。
第三个夜班结束时是八月十一號早上八点。
方泽从椅子上站起来伸了个懒腰,转过头对左城说了两个字。
“过了。“ 七十二小时,零崩溃,零异常,所有性能指標全部达標。
左城看著屏幕上那条平稳的系统运行曲线,心里涌起一种熟悉的感觉——和天穹联合评审通过时一样,不是狂喜,是一种沉甸甸的踏实。
接下来一周是文档收尾。技术文档、测试报告、用户手册、原始码审计报告——韩露列了一张清单,十四份文档,每一份都有格式模板和內容要求。
左城把文档工作分给了每个人:陈浩写信號接收和解调部分,方泽写嵌入式平台和性能优化部分,张磊整理测试报告,左城自己写信道估计的核心算法文档和整体架构说明。韩露负责最后的格式统一和商务文件。
八月十五號,全套交付物打包完成。
左城最后检查了一遍文件清单——软体原始码包、编译脚本、技术文档十四份、测试报告四份、用户手册一份。总计三百多页的文档加上十二万行代码。
他点击了提交按钮。
天穹项目第二阶段地面终端信號处理模块,正式交付。
办公室里安静了几秒钟,然后张磊带头鼓了掌。
“从四月十號签约到八月十五號交付,一百二十七天。“韩露看了一眼