拯救世界的最响口齿不清程序

主要观点:作者认为自己是通才开发者但大部分职业生涯都在嵌入式和系统编程,虽内心是 Common Lisp 爱好者但嵌入式技术领域多为 C 及相关语言,却有幸在过去几年用 Common Lisp 参与大型嵌入式系统项目。该项目是为挪威的隧道开发辅助自我疏散系统,历经艰难最终完成并投入使用,系统利用 Psychoacoustics 原理通过定向声音信号引导人员疏散,硬件和软件设计历经多次迭代,软件栈采用 Yocto Linux 和 Common Lisp,系统是软实时分布式系统,注重可靠性和容错性,通过一系列流程和技术实现可靠运行。

关键信息:

  • 挪威隧道多且事故时有发生,尤其火灾危险,以往无自动消防设施,遵循自我疏散原则。
  • 作者所在公司 Norphonic 赢得开发辅助疏散系统的竞争,项目历经 2019 年底开始至 2021 年完成并量产,名为 Evacsound。
  • 系统设计从 Psychoacoustics 出发,利用声音引导疏散,装置安装在特定位置,单个隧道有数十到数百个节点,总声学功率达数十千瓦。
  • 硬件设计历经近 20 次迭代,软件栈采用 LispWorks 等,利用 CLOS 等技术,系统是软实时分布式系统,需应对多种约束。
  • 建立可靠性基线,通过线程池等实现任务抽象和监控,有规划和执行系统,通信采用自定义的小 DSL 处理多种模式的通信,有效处理分布式网络操作故障。

重要细节:

  • 挪威多地隧道情况,如 Gudvangatunnelen 多次火灾等。
  • 硬件设计借鉴其他产品经验,软件栈选择原因及各 CL 实现的使用情况。
  • 系统设计中的各种约束及应对措施,如通信与其他设备共用基础设施等。
  • 建立可靠性的流程,如任务抽象、服务注册等。
  • 规划和命令语言的设计,如抽象规划、多种继承的运用等。
  • 通信的设计及自定义 DSL 的构成和处理通信错误的机制等。
阅读 5
0 条评论