恐龙技术生存体验(三 眼花缭乱)

于是我工作后终于发现了第一个朴素的道理:不能正确运行的程序是垃圾。之后做过几个离线数据抽取软件和实时数据处理模块,处理各种卫星数据的时候,发现功能完全一样,只是格式不同而已,怎么破?听说面向对象比较好,我也研究C++的继承、多态的概念,写程序的时候搞一个父类,不同的卫星去继承。

听说设计模式很时髦,我也买了书研究,每个字都能看懂,就是不知道说了啥。GOF,骗子。

接手升级过一个有奇怪名字设备的控制软件。它接收上一级的主控软件命令,配置设备。采集设备工作状态,上报给主控。这个行业的开发周期都比较长,但是对可靠性要求高。自己写的bug,含着泪也要de出来。比如说为了调一个奇怪的崩溃错误,传说中它会在半夜卫星过境时发生,所以我在部队机房蹲点守夜N天,身心交瘁后才找到这个低级错误;再比如说主控用TCP socket发命令,偶尔会收不到。有时甚至这个可靠连接还神奇的不能通信了,这都会影响过境收星。痛苦的折磨后,我知道了什么叫粘包,怎么处理残帧,知道了TCP也需要keep alive,而据说那个默认的keep alive周期有点长,比较坑爹,需要自己做心跳等等。

这模块和软件用在几个著名的型号中,自己感觉没白吃我党的饭。 

后来也学过做Windows驱动,Vxd/WDM的那种正宗驱动,还写过DSP程序。这就简直faint了。我没学过电路不懂硬件,写驱动和DSP简直就是要了小命,data sheet看不明白,万用表示波器更是闻所未闻,还好英语底子不错,板子的manual和guide上的字还看得懂,只好硬着头皮啃。得出的结论就是驱动和DSP开发是体力活,拉信号配寄存器挂中断查FIFO扣DMA,而且很多问题有可能来自硬件,我这种没搞过电路半路出家的很难做好嵌入式开发。 

做过一个DSP程序的升级,痛苦的折磨,最后也没搞清楚是硬件还是软件的问题,无疾而终。

最后接了了个开发任务,一年半的时间。这是个完整的软件,功能是所谓实时接收记录数据,实时/事后检查这些数据有没有误码,控制设备工作参数等。

这个软件在接收数据时遇到的困难很多,缓冲区要做软同步,数据要拼接整齐,要并发存盘,要接收主控的socket命令控制,要上报状态。最后的测试结果就是,下班前运行做拷机实验,第二天上班时总会看到有误码,硬件同事反复试验查证后,问题指向我的软件,并且判断是数据缓冲出了问题。

这简直太对了。硬件的同事告诉我要ping pong啊,驱动的同事说要用几个缓冲区轮换啊,总之,很简单!至于怎么乒乓,他们只有单片机的经验。而那驱动的一长坨代码,真是看不明白怎么用个volatile索引在几块缓冲区之间跳来跳去就能不丢数了。

我真的不知道自己会干什么,能干什么。技术之外的收获是,建立了产品质量的概念;具备初步开发经验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值