第55章 落地

    五月中旬,蓝湾通信发来了第一批工程开发用的嵌入式硬体平台。
    两箱银灰色的铝合金机箱,每箱四台,一共八台。每台机箱里装著一块定製的信號处理板卡——双核dsp加fpga的异构架构,这是天穹地面终端的核心计算平台。
    张磊拆开第一台机箱的时候,手指都在微微发抖。
    “城哥,这板子的做工也太精致了吧。“他捧著板卡翻来覆去地看,“比我们实验室用的开发板高了好几个档次。“
    “这是蓝湾通信和晶片厂联合定製的。“左城接过板卡看了一眼丝印,“dsp主频六百兆赫,fpga是二十八纳米工艺,片上ram两兆字节。和我们仿真用的参数模型一致。“
    “一致“这个词他说得很有信心。但三天后他就知道自己错了。
    问题出在第一次上板测试。
    方泽把多星管道调度器的代码移植到dsp上,编译通过,烧录成功,启动运行——然后系统在第十七秒崩溃了。
    “內存溢出。“方泽盯著调试器的输出,眉头拧成了一团,“堆栈空间不够。“
    左城走到他旁边看了一眼数据。仿真环境里调度器的峰值內存占用是一点六兆字节,而dsp的片上ram是两兆字节,理论上应该够用。但实际运行时,编译器生成的代码比仿真环境的模擬代码体积大了百分之四十——因为真实的dsp指令集和仿真用的通用指令集不一样,某些运算需要更多的中间变量和临时缓衝区。
    一点六兆乘以一点四,等於二点二四兆。超了。
    “仿真和实物之间永远有gap。“左城的语气没有意外,只有冷静,“这是工程开发阶段必须面对的问题。仿真验证了算法的正確性,但代码的工程实现必须针对真实硬体重新优化。“
    “怎么优化?两兆的ram是硬限制,改不了。“方泽问。
    “改代码,不改硬体。“左城坐到方泽旁边,打开了调度器的原始码,“第一步,做內存剖析——找出哪些数据结构占了最多的空间。第二步,做数据压缩——能用短整型的不要用长整型,能復用缓衝区的不要另开新空间。第三步,做代码瘦身——把编译器生成的冗余指令手动优化掉。“
    这三步说起来简单,做起来是一刀一刀削肉的苦活。
    左城和方泽花了整整一周,把调度器的代码从头到尾重写了一遍。不是改算法——算法不用动——而是改每一行代码的实现方式,让它在有限的內存空间里儘可能高效地运行。
    七天后重新上板。峰值內存占用——一点七八兆。稳了。系统运行了十二个小时,没有崩溃,没有溢出,调度器的响应时间和仿真结果完全吻合。
    方泽靠在椅背上长出了一口气。他的眼镜片上有两个明显的指印——这一周他推眼镜的频率比平时高了三倍。
    “这种活儿比写算法累多了。“他难得抱怨了一句。
    “算法是创造,工程优化是雕刻。“左城说,“两种累法。“
    但这只是第一个模块。
    接下来的三周里,同样的问题在其他三个模块上依次出现。自適应参数共享引擎的內存问题更严重——环形缓衝区在dsp上的对齐要求和仿真环境不同,导致实际占用比预期多了百分之三十。波束协同控制器的问题不在內存,在时序——fpga的时钟频率和仿真的理想时钟有微小的偏差,导致分层精度切换的判断逻辑偶尔会错过一个时钟周期,造成波束指向的瞬间抖动。
    频谱感知前端反而是最顺利的——因为这个模块的嵌入式优化在架构设计阶段就已经做到位了,定点化、dma流水线、候选循环频率预筛选,每一步都是针对真实硬体设计的,上板后只做了几处寄存器配置的小修改就跑通了。
    “之前砍的那三刀没白砍。“刘伟感慨了一句。
    六月底,四个模块全部完成了上板移植和初步联调。
    左城在白板上更新了进度,第一里程碑的八月节点,目前来看可以按时达成。但中间还有一个关键步骤没有完成:四个模块之间的联合测试。
    单独跑每个模块都没问题,但四个模块同时运行在一块板卡上、共享同一块內存、爭抢同一个总线带宽的时候,会不会出新的问题?
    左城知道答案:一定会!联调的bug永远比单模块测试多,而且往往更隱蔽、更难復现。这是工程开发的铁律。
    七月初他召开了一次內部会议,把联调计划从头到尾过了一遍。
    “联调分三轮。“他在白板上画了一个时间轴,“第一轮:双模块联调,两两配对测试兼容性,预计一周。第二轮:三模块联调,重点测试资源竞爭和时序衝突,预计一周半。第三轮:全链路联调,四个模块加上鼎新的终端协同接口一起跑,预计两周。三轮做完,八月交样机。“
    唐旭看著时间轴:“三轮联调加上问题修復,满打满算五周。时间很紧。“
    “所以从今天开始,所有人只做一件事——联调。“左城的目光扫过每个人,“其他项目暂停,lora的技术支持交给睿联的人自己处理,我学校的课题往后放。五周之內402只有一个目標:八月交出能跑的样机。“
    没有人反对。整个办公室的气氛从这一刻起变了——白板上其他项目的任务卡全部被移到了最边角的位置,正中央只剩下联调计划的三轮时间轴,用红笔加粗画了框。
    於颖那天晚上给左城打电话的时候,他正在办公室里对著调试器发呆。
    “哥,你声音听起来很累。“
    “还好。联调刚开始,比较费脑子。“
    “需要我帮忙吗?频谱感知那部分如果有算法问题我可以帮你看。“
    “不用,频谱感知反而是最稳的。“左城笑了一下,“问题出在硬体適配上,你帮不了——除非你能帮我把dsp的片上ram变大一倍。“
    於颖笑了:“那我帮不了。但我可以帮你带饭。“
    “不用特意跑一趟——“
    “不是特意。我明天本来就要去华大图书馆还书,顺路。“
    左城知道蓝星理工到华大图书馆要坐三站地铁再走十分钟,一点都不顺路。但他没有戳穿。
    “那麻烦你了,空空。“
    “不麻烦。“於颖顿了一下,又说了句,“哥,联调这段时间你別硬扛。真遇到搞不定的问题,记得叫人帮忙。你不是一个人在做这件事。“
    “我知道。“
    掛了电话后左城转回屏幕。调试器上的波形还在一帧一帧地跑,dsp的內存占用曲线像心跳一样起伏著。
    五周,熬一熬吧。
    他深吸了一口气,继续盯著那条曲线。
本站所有小说均来源于会员自主上传,如侵犯你的权益请联系我们,我们会尽快删除。

腐文书,免费小说,免费全本小说,好看的小说,热门小说,小说阅读网
版权所有 https://www.fuwenshu1.com All Rights Reserved, 联系邮箱:ad#taorouwen.com