关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯
自动驾驶的应用有着高可靠、高性能、高并发以及模块化的需求特征,而实时、安全、开放的自动驾驶平台是实现这些的关键之一,同时也是推动“软件定义汽车”的重要基础。推动实现SOA所倡导的软件定义汽车的自动驾驶系统方案。
SOA 应用在车端开发环境中,是一种从设计、开发、部署到管理离散逻辑单元(服务)模型。对于整个SOA开发过程而言,最主要的就是涉及从车辆特性、系统需求、系统开发、子系统开发、传感控制器总成开发。在 SOA 模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互过程中无需考虑双方的内部实现细节,以及部署在什么平台上。SOA的细颗粒度、松耦合、服务可重用及标准化的服务接口等特性有利于OEM快速推出新功能,灵活迭代,支持软件定义汽车。利于更多方参与软件开发,以OEM为核心建立汽车生态系统。同时,精确定义的服务契约,独立于硬件、操作系统和编程语言的开发模式有利于更多方参与软件开发,以OEM为核心建立汽车生态系统。此外,便捷的云端访问,服务于精确封装,可有效地保证数据安全,使得车辆不在是信息孤岛,而是物联网中的一个节点,建立了真正的车-云通道。
可以说SOA完美的解决了汽车软件架构面临的各种挑战,并且为迎接汽车产业的变革打下必备的基础。
SOA车端E/E架构设计要素
SOA的开发过程相对于传统开发模式而言,仍然是以需求为输入,将需求以全面服务的模式进行细化,最终将定义的服务映射到软硬件架构中。
如上图所示,面向服务SOA架构的基本工作流程包括在底层设计过程中需要面向对象进行服务设计、服务分组以及服务映射。其中需要根据服务列表及服务接口设计服务,从而根据功能逻辑将服务映射值不同的模型,最后以服务组件到软件组件(SWC)的映射服务接口到软件接口。
SOA在自动驾驶架构设计中需要重点考虑基于服务设计的完整性和功能安全设计的完整性。以标准的ASPICE软件认证开发流程为基础蓝本,传统的开发流程以系统验证为SOP节点,后续运行维护及上市后不再进行软件更新,而基于SOA的软件开发模式需要在系统验收后持续不断的更新软件,迭代更多实用性功能,提升已有软件性能。SOP Release需要包括所有可能的Basic Service,不需要所有的Service都一次开发完成。
利用 SOA的思维架构进行自动驾驶设计过程中,需要根据SOA设计原则定义服务接口,统一开发基础共用的软硬件平台及开发环境,从而提高软件复用度。开发过程考虑继承系统层级到零部件层级设计的实现原则,例如,功能子模块需要进行封装,功能之间需要进行自我包含等。
整个SOA在其硬件设计中主要实现了从模块化、单域控制器、冗余计算平台再到中央计算平台的整体演进。其中各自体现在如下一些方面:
1)模块化分割:梳理自动驾驶各子功能模块的各自功能,形成模块化的分子架构模型;
2)域控制单元:将如上分子架构模型中的ECU合并至中央域控制器,从而减少成本、重量和功耗,利用半导体及软件技术革新优化域控能力。
3)冗余计算平台:SOA可直接访问存储单元,并行计算载体提供冗余和安全算法,并在开放的可裁剪平台上进行搭载;
4)中央计算平台:SOA通过网络访问、动态配置及无缝冗余,注入刀片式服务设计策略,实现真正的自动驾驶演进。
对于SOA的开发应用模式,在其软件设计中实现了更加灵活的软件架构,集成第三方生态合作伙伴应用,服务拓展更新更加便捷,实现插拔式软件设计。最终目标是实现如下多个交互实体的关系解耦:
I/O接口与计算解耦、计算平台与区域架构解耦、软件与硬件解耦、整车级抽象能力、软件与软件解耦、基于微服务的软件架构、配置数据与代码解耦、数据驱动I/O设备。
安全设计在SOA中的应用思考
SOA在重构软件生态时,其功能安全实现难度大幅增加。OEM开放3party开发平台,如何保证其不影响整车的功能安全,对于3party开发的服务,如何确保其不级联失效影响其它已有ASIL等级的服务,服务客户端 的ASIL等级的不确定性等问题都将是制约SOA能够有效实现的关键因素。
SOA 系统设计层面考虑应考虑进行服务分层(如下图),其中SOA的功能安全设计需要考虑到整个层面的设计过程。
SOA 系统设计层面考虑应充分考虑服务分层。结合安全因素将服务合理分层,针对不同开发主体确定不同限制策略。同时,还应该基于服务进行有效分类,基于服务的安全相关性对开发的服务和OEM服务进行分区,过程中需要考虑严格的安全审核机制。为了实现物理隔离,需要考虑将供应商开发的底层服务和OEM自己开发的顶层服务进行高性能计算分区和安全计算分区。
此外,SOA在安全机制上可以分为3层架构设计,因此其软件运行期间的动态监控是必不可少的。
整体来讲,构建面向服务的安全分析流程及框架包含如下几个关键部分:
首先是进行有效的服务过程建模(BPMN),随后是进行安全分析中的服务Hazard分析(SHA)和服务Failure分析(SFA),最后是进行SOA的错误分类。在后续开发层面主要通过安全案例和服务层一致性构建安全保障体系,实现高度自动化的模型集成环境。
SOA的软件应用局限及应对策略
SOA在智能驾驶的不断渗透,意味着汽车软件的竞争力将会成为其核心竞争力,它关乎所有关键商业指标,如TTM、生产率、成本以及创新。而软件研发过程中就意味着其复杂性带来的巨大挑战。比如如何应用有效的软件管理以及系统集成核心工具,发挥多核性能最有效方法,使得满足功能安全、信息安全要求,降解软件复杂度,提高软件重用率,使软硬件解耦。通过降解复杂度,使得软软解耦,通过零代码修改使得系统集成更加有效。通过健康监控使得软件可见可管理。
SOA挑战 | 问题解析 | 有效对策 |
软件产品管理 | 软件产品必然面临如何核算成本,如何管理开发,如何管理供应商,如何定义业务等。 | 拥抱开源、融入生态,专注产生差异化价值的软件开发,业务相关软件开发。尽量减少企业私有的软件,降低软件产品管理的不确定性和复杂度,减少软件的生命周期成本。 |
全生命周拥有成本 | 软件开发的一个重要特点是长期维护,长期更新,这为开发者带来持续改进的可能性,同时,应意识到这也是长期成本。 | |
复杂性 协作开发 | 汽车软件代码体量已经超过1亿行,考虑到车型变型就更加复杂,人工智能算法、第三方软件集成等新需求让协作开发是发展的必然。 | 通过虚拟技术和容器等技术实现软硬解耦、软软解耦,管理软件的复杂性,支持多供应商同步开发,不同项目复用软件模型组。 |
兼顾实时、安全性需求 | 尤其自动驾驶领域和网络安全。 | 将实时性、安全性要求高的软件运行在实时操作系统上。 |
软件可维(护)可测(试) | 为了验证复杂软件的可靠性,对代码有效管理,甚至必须牺牲一定的性能! | 1、基于开源软件开发的代码,尽量通过开源社区维护,企业自身维护的代码尽量少,底层通过代码维护可以交给专业软件供应商维护。 2、使用自动化测试工具。 |
动态性 | 新技术的发展、半导体资源的升级、汽车开发越来越贴近消费端,都带来软件开发需求的变动加速和动态性。 | 敏捷流程,小步快跑的方式持续集成、持续发布(CI/CD),一体化开发、运维(DevOps) |
SOA设计中的关键环节-中间件
下一代自动驾驶着力于基于服务开发相应的软件架构(SOA),其对于其从传感器,控制器到执行器所呈现的井喷式增长,对于开发者而言最直观的感受就是,软件系统日益庞大,代码行数快速增长;硬件的类型、数量和规格明显提升,电子系统的复杂性成倍增加;软件、硬件组合在一起所需克服的挑战,也像做乘法一样地被急剧放大。这就大幅提升了汽车对软硬件架构的要求。实际是该类型的软件架构需要同时解决当下系统开发难题,又要具备足够的前瞻性、兼容性和扩展性,后续可以有效的实现软件升级,硬件换代,模块增减和更替等。
自动驾驶的中间件,可以按需调整、满足各样自动驾驶过程中的开发需求。可以为上层的应用软件提供开发和运行所需的环境,方便开发者快速、高效、灵活地开发和集成自动驾驶软件。自动驾驶的中间件,也属于广义上的操作系统,但是它和QNX、Linux这些底层系统并不一样。本质上它是介于上层应用和底层系统之间的一套软件框架,是对软硬件资源进行管理、分配和调度的平台,充当着软件和硬件解耦的关键角色。
具体来说,中间件通常对传感器、计算平台等资源进行抽象,对算法、子系统、功能采取模块化的管理,通过提供的统一接口,让开发人员能够专注于各自业务层面的开发,而无需了解无关的细节。这样最直接的好处就是,整个系统的开发效率得到提高,软件部署得以简化,整体的扩展性也获得了提升。
常规的计算机操作系统对计算机的硬件和软件进行管理,会涉及处理器管理、存储管理、设备管理、文件管理、进程管理,比如Android、iOS、Windows、Linux,就是其中的典型代表。那自动驾驶中间件,对于软硬件的管理又会有哪些内容呢?自动驾驶需要接收不同的传感器信号,然后进行感知、规划和控制,并由转向、油门和制动这些硬件系统来完成整个过程。所以自动驾驶的中间件会涉及到ECU管理、传感器管理、车辆模型管理、通信管理、任务管理、数据管理、安全管理、诊断管理、OTA管理、可视化管理。
对于SOA来讲一个典型的例子就是,不同车型配置存在巨大差异。我们可以借助于中间件平台,插拔式设计在系统开发过程中根据需求进行不同程度的拓展。主要包含如下三个方面:
系统设计阶段,有效的适配不同的传感器、域控制器芯片、车端平台等硬实体;
软件开发阶段,提升开发效率并及时优化各类软件算法模块,升级低级别的自动驾驶功能;
系统验证阶段,进行快速高效地软件迭代,并能够提供不同的优化方案,而不依赖任何第三方的组件。
SOA在汽车自动驾驶产品设计中,力争做到通过打造爆款车型,开发迭代的软件实现有效的升级盈利。其中软件灵活的迭代模式可以有效的缩短开发周期,硬件实现算力大幅扩展,传感器/执行器即插即用,打造可靠性高的安全架构体系,确保整车额功能安全、信息安全能力,最后是实现低成本,高品质的架构设计和软件研发,使主机厂、供应商共同受益。