为了满足智驾系统产品的开发需求,以及提高研发效率,开发了一套集通信、仿真、调试、测试等于一体的中间件开发平台。
智能驾驶中间件开发平台主要分为6大模块:通信服务模块、日志服务模块、参数服务模块、调度服务模块、拓扑服务模块、升级服务模块。
1、通信服务模块主要提供片内及片间的通信服务,支持发布订阅、请求响应两种模式,片内使用共享内存,片间支持选择不同的通信方式如zmq、spi等。
2、日志服务模块用于收集、存储、搜索、可视化系统运行时的各种信息,帮助故障排查、性能优化和系统监控。提供日志接口,支持日志等级、格式等设置。
3、参数服务模块能够为应用层软件提供统一的配置参数、标定参数等的读、写服务,并保证参数的安全性、可恢复性等。参数服务采用Server/Client方式提供服务,提供参数修改、保存等接口。
4、调度服务模块负责系统任务的调度和执行,合理分配系统资源,确保多个任务或进程高效、有序地执行。支持多任务管理,提供任务实时调度能力。
5、拓扑服务模块负责将通信服务模块、日志服务模块、参数服务模块、调度服务模块做统一的封装,对单元模块完成定义,并部署到系统中,同时像上层提供统一的编程范式。
6、升级服务模块能够对多个平台的SOC及MCU进行升级。支持多种升级包获取方式及压缩方式。
该项目共有5名开发人员,我主要负责通信服务模块、参数服务模块的架构设计、开发和维护工作。
该项目使用C++实现,基于Linux平台开发,采用SOA架构。其中,通讯服务使用shm、zmq、spi、rpm等通讯协议实现进程间、片间通讯。