你可能不知道上面的图片是什么狗,或者连“二哈”是什么也不知道,没关系。但是作为嵌入式工程师,你不能不知道“看门狗”是什么!
1994年1月25日,弹道导弹防御组织和 美国宇航局(NASA)共同发射了一颗新型月球探测器,命名为克莱门汀号(Clementine)。克莱门汀号的目的有两个:第一阶段测试卫星携带的科学仪器和卫星组件长时间暴露在太空环境下的运行状态,并且对月球进行探测;第二阶段对近地小行星1620进行探测。
克莱门汀号顺利完成第一阶段任务后,在进行第二阶段的任务时,原本预订要从月球飞行到太空深处的近地小行星进行探勘,然而这艘太空探测器在飞向小行星时却由于一个软件缺陷而使其中断运作20分钟,不但未能到达小行星,也因为控制喷嘴燃烧了11分钟使电力供应降低,无法再透过远端控制探测器,最终结束这项任务,但也导致了资源与资金的浪费。
“克莱门汀太空任务失败这件事让我感到十分震惊,它其实可以透过硬件中一款简单的看门狗计时器避免掉这项意外,但由于当时的开发时间相当紧缩,软件程序设计人员没时间编写程序来启动它,”Ganssle说。
遗憾的是,1998年发射的近地号太空船(NEAR)也遇到了相同的问题。由于编程人员并未采纳建议,因此,当推进器减速器系统故障时,29公斤的储备燃料也随之报销──这同样是一个本来可经由看门狗定时器编程而避免的问题,同时也证明要从其他程序设计人员的错误中学习并不容易。
相关阅读
历史上的重大软件BUG启示录第7篇---美国商务航空公司的烦恼
历史上的重大软件BUG启示录 第6篇---蠕虫“冲击波”
作者:朱工
首发博客:https://freertos.blog.csdn.net/article/details/56304563
关注FreeRTOS从基础到高级专栏,即时收取FreeRTOS系列文章。