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

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的邀请,来去跟他们探讨国产工具链,所以这里看到大家其实很多致远、经纬、昆易、同星,包括我们怿星等等,大家都在做这方面的探索,但是这个探索是极难的,工具链这块其实还是有很高的门槛,从性能、功能到一致性这块,包括易用性这块,大家都在探索,当然我们也得思考我们的优势在哪里?主要是研发团队在对国内的广大客户产生的新需求能够快速响应,所以刚才我说的那些专用测试仪,其实就是基于国内的客户的一些需求来去开发的专用测试仪,我们能够在很短的交付周期内完成这些产品的交付。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python这10个接口自动化的装饰器

在Python接口自动化测试中,装饰器可以用于增强测试函数的功能或改变其行为。以下是一些可能使用的装饰器示例: 设置和清理环境 setup:用于在测试开始前初始化环境或配置。 class CustomTestRunner: def __init__(self): self.setup_done …

【Spring】Cookie与Session

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 一、Cookie是什么? Cookie的存在主要是为了解决HTTP协议的无状态性问题,即协议本身无法记住用户之前的操作。 "⽆状态" 的含义指的是: 默认情况…

摄像头点击器常见问题——摄像头视窗打开慢

【嵌入式开发】可编程4k蓝牙摄像头点击器_能编程的摄像头-CSDN博客 拥有上述文章产品的朋友出现标题所述问题,可继续往下阅读 出现以上问题,摄像头画面打开较慢,可以按以下操作进行设置 在环境变量里设置一下这个参数,值设置为1&…

Springboot项目搭建的问题

1.第一次出现这个问题是在使用postgresql进行搭建项目的时候,但是配置文件中的驱动一致导入不了 最后发现是meaven中依赖导入不进来(不知道为什么),于是手动的在meaven中央仓库下载了对应的jar进行配置 然后项目可以正常启动 2.…

Java-I/O框架06:常见字符编码、字符流抽象类

视频链接:16.16 字符流抽象类_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p16 1.常见字符编码 IOS-8859-1收录了除ASCII外,还包括西欧…

搜索引擎算法更新对网站优化的影响与应对策略

内容概要 随着互联网的不断发展,搜索引擎算法也在不断地进行更新和优化。了解这些算法更新的背景与意义,对于网站管理者和优化人员而言,具有重要的指导意义。不仅因为算法更新可能影响到网站的排名,还因为这些变化也可能为网站带…

CSS兼容处理

“前端开发兼容——CSS篇” 在前端开发中,CSS样式的兼容性问题常常让开发者感到棘手,尤其是当涉及到IE浏览器时。由于IE浏览器版本繁多,每个版本在CSS支持上还存在差异,这导致开发者在实现统一的视觉效果时,不得不编写…

动态规划之回文串问题

文章目录 回文子串最长回文子串分割回文串 IV分割回文串 II最长回文子序列让字符串成为回文串的最少插入次数 回文子串 题目:回文子串 思路 状态表示:dp[i][j]表示s字符串由i到j是否是回文子串状态转移方程: s[i] ! s[j],则i到j一…

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得 (一)

【HarmonyOS】鸿蒙应用低功耗蓝牙BLE的使用心得(一) 一、前言 鸿蒙官网文档中蓝牙部分,对于之前没有开发过蓝牙的同学,使用和查阅起来不是很方便。因为只是API的调用说明。并没有蓝牙整个调用流程的讲解,所以看起来会…

一个简单的例子,说明Matrix类的妙用

在Android、前端或者别的平台的软件开发中,有时会遇到类似如下需求: 将某个图片显示到指定的区域;要求不改变图片本身的宽高比,进行缩放;要求最大限度的居中填充到显示区域。 以下示意图可以简单描绘该需求 以Androi…

蚁剑连接本地木马文件报错

项目场景: 本地搭建php和蚁剑环境,连接本地木马文件ma.php 问题描述 使用蚁剑连接localhost时报错 错误{ "address":"127.0.0.1" "code":"ECONNREFUSED", "errno":"ECONNREFUSED", &qu…

网页上的视频怎么下载下来?三种方法

分享三个简单好用的网页视频下载工具,值得使用! 1.IDM IDM 是一款可以提高下载速度达5倍的工具,同时具有恢复、调度和组织下载的功能。如果由于网络问题或意外的电源中断,程序将恢复未完成的下载。 IDM 还具有一个完全功能的站点…

使用 FastGPT 工作流实现 AI 赛博算卦,一键生成卦象图

最近那个男人写的汉语新解火遍了全网,那个男人叫李继刚,国内玩 AI 的同学如果不知道这个名字,可以去面壁思过了。 这个汉语新解的神奇之处就在于它只是一段几百字的提示词,效果却顶得上几千行代码写出来的应用程序。 这段提示词…

《虚拟现实的边界:探索虚拟世界的未来可能》

内容概要 在虚拟现实(VR)技术的浪潮中,我们见证了其从实验室的奇想逐渐走向日常生活的非凡旅程。技术发展的背后是不断突破的创新,早期的设备虽然笨重,但如今却趋向精致、轻巧,用户体验显著提升。想象一下…

无人机避障——4D毫米波雷达Octomap从点云建立三维栅格地图

Octomap安装 sudo apt-get install ros-melodic-octomap-ros sudo apt-get install ros-melodic-octomap-msgs sudo apt-get install ros-melodic-octomap-server sudo apt-get install ros-melodic-octomap-rviz-plugins # map_server安装 sudo apt-get install ros-melodic-…

推荐一个让线程池变的更简单的工具,轻量级的动态可监控线程池!(带私活源码)

背景 作为一个Java开发攻城狮,应用里少不了使用ThreadPoolExecutor 创建线程池,在使用的过程中你是否有以下痛点: 1、代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 2、凭经验设置参数值&…

Fluent 后处理:动画制作

瞬态仿真中,动画制作是很重要的一个后处理步骤。Fluent中动画输出分为两步操作。 步骤 1:设置动画内容 在Fluent界面左侧树状菜单中的“solution animations”页面,设置动画内容。 其设置界面如下图所示。 1 合理设置动画帧的输出频率&…

机器人转人工时,开启实时质检(mod_cti基于FreeSWITCH)

文章目录 前言联系我们实现步骤1. 修改拨号方案2. 启用拨号方案 前言 在客户与机器人对话中,是不能开启质检功能的。因为机器人识别会与质检识别产生冲突。如果用户想通过机器人转接到人工时,开启质检功能,记录客户与人工之间的对话。应该如…

简记Vue3(二)—— computed、watch、watchEffect

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

Linux字体更新 使用中文字体

问题描述,处理之前,中文乱码 处理后的结果 压缩需要上传的字体: 上传到LInux的字体目录,上传后解压出来 刷新字体: fc-cache -fv 测试是否正常 fc-list | grep "FontName"如果还不行 可以在代码里面指定字…