怿星科技薛春宇丨智能汽车软件研发工具链国产化的挑战和探索

news2024/10/27 0:39:54

2024年7月25日,由上海良益企业管理咨询有限公司主办的“2024域控制器技术论坛“在上海成功举办,十位嘉宾做了精彩分享。“整零有道”将陆续刊出部分演讲的文字实录,以飨读者。

本期刊出怿星科技副总经理薛春宇的演讲实录:智能汽车软件研发工具链国产化的挑战和探索。文字经嘉宾本人审阅,有删节。

图片

各位早上好,很高兴跟大家在这里探讨关于软件开发、工具链以及软件开发过程中碰到的问题和挑战。刚才龙平先生也提到了软件开发的效率问题,值得大家深思。其实这几年软件研发的状态,内卷的程度,包括软件研发的工作量都是热门话题。大家都知道软件研发带来了大量的成本,所以在这里我代表怿星科技跟大家探讨一下,在软件开发过程中,怎么利用好国产工具链,然后怎么用工具链去提升效率,以及对于国产工具链的一些思考。我的演讲分三个方面:初心,怿星的解决方案,最后分享我对整个国产工具链的机遇和看法。

关于初心

我是做软件出身,开始的时候ABS/ESC的算法做了4-5年。在整个软件开发的过程中,碰到了大量效率的问题,代码一致性的问题,代码的测试问题,这些都造成了我们软件开发效率的低下。所以我们引入了一个叫“软件工业化”的概念,就是说软件工业化到底够不够,我们用软件工业化的这样一个标准来去评判软件开发。那么软件工业化的标准是什么?

首先是效率,然后是质量,然后是成本。大家都知道整个工业化的成果带来的就是效率的提升,成本的降低,然后质量的极大的提升,但是我们软件碰到的问题却是完全反面的,质量、效率都是极差的。

如果我们从工业化的角度看,一个真正的工业化的产品,PPM我相信应该是个位数,是极低的,我们其实要求0PPM。但是我们扪心自问一下,我们现在90%以上的软件是有大量问题的。在效率方面,我们还有大量的人工堆在软件开发的整个的通道里面,造成了软件开发整个效率低下的问题。

基于以上这些,我们认为整个软件的工业化程度是极低的。但是软件行业发展了那么久,软件效率还是那么低,肯定有它深层次的原因。我们大概总结了一下,原因有大量依赖人力,包括整个软件技术能力的参差不齐,也包括缺乏高效的软件开发的工具链。

其实软件开发工具链总体来讲还是很丰富,但是极其地碎片化,角色跟责任分工也不明确,也缺乏对软件开发整个周期的管理等等。软件(包括整个电子电器开发的工具链),我们一般把它归为5类。第一是设计类工具,大家用的比较多,像Matlab、Simulink等工具来帮助大家去生成整个架构or软件代码。另外编译器和集成开发环境,这个一般都是由芯片厂来提供的,提供了各种各样的编译环境。另外就是模拟和仿真工具,模拟仿真工具的话主要是用于整个开发过程,去仿真整个的环境也好,或者做相关的模型开发也好,生成代码也好。然后软件开发完以后,生成代码以后,做相关的调试跟测试。最后就是开发流程的管理工具。所以我们今天讲的范畴其实就是覆盖了这5个,我们准备用这5个工具来开发和测试相关的软件。

怿星科技在国产软件研发工具链方面的探索

怿星是做网络仿真,包括网络软件开发通信协议栈,包括智能座舱软件出身的,我们在这两个领域到底做了哪些探索?

图片

以上是怿星科技目前的产品矩阵。最右边部分比较容易理解,其实就是自动化的测试设备、HIL的设备,来仿真整个的电子电气架构环境,做软件集成测试仿真的。

这块其实覆盖了上面的测试验证过程,上面的过程大家都比较熟悉,因为做电子电器开发或软件开发,基本上就是传统的V模型,从需求定义、架构设计到软硬件的详细设计,到软件测试,再到系统集成测试,所以右侧的这些大型的HIL机柜其实就是为了服务好系统集成测试的,然后左边这两侧的其实就是服务好整个的软件开发工作,包括架构设计,包括软硬件的详细设计,包括软件测试的。我们也提供标准中间件的产品,包括车载通信的协议栈中间件,也包括智能座舱的中间件。中间件这块的话,现在CP的话基本上用的比较多,大家知道整个AP在国内用的不是特别多的,大家都有自己的一些想法来去实现域控制器方面的这样一个软件架构的一些框架。

然后中间的话其实就是研发工具链,研发工具链的话其实就是类似于Vector的这些相关的一些上位机的软件以及各种各样的接口卡,实现的功能其实就是做软件架构设计,然后做代码生成,做软件测试,帮着大家来去做好整个的软件开发。当然我们的目标是提供工程师人手一套的这样的工具,来做好软件开发跟测试。

图片

那具体包含了哪些?其实最核心的就是SolarONE,这是一个仿真测试的开发的软件平台,这个是跑在Windows环境下的,方便我们的软件工程师拿它做软件架构设计需求管理,然后做代码生成和软件测试的,主要用于网络仿真,就是车载网络的代码以及架构设计以及网络仿真和测试。然后基于这个SolarONE仿真测试平台,周边就是各种各样的硬件接口卡,硬件接口卡的话包括了CAN/LIN的接口卡,包括以太网的接口卡,故障注入模块,各种I/O接口卡等。

左下角就是刚才说的这些接口卡,包括各种I/O板卡,各种电源接口板卡,然后右下角的其实就是各种专项测试仪,基于现在的软件开发中遇到的各种各样的专项测试,也包括TC8的测试,TC10的测试,DDS的测试,包括同步精度的测试,比如TSN的网络的同步精度的测试,这些是我们把它归为专项测试仪。

图片

这是一个更详细的介绍,包括了刚才说的5430是我们首款国产的高性能的汽车以太网的接口卡,然后的话就是CAN/LIN的接口卡5130,再加上各种各样的测试仪,包括ETS4620的IOP测试仪,现在是国内首款真正做IOP底层测试的IOP测试仪,然后包括了高分辨的TSN的时钟网络同步精度的一个测试仪,用于TSN的网络分析的。

再有就是左上角的场景化的测试套件,其实就是各种各样的测试用例的用例库,所以基于这样一个软件,三套硬件,再加上一套测试用例库,我们搭建起了各种各样服务于不同场景的研发测试设备。

举个例子,基于我们SolarONE的软件,再加上接口卡,我们搭建起了智能座舱的开发环境,包括了软件的解决方案,包括了 UI/UE的逻辑层的解决方案,包括了自动化的测试方案。其实里面有大量的工具库,包括了我们的eStation。eStation是做座舱软件的开发流程管理的,包括需求管理。然后eFramework是我们的开发框架,是基于智能座舱的整个的上层应用的一个框架,用于帮助我们客户做好应用层软件的平台化。

图片

大家知道做硬件及基础软件这块的平台化还是比较好做的,大家提的中间件以下部分做平台化,而真正难做平台化的,其实是上层应用的平台化,我们eFramework的框架其实就是为了帮助我们客户做好上层应用层软件的平台化,包括UI/UE,包括逻辑层,包括业务层相关的软件代码的平台化,怎么做好。

图片

右下角的图可以帮大家理解,我们做了关于界面层的,关于UE逻辑层的和关于UI业务逻辑层的这样的一个解耦,刚才龙平先生也提到了相关的解耦,解耦完以后,各个层包括各个逻辑层、应用层,界面层,他们是通过信号来去进行交互的,通过各个层的逻辑层的解耦,再通过各个逻辑层之间信号的标准化来去完成各个层面的解耦,这是我们的方法。

这个框架现在在广汽、吉利、奇瑞等项目上都做了相关的应用,帮助我们客户做好相关的应用层软件的平台化。

除了软件代码,还有就是基于Solar的一个整车的智能座舱的测试的环境来去做好智能座舱的功能测试,这个就不多讲了。主要也是基于Solar的我们国产化的开发平台,它形成了这样一个Python的接口,所以它能够做到支持各种的硬件,支持各种的相关的测试用例库。

图片

这是座舱测试方案的大概的框架,它的优势其实也是基于刚才我说的这套环境,然后做好模块的组合,因为它支持各种各样的模块的接口,包括视频图像声音导航,包括机械臂,它兼容各种各样市面主流的硬件设备,可以支持集群化部署。这套方案也是基于我们SolarONE平台的,如果需要在云端部署,还需要SolarManager套件,它是一个云端部署的管理套件,支持云端的管理平台的对接及资产的管理,相关的一些测试报告的生成。同时它是一个低代码的工具,所以它完全可以通过图形化的界面来去做拖拽式的开发。

刚才说了智能座舱,现在讲一下车载通信,我们怎么做?其实也是基于SolarONE这个仿真测试平台,包括EEA架构设计,eVisionStack的中间件,也就是协议栈等代码的自动生成,还有就是仿真测试。所以我们支持左侧的开发,而右侧的测试包括了我们刚才说的各种各样的测试仪,包括了IOP的测试仪,然后TSN的测试仪,然后TC8、TC10、DDS的相关的测试仪,这些都是基于国产化的SolarONE上位机软件加上国产化的相关的接口卡开发出来的。

再往上的话就是集成测试相关的解决方案,包括了我们以太网的测试设备,包括了CAN/LIN的测试设备,包括了OTA的测试设备等等。

图片

所以大家可以看到,怿星科技基于这样一个统一的框架,也就是刚才说的SolarONE加各种硬件接口卡的这样一个框架,我们搭起了从软件开发到软件测试再到系统集成测试的这样一个开发环境。所以我们把它叫做工具链。我们强调的是“链”这个字。

这里我具体讲一下DDS测试的解决方案,其实基于我们刚才说的测试框架的话,我们实现了协议的测试,通信及交互功能测试,性能稳定测试,当然也包括我们的一些定制化的测试内容。这是网络测试的拓扑。我们基于 Robert Framework来搭建的框架,当然也是在我们SolarONE的开发环境里面的,同时也包括了测试中间件,相关的被测件,DDS的一个相关的协议栈,结构很简单,基于我们的上位机软件,基于我们的测试用例库,同时加一个T1转Tx的接口卡,还有就是打流仪。非常轻量化的一个DDS的测试的一个框架和解决方案。

图片

图片

讲完座舱测试和网络测试,接着的话就是我们自动驾驶的解决方案,自动驾驶的话主要是数据流,所以包括了整个的数据的采集,数据的存储,数据的脱敏和标注,再到数据的仿真注入的一个测试环境。

以上大概讲了一些我们的基于SolarONE整个框架的一些解决方案,包括座舱、自动驾驶,整车的开发环境。

国产工具链的机遇

其实我们整个的汽车电子的发展,大家也知道,我们基本上就是伴随着德国和美国的一些工具链成长起来的。我们在大概20年前,从2003年整个汽车行业开始慢慢崛起,刚开始10年的话,整个汽车产业链还是以打铁的为主,机加工各种轮毂铸件为主,汽车电子那时候还是非常弱小的,我们的汽车电子是学习欧美的整个的企业的经验慢慢成长起来的,原来我们做发动机电控,做ABS/ESC,做尾门控制器、座椅控制器,当时连尾门控制器、座椅控制器我们都做得不好,防夹算法、纹波算法我们都做得不是很好,但现在不一样了。

随着智能化的发展,包括域控制器,整个中国其实处于一个非常领先的地位。所以随着整个中国工具链,包括整个中国产业链的崛起,我觉得对于中国的整个的自主的工具链这块,软件工具链这块其实是一个极大的机会。但是这个软件的优势来自于哪里?是来自于整个智能化,像蔚来的龙平先生,他们也是从互联网来的,从手机行业来的,从消费品来的,所以中国有大量的软件工程师红利,有大量的软件工程师和硬件工程师红利,这样的话我们有极大的信心来去开发,或者说有极大的技术基础去开发这样的软件工具链,同样让我们有足够的市场试错空间。

这些机遇具体从哪来?

怿星科技成立于2014年,10年时间了,前5年我们基本上是做集成交付为主,从2020年开始我们自研相关的核心设备,所以我们基本上现在的核心设备的思路主要来自于这几点,怎么来去用好中国在这些方面的创新来去做好新一代的软件开发工具链,反过来,怎么用这些软件工具链来支持好中国在这些方面的创新。

首先的话就是复杂场景和数据,这个比较好理解,以自动驾驶为例,自动驾驶是典型的以数据驱动,以复杂场景为驱动的软件开发方式,跟传统的Model Base的完全不一样了,它是以数据驱动的方式来开发的。数据驱动的方式需要新的软件开发工具,这也是为什么我们开发了数据仿真注入系统来去做自动驾驶的开发。

第二个人工智能,主要来自于两方面的作用,第一方面的话当然是因为人工智能大模型等等带来的整个软件开发方式的区别。第二个的话就是人工智能在软件工具链方面的一个应用,我相信大家如果做软件开发的话,大家普遍已经在整个代码的生成的过程中用各种智能代码工具了,做代码的生成,做代码的检查等等,所以人工智能带来的软件开发以及软件开发方式方面的变革是非常大的。

第三个的话,今天讨论比较多的就是域控,包括整个的分布式架构,当然这个分布式架构的话,从现在的车内的分布式架构已经往车路云的分布式架构走了,其实大家刚才秀的博世那张图,其实最终的就是车路云的或者车云,当时其实博世没有考虑到路,车路协同的话其实是中国的概念,但是总体来讲,车云、端云之间的协同,分布式计算架构这块的话是未来的一个终局。

第四个的话是功能安全、信息安全给工具链带来的新需求。

第五个,是关于开发流程。大家讨论比较多的怎么来做好瀑布式跟敏捷开发的一个统筹。因为瀑布式的话其实就是V模型,我们大家比较熟悉V模型,但是从手机行业消费品行业,包括互联网行业带来的敏捷开发的方式,大型的网络软件,大型的这种软件管理方式,用敏捷开发的方式来驱动快速的迭代,这个的话其实跟瀑布式是表面上看是冲突的,实际上大家在实践过程中已经有一些非常好的经验了,我们所谓的大瀑布、小敏捷,大家已经在做相关的融合,但在工具链这块怎么来去做好大瀑布和小敏捷的一些结合,这个是非常重要的点。

第六个,开发方式。我们怎么去做好云原生,怎么去做好相关的一些容器化的部署,很多容器化的技术已经在我们的软件开发中在应用了。包括我们在整车架构中经常讨论的SOA的架构,相关的微服务,其实跟原来的云端部署的方式,包括容器化的方式其实是非常类似的。

第七个,是供应链生态,我们的软硬分离。软硬分离是一个很好的概念,软硬分离其实是两个概念层面的东西,第一个是供应链层面,供应链层面有做硬件的供应商,有做软件的供应商,这是完全从供应链层面说软硬分离。另外一个层面的话是技术层面,即使是同一家供应商做整个的域控的整个软件,从底层软件到中间件到上层应用层软件,其实也在做软硬分离。从供应链层面和技术层面的软硬分离也带来了对工具链的挑战。怎么来去服务好软硬分离的一个趋势?所以基于这些趋势的话,我们其实一直在努力地来去做好我们的软件工具链。

这是软件工具链整个现在国内的生态,这张图其实大家看到的不多,因为我们做工具链这块做了很久,但是很难找到国内对于工具链这块的整个生态的一个介绍,包括整个市场的介绍,我们把我们的友商也列上去了,国内在做软件工具的友商不多,当然左侧的Global玩家大家是比较熟悉,从 Vector、EB、Windriver、dSpace,这个是大家用的比较熟悉的,但在国内大家在做这方面的探索其实不多,所以我们呼吁大家关注国产的工具链。

一个好的趋势是,现在很多大的主机厂已经成立了国产工具链的一个小组,其实就是应对极端情况下的一些风险。说明大家正在关注国产工具链的重要性。我们最近接到了大量的主机厂,包括Tier1的邀请,来去跟他们探讨国产工具链,所以这里看到大家其实很多致远、经纬、昆易、同星,包括我们怿星等等,大家都在做这方面的探索,但是这个探索是极难的,工具链这块其实还是有很高的门槛,从性能、功能到一致性这块,包括易用性这块,大家都在探索,当然我们也得思考我们的优势在哪里?主要是研发团队在对国内的广大客户产生的新需求能够快速响应,所以刚才我说的那些专用测试仪,其实就是基于国内的客户的一些需求来去开发的专用测试仪,我们能够在很短的交付周期内完成这些产品的交付。

最后做个展望,其实国产工具链这块的话,我们探索了那么多年。这么多年下来,我们有一些对于趋势的展望。第一个就是合作,我们相信汽车供应链和各类的科技公司会产生大量的协作,来去支持研发工具链的创新,因为我们需要大量的软件和硬件的人才来去做好开发。然后市场份额上的转化,我们相信国产工具链肯定会崛起的,随着供应链的崛起。第三创新产品,国产工具链的崛起肯定是伴随着相关的一些特殊工具链的创新,而且创新的话都是基于场景化的,各种场景化的测试和开发的需求。第四行业标准,整个标准的建立才能帮助国产工具链的快速发展,大家分好工来去分别支持好相关的开发,然后做好互操作性。最后是生态,我们希望建立起这样一个健康的生态。

好,我的分享就到这里,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

react-signature-canvas 实现画笔与橡皮擦功能

react-signature-canvas git 地址 代码示例 import React, { Component } from react import { createRoot } from react-dom/clientimport SignaturePad from ../../src/index.tsximport * as styles from ./styles.module.cssclass App extends Component {state { trimmed…

sheng的学习笔记-AI基础-正确率/召回率/F1指标/ROC曲线

AI目录:sheng的学习笔记-AI目录-CSDN博客 分类准确度问题 假设有一个癌症预测系统,输入体检信息,可以判断是否有癌症。如果癌症产生的概率只有0.1%,那么系统预测所有人都是健康,即可达到99.9%的准确率。 但显然这样的…

多款云存储平台存在安全漏洞,影响超2200万用户

据苏黎世联邦理工学院研究人员Jonas Hofmann和Kien Tuong Turong的发现,端到端加密(E2EE)云存储平台存在一系列安全问题,可能会使用户数据暴露给恶意行为者。在通过密码学分析后,研究人员揭示了Sync、pCloud、Icedrive…

方形件排样优化与订单组批问题探析

方形件排样优化与订单组批问题是计算复杂度很高的组合优化问题,在工业工程中有很广泛的应用背景。为实现个性化定制生产模式,企业会选择订单组批的方式,继而通过排样优化实现批量切割,加工完成后再按照不同客户需求进行分拣&#…

洛谷 P1226:【模板】快速幂

【题目来源】https://www.luogu.com.cn/problem/P1226【题目描述】 给你三个整数 a,b,p,求 a^b mod p。【输入格式】 输入只有一行三个整数,分别代表 a,b,p。【输出格式】 输出一行一个字符串 a^b mod ps&a…

多线程——线程池

目录 前言 一、什么是线程池 1.引入线程池的原因 2.线程池的介绍 二、标准库中的线程池 1.构造方法 2.方法参数 (1)corePoolSize 与 maximumPoolSize (2)keepAliveTime 与 unit (3)workQueue&am…

GPT-4o 和 GPT-4 Turbo 模型之间的对比

GPT-4o 和 GPT-4 Turbo 之间的对比 备注 要弄 AI ,不同模型之间的对比就比较重要。 GPT-4o 是 GPT-4 Turbo 的升级版本,能够提供比 GPT-4 Turbo 更多的内容和信息,但成功相对来说更高一些。 第三方引用 在 2024 年 5 月 13 日&#xff0…

HTB:Blocky[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机进行端口扫描 再次使用nmap对靶机开放端口进行脚本、服务信息扫描 对FTP服务版本:ProFTPD_1.3.5进行漏洞扫描 对SSH服务版本:OpenSSH 7.2p2进行漏洞扫描 使用浏览器访问靶机80端口 使用浏览器访问U…

信息搜集-域名信息收集

1.1 域名信息收集 WHOIS查询: 通过WHOIS查询可以快速得到域名的IP段、DNS解析、注册时间、地址等信息,或许运用合理可以巧妙的绕过CDN。备案信息收集: 网站备案信息收集更加方便定位资产到具体的企业名称、ICP备案号、备案人名称、公司、所处…

图片写入GPS经纬高信息

近期项目中需要往java平台传输图片,直接使用QNetworkAccessManager和QHttpMultipart类即可,其他博文中有分享。 主要是平台接口对所传输图片有要求:需要包含GPS信息(经度、纬度、高度)。 Qt无法直接实现,…

2003年秋季我给哈工大数学研究生写的讲义

我写的没出版讲义共有278页,书末参考文献 我写的讲义书末索引,冯克勤的书《代数数论》书末没有索引,陆洪文、李云峰的书《模形式讲义》书末也有索引 我写的讲义自制的封面 (对数学的研究我的经验是,跟其他科学类似&am…

「Qt Widget中文示例指南」如何实现半透明背景?

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将为大家展示如…

Java应用程序的服务器有哪些

1.Tomcat、Jetty 和 JBoss 区别? Apache Tomcat、Jetty 和 JBoss都是用于部署Java应用程序的服务器,它们都支持Servlet、JSP和其他Java EE(现在称为Jakarta EE)技术。尽管它们有一些相似的功能,但它们之间还是存在一些…

Mysql在线修改表结构工具gh-ost使用说明及实践

本文内容较多,篇幅较长,若不想了解ghost原理,几种模式的介绍以及具体的验证过程,可直接跳到‘四 gh-ost使用总结’查看简洁版使用说明。 一 gh-ost使用场景 生产环境当有关于一个大表的大操作时(比如select count一个大表)&…

沈阳乐晟睿浩科技有限公司抖音小店领域的强者

在当今数字化浪潮的推动下,电子商务以其便捷性、高效性和广泛的覆盖面,成为了推动经济发展的新引擎。而抖音小店,作为短视频平台上的新兴电商形态,更是凭借其庞大的用户基础、精准的内容推送机制以及独特的购物体验,迅…

qt QNetworkProxy详解

一、概述 QNetworkProxy通过设置代理类型、主机、端口和认证信息,可以使应用程序的所有网络请求通过代理服务器进行。它支持为Qt网络类(如QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer、QNetworkAccessManager等)配置网络层代理支持…

Spring Boot框架下的厨艺社交网络构建

1 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时间变得更加地宝贵化,因为每天的…

iOS 本地存储地址(位置)

前言: UserDefaults 存在沙盒的 Library --> Preferences--> .plist文件 CoreData 存在沙盒的 Library --> Application Support--> xx.sqlite 一个小型数据库里 (注:Application Support 这个文件夹已开始是没有的,只有当你写了存储代码,运行之后,目录里才会出…

IDEA开发工具使用技巧积累

一、IDEA 工具设置默认使用maven的settings.xml文件 第一步:打开idea工具,选中 File ——> New Projects Setup ——> Settings for New Projects 第二步:先设置下自动构建项目这个选项 第三步:选中 Build Tools ——>…

深度学习-循环神经网络-LSTM对序列数据进行预测

项目简介: 使用LSTM模型, 对文本数据进行预测, 每次截取字符20, 对第二十一个字符进行预测, LSTM层: units100, activationrelu Dense层: units输入的文本中的字符种类, 比如我使用的文本有644个不同的字符, 那么units64 激活函数: 因为是多分类, 使用softmax 因为这是最…