决赛之前,左城必须先把环节二的硬仗打完。
算法移植到定製晶片上的问题已经解决了,接下来是系统集成和联调——把移植后的算法装进蓝湾通信南区实验基站的信號处理单元,和基站的其他模块完成对接,確保整套系统能协同运转。
韩哲给左城开了远程访问权限,但联调阶段的最后一步必须到现场做——因为真实基站的射频模块和天线阵列没法远程模擬,信號链路的端到端测试必须在物理设备上跑。
十一月八號,左城和方泽一起去了蓝湾通信南区基站。
基站建在一栋商业楼的楼顶,外面是一排白色的天线阵列,里面是一个不到二十平米的设备间,塞满了机柜、光纤和散热风扇,嗡嗡声吵得说话要抬高音量。
蓝湾通信派了一个现场工程师配合他们,叫老吴,四十多岁,穿一件油渍斑斑的工装,说话带著浓重的南方口音。
“你们就是学校来的?“老吴上下打量了他俩一眼,语气里带著善意的怀疑,“这么年轻,行不行啊?“
“试试就知道了。“左城笑了一下,打开笔记本电脑接入基站的调试埠。
联调的前半段出乎意料地顺利。算法模块和基站的基带处理单元对接成功,数据通路跑通了,信號採集和输出都正常。方泽全程盯著嵌入式平台的运行状態,內存占用、cpu负载、中断响应时间全部在安全线以內。
问题出在射频端。
当左城把算法切换到实时处理模式,开始接收天线阵列送过来的真实无线信號时,输出数据出现了一种诡异的周期性抖动——每隔大约四秒钟,信道估计值会突然偏移一次,然后又恢復正常。
偏移幅度不大,但足以让性能指標掉到达標线以下。
“这个抖动不是算法的问题。“方泽看著示波器上的波形,皱起眉头,“周期太规律了,四秒一次,像是外部干扰。“
左城也注意到了这个规律。他转头看向老吴:“基站周围有没有什么设备会產生四秒周期的电磁干扰?“
老吴想了想,一拍大腿:“隔壁楼顶有个气象监测站,上面那个雷达每四秒转一圈。之前就有工程师反映过这个问题,但因为不影响常规通信,一直没处理。“
左城和方泽对视了一眼。
气象雷达的旁瓣信號泄露到了基站的接收频段,每转一圈就干扰一次。常规通信算法对这种级別的干扰不敏感,但左城的自適应追踪算法精度更高,反而把这个干扰给“看见“了。
精度太高也是一种烦恼。
“两条路。“左城在笔记本上飞快地画了个示意图,“第一条,在算法前端加一个陷波滤波器,把气象雷达的频段直接滤掉。简单粗暴,但会损失一小段有用频谱。第二条,在自適应追踪模块里加一个周期性干扰识別机制,让算法自己学会区分雷达干扰和有用信號。“
“第二条更优雅,但开发时间——“方泽说。
“两个小时够。“左城说。
方泽看了他一眼,没有质疑,转身去调试环境里开了一个新分支。
左城坐下来写代码。周期性干扰的识別逻辑不复杂——干扰的频率、幅度和持续时间都是固定的,只要在追踪模块的输入端加一层模式匹配,识別出干扰特徵后將其从信號中剥离,剩下的就是纯净的有用信號。
一个半小时后,新模块写完了。方泽把代码刷进晶片,重新跑测试。
四秒周期的抖动消失了。信道估计值的曲线变得光滑而稳定,所有性能指標回到了达標线以上。
老吴站在旁边看了全程,原本掛在脸上的怀疑表情早就没了,取而代之的是一种老工程师特有的欣慰。
“小伙子们可以啊。“他拍了拍左城的肩膀,力气大得左城往前踉蹌了半步,“这个雷达干扰的问题困扰我们半年了,你们一下午就给解决了。“
“是顺手的事。“左城稳住身形,笑了笑。
联调全部完成。
接下来是最后的关卡——七十二小时连续运行验证。
算法必须在真实基站环境中不间断运行三天三夜,处理数千名真实用户的通信信號,期间不能出现任何崩溃、死机或性能骤降。
十一月十號上午十点,左城启动了七十二小时测试。
前二十四小时风平浪静。算法运行稳定,各项指標在达標线以上,波动极小。左城每隔两小时通过远程系统检查一次运行状態,方泽同步监控嵌入式平台的资源消耗。
第三十六小时,凌晨四点,左城被手机震醒了。
方泽发来消息:“內存泄漏。很慢,每小时大概增长0.3%,但如果持续下去,预计在第六十小时左右会撞到上限。“
左城一个激灵坐起来,打开电脑远程连入基站调试系统。
方泽说得没错。嵌入式平台的內存占用在以极其缓慢的速度上升——每小时0.3%,在短时间內完全感觉不到,但七十二小时就是超过20%的增长。一旦內存占满,系统要么变慢要么直接崩溃。
“定位到了。“方泽在凌晨四点二十分又发来一条消息,“干扰识別模块的缓衝区没有做循环覆写,每识別到一次干扰就分配一小块新內存记录日誌,但记录完之后没有释放。常规测试时间短看不出来,长时间运行就累积了。“
左城闭了一秒钟眼。
这是他自己写的代码里的bug。一个半小时赶工写出来的模块,测试不够充分,漏掉了內存释放。
“能热修復吗?“他问。热修復是指不重启系统的情况下在线打补丁——如果必须重启,七十二小时测试就得从头计时。
方泽回了两个字:“能。但需要你这边远程把补丁包编好,我来推送。“
左城用了十五分钟写完补丁——把缓衝区改成环形结构,固定大小,新数据自动覆盖最老的数据,內存占用恆定不变。方泽远程推送,热修復成功。
內存占用曲线立刻走平了。
凌晨四点四十二分,一切恢復正常。
左城靠在椅背上,后背全是冷汗。
如果方泽没有在凌晨四点发现这个问题,等到第六十小时內存崩溃再处理,七十二小时测试就废了,环节二的期限也会变得极其紧张。
他给方泽发了一条消息:“谢了。这个bug是我的锅。“
方泽回了一句:“写代码的人都会有bug,重要的是发现得早。睡吧,后面我盯著。“
左城没有再睡。他坐在黑暗的宿舍里,盯著电脑屏幕上缓慢跳动的运行数据,一直看到天亮。
第七十二小时。
十一月十三號上午十点。
左城、方泽和老吴三个人站在基站设备间里,盯著监控屏幕上的最终报告。
连续运行72小时。处理用户信號总量:4,217,603条。信道估计平均精度:超出基准值34.2%。系统崩溃次数:0。性能骤降次数:0。內存泄漏:已修復,修復后运行36小时无异常。
老吴嘬了口保温杯里的浓茶,点了点头:“过了。漂漂亮亮地过了。“
左城看著屏幕上的数字,什么都没说,只是长长地吐了一口气。
光幕在意识中亮起:
【主线任务链·通信破局·环节二:完成!】
【实测验证评价:优秀(72小时零崩溃,性能超標34.2%)】
【奖励发放中——】
【解锁叶片:通信系统工程 ?】
【积分+10(当前积分:23)】
【因评价等级为“优秀“,环节三期限额外延长7天。】
【环节三即將解锁——】
二十三个积分。五枚叶片。
左城关掉面板,看了方泽一眼。方泽靠在机柜上,双手插兜,面无表情,但嘴角有一个极其轻微的弧度。
“走。“左城说,“回学校。四天后决赛。“
本站所有小说均来源于会员自主上传,如侵犯你的权益请联系我们,我们会尽快删除。