第55章 落地

⚡ 自动翻页 开启后阅读到底自动进入下一章
⚡ 开启自动翻页更爽 看到章尾自动进入下一章,追书不用一直点。

  五月中旬,蓝湾通信发来了第一批工程开发用的嵌入式硬体平台。

  两箱银灰色的铝合金机箱,每箱四台,一共八台。每台机箱里装著一块定製的信號处理板卡——双核dsp加fpga的异构架构,这是天穹地面终端的核心计算平台。

  张磊拆开第一台机箱的时候,手指都在微微发抖。

  “城哥,这板子的做工也太精致了吧。“他捧著板卡翻来覆去地看,“比我们实验室用的开发板高了好几个档次。“

  “这是蓝湾通信和晶片厂联合定製的。“左城接过板卡看了一眼丝印,“dsp主频六百兆赫,fpga是二十八纳米工艺,片上ram两兆字节。和我们仿真用的参数模型一致。“

  “一致“这个词他说得很有信心。但三天后他就知道自己错了。

  问题出在第一次上板测试。

  方泽把多星管道调度器的代码移植到dsp上,编译通过,烧录成功,启动运行——然后系统在第十七秒崩溃了。

  “內存溢出。“方泽盯著调试器的输出,眉头拧成了一团,“堆栈空间不够。“

  左城走到他旁边看了一眼数据。仿真环境里调度器的峰值內存占用是一点六兆字节,而dsp的片上ram是两兆字节,理论上应该够用。但实际运行时,编译器生成的代码比仿真环境的模擬代码体积大了百分之四十——因为真实的dsp指令集和仿真用的通用指令集不一样,某些运算需要更多的中间变量和临时缓衝区。

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

  “仿真和实物之间永远有城的语气没有意外,只有冷静,“这是工程开发阶段必须面对的问题。仿真验证了算法的正確性,但代码的工程实现必须针对真实硬体重新优化。“

  “怎么优化?两兆的ram是硬限制,改不了。“方泽问。

  “改代码,不改硬体。“左城坐到方泽旁边,打开了调度器的原始码,“第一步,做內存剖析——找出哪些数据结构占了最多的空间。第二步,做数据压缩——能用短整型的不要用长整型,能復用缓衝区的不要另开新空间。第三步,做代码瘦身——把编译器生成的冗余指令手动优化掉。“

  这三步说起来简单,做起来是一刀一刀削肉的苦活。