Shwetha Bhadravathi Patil,Mathworks
基于模型的设计通过提供高级设计抽象和产品代码的自动生成,比传统开发具有许多优势。AUTOSAR软件组件的建模和代码生成允许您自动化指定和同步设计、代码和描述文件中的冗长标识符的过程。
加入我们,学习Simulink对AUTOSAR万博1manbetx特性建模AUT万博1manbetxOSAR经典和自适应软件应用程序的高级支持,编写AUTOSAR软件架构,模拟AUTOSAR成分和ecu,以及C/ c++产品代码生成。
MathWorks Engineer将简要介绍最新的AutoSAR标准,包括经典和自适应平台,提供了显示如何使用Simulink,AutoSAR BlockSet和嵌入式编码器来设计,模拟,验证和生成Autosar应用程序软件组件代码的产品演示。万博1manbetx
Shwetha Bhadravathi Patil是MathWorks的产品经理,致力于AUTOSAR和代码生成产品。s manbetx 845在加入MathWorks之前,Shwetha曾担任Delphi Automotive公司基于AUTOSAR的项目的嵌入式软件工程师,并曾担任Analog Devices Inc.的技术营销工程师。
录制时间:2020年11月17日
大家好。欢迎参加AUTOSAR经典和基于模型的设计简化自适应的网络研讨会。所以我是Shwetha Bhadravathi Patil, MathWorks的AUTOSAR Blockset产品经理。这是我今天的日程安排。首先,我将给你一个关于AUTOSAR的概述,然后讨论Simulink for AUTOSAR Classic和我们从AUT万博1manbetxOSAR Blockset提供的最新支持,然后我将讨论Simulin万博1manbetxk for AUTOSAR Adaptive。
让我先给大家介绍一下AUTOSAR。在这里,你可以看到非AUTOSAR和经典AUTOSAR。正如您在这里看到的,在非autosar架构中,应用软件和基本软件是紧密集成的。这层看起来很硬。应用软件依赖于硬件,而在AUTOSAR Classic中,它有一个分层的架构。这将为依赖于硬件和标准软件的高级应用程序特性提供明确的划分。有效地,硬件和软件将广泛地相互独立,软件将具有更高的模块化和可移植性。
因此,开发可以通过水平层来解耦。这减少了开发时间和成本。软件的重用在OEM和供应商中也有所增加。这通过减少上市时间来提高质量和效率。
经典软件架构遵循基于信号的通信和静态分配的软件组件,并支持对ecu的单片更新。万博1manbetx这对于传统的汽车应用来说非常棒,包括车身控制模块、动力系统等等。为了满足高度自动驾驶应用的需求,AUTOSAR组织引入了自适应AUTOSAR。它利用了更多的计算能力,满足了可伸缩性和易于更新的需求。自适应AUTOSAR是基于一种面向服务的体系结构的新范式创建的,在这种范式下,应用程序将系统中可用的服务组合起来实现。
因此,通过这个概念,应用程序可以基于新的和更新的服务动态地重新配置自己,以满足可伸缩性和易于更新。好消息是,使用Simulink,您可以一次性万博1manbetx设计软件,然后配置并部署到多个遵循多个体系结构的目标上。重要的一点是,开发人员可以从遗留模型开始,并为Classic或Adaptive架构配置它,而不是每次都从头开始。
您还可以通过使用现有的工作流将现有的组件迁移到新的体系结构。因此,有了Sim万博1manbetxulink,您可以设计、部署和模拟您的模型到遗留ecu到AUTOSAR Classic或Adaptive应用程序,或到fpga和gpu,以满足电机控制和自动驾驶应用程序的要求。AUTOSAR Classic非常受欢迎,它已经上路了。我们为生产目的提供过去10年的经典AUTOSAR支持。万博1manbetx
在这张幻灯片中,我收集了AUTOSAR客户的用户文章和演示。FCA描述了从需求到Simulink中的建模和代码生成,再到AUTOSAR软件的车载测试的完整开发过程。万博1manbetx因此,AUTOSAR联盟的创始成员之一BMW讨论了在敏捷的工作流中使用基于模型的开发和持续集成的AUTOSAR。
John Deere提供了一个有趣的讨论,关于他们如何使用AUTOSAR和基于模型的设计来应对复杂农业机械的挑战。LG Chem和Magneti Marelli讨论在符合ISO 26262和A-SPICE标准的背景下开发AUTOSAR软件。最后,IDNEO提供了使用AUTOSAR工具链开发复杂设备驱动程序的不同视角。他们报告说开发时间快了70%,并且在设计阶段发现了80%的错误,而不是在硬件测试阶段。
好的,现在让我谈谈Simulink AUTOSAR 万博1manbetxClassic。在这里,我们看到一个放大的AUTOSAR经典建筑的代表。应用层包含软件的算法部分,算法部分又分为软件组件。软件组件和基本软件之间的所有通信都通过标准化接口的RTE路由。这样,RTE就像一个虚拟功能总线。
万博1manbetx我们的客户使用Simulink对应用软件进行建模和代码生成。如果您使用AUTOSAR创作工具进行架构定义,您可以在Simulink中导入或导出软件描述文件或ARXML文件。万博1manbetx从2019b版开始,您可以使用System Composer在Simulink环境中直接创建组合模型,并拥有一个与Simulink实现紧密集成的体系结构模型版本。万博1manbetx我们稍后会更详细地讨论。最后,使用AUTOSAR Blockset,您可以模拟基本的软件服务。因此,通过这种方式,可以在Simulink中直接模拟应用软件调用基本软件服务的函数行为。万博1manbetx
好的,现在我将向你们展示如何将非AUTOSAR模型转换为AUTOSAR模型。在这里,我有一个简单的Simulink模型,我想直万博1manbetx接转换为AUTOSAR。为此,我要启动一个AUTOSAR组件应用,它会启动快速启动。在这里,你可以选择Component类型。创建模型引用,以便您可以将模型映射到软件组件。
在这里,您可以创建基于Simulink模型或从ARXML导入的默认值。万博1manbetx
好的,快速启动工具已经完成了映射。现在让我启动代码映射,并且可以看到这些函数如何映射到AutoSAR中的Runnable。在右侧,您可以选择更改代码属性。在这里,您可以看到Simulink端口如何映射到Au万博1manbetxtoSAR元素。此外,在这里,您可以更改通信属性等。
在AUTOSAR字典中,您可以看到如何配置这些接收器端口和可运行程序。你可以点击一个可运行的,然后改变[听不清]事件。所以默认情况下,它被设置为TimingEvent。有一个可循环的变量。这就是数据元素如何与发送接收器接口相关联。
在这里,您可以根据需要更改XML选项。一旦您对这一点感到满意,现在可以进入配置参数设置。你可以进入AUTOSAR代码生成面板。在这里,您可以选择您希望在ARXML 4中生成代码的模式。
现在我们已经准备好进行代码生成了。我们继续,生成代码。好的,这里您可以看到代码生成报告已经创建。在[听不清]视图中,你可以点击生成的代码函数。它将显示在相应的块。或者,如果您单击Simulink块,它也将万博1manbetx显示相应的代码。您还可以查看生成的ARXML文件。
通过这种方式,您可以将非AUTOSAR模型转换为AUTOSAR模型。现在我要谈谈AUTOSAR的工作流程。如果您已经有一个现有的Simulink模型,您可以直接在Simu万博1manbetxlink中为AUTOSAR配置它。或者您也可以从在System Composer中编写架构开始。然后将AUTOSAR配置的Simulink模型链接到System Com万博1manbetxposer中的体系结构模型。一旦您对自己的开发感到满意,您就可以使用嵌入式编码器生成代码和ARXML。这被称为自底向上的工作流。
另一方面,如果您开始使用第三方创作工具,您可以导出ARXML,它可以导入到Simulink或System Composer中。万博1manbetx因此,这在Simulink中创建了一个预配置的框架模型,在System Composer中创建了一个体万博1manbetx系结构模型,您只需添加实现即可。这被称为自顶向下的工作流。
最后一个工作流是前两个工作流的结合。如果您正在使用创作工具,您仍然可以使用System Composer或Simulink进行架构更改。万博1manbetx在这种情况下,必须将生成的ARXML文件导入到第三方创作工具以保持一致性。这叫做往返。
在这里,我将通过在Simulink中创建AUTOSAR架构向您展示自下而上的工作流。万博1manbetx我将通过构建一个符合AUTOSAR的节气门位置控制系统来演示如何生成ARXML代码。这是组件模型实现。例如控制器模型和节气门传感器模型。接下来,我们可以通过启动Simulink开始页面来编写架构。万博1manbetx
让我打开软件架构模板。一个新的AUTOSAR体系结构模型打开了。在这个新的Simulin万博1manbetxk工具栏中,Modeling选项卡支持用于架构建模的常见任务。万博1manbetx在这里,选项板包括软件组件、软件组合和基本软件建模的图标,包括与模型一起操作的诊断和NvM服务组件。
这种目的构建的编辑器称为合成编辑器。给出了基于AUTOSAR虚拟功能总线的AUTOSAR软件体系结构。现在让我清除窗口中的默认内容,这样我就可以构建一个新的合成。因为我们有一堆传感器组件,让我为传感器创建一个子组合架构。在传感器内部,我们可以添加一个组件,并可能将其命名为TPS_Primary。
请注意,有选项可为此组件创建新的Simulink模型。万博1manbetx您可以链接到现有的Simulink模型,并从ARXML创万博1manbetx建组件。在这里,我们将链接到AutoSar_Throttle_sensor1模型。请注意组件上的徽章更改为反映Simulink模型指定的组件类型。万博1manbetx同样,我们将添加其余的传感器组件并将其连接起来。
组合编辑重用了所有关于Simulink直观的伟大事物万博1manbetx编辑功能。当你连接时,它会自动减少线路混乱。
好的,现在我们已经组装了我们的构成层次结构,我们可以更新模型以刷新任何集成问题。一切都很好去这里。我们现在将保存我们的模型并在构图下调用它mytpc。您可以使用与任何常规Simulink模型相同的扩展名。万博1manbetx
现在我们已经创建了我们的组合,我将向您展示与Simulink需求的集成。万博1manbetx让我打开需求管理器应用程序。它会打开需求选项卡,这样我们就可以打开需求集。注意,它包含四个节气门位置控制应用程序组件。要在AUTOSAR组件中链接到需求,我们可以将需求从浏览器拖到组件块。
现在,在工作流中自然的下一步是通过模拟合成来应用V和V。为此,我们将打开Function Connectors来可视化组件模型可能正在调用的函数调用。节气门传感器模型调用排雷NvM服务功能和诊断功能。为了进行模拟,让我为诊断和NvM服务组件块添加参考实现。
让我们再次更新模型。好的,现在我们可以为客户端端口配置ID。下一件事,我想将组合输入和输出连接到真正的刺激数据。我对该模型进行了测试,带有油门体厂和踏板输入。我们将添加模型块和参考TPC组合,然后连接输入和输出。
现在,我将使用schedule Editor来调度我的组合组件的所有入口点可运行性。我可以可视化和控制可运行程序的执行顺序。看起来很好。现在让我点击播放来确保算法符合你的要求。它看起来很酷。
现在让我为组件生成AUTOSAR代码,并导出整个合成ARXML。现在,对于组合,一个通常是处理组件的数量,因此,生成的工件的数量。因此,在这里,我们使您可以很容易地收集所有这些工件,以便您准备好工作流中的下一步,这很可能在没有外部环境的情况下进行集成。
因此,这已经开始一个一个地构建组件模型,并在这个查看器上显示进展。注意,有6个组件是一个组件一个组件地构建的。现在它也在创建合成ARXML。有两个子文件夹,ARXML和source。因此,在ARXML文件夹中,每个AUTOSAR组件都有组件和实现描述文件,而体系结构模型有组合、数据类型和接口描述文件。
在源文件夹中,您将看到每个组件的代码。通过这种方式,您可以为组合创建体系结构模型,然后生成代码。因此,您可以使用文档中提供的这个活动脚本来尝试这个示例。
现在让我向您展示一个自顶向下工作流的演示。我将从导入合成描述开始。将组合导入到体系结构的过程应该是熟悉组件导入器的那些人所熟悉的。但是这里是我们在前面的演示中创建架构模型的重要组成描述和System Composer。
所以这是一个在第三方工具中创建的ARXML。请注意,它为4.2.2创建。我可以使用此API创建新的架构模型和对象。那么API我会打开一个架构模板。所以在这里,我会去建模选项卡。然后使用此导入ARXML选项。
因此,此导入的应用程序将要求您选择要导入的ARXML。如果您愿意,您可以配置建模选项。此导入的应用程序正在创建骨架架构模型。请注意,它为所有五个组件创建架构模型。
这是一个架构模型。让我来看看建模设置。到代码生成面板。是的,它已经在模式4.2中导入了。在这个组合模型中,在这个组件中,你可以缩小它来添加一个Simulink模型。万博1manbetx你还可以看到一个标志代表组件类型。现在,在添加逻辑之后,就可以在ARXML中导出代码了。
总结一下,在演示中,我们使用这个选项导入了一个ARXML。此外,您还可以使用这个importFromARXML API将这个组合描述导入到我们的体系结构模型中。同样,这个示例也可以作为实时脚本演示。您可以尝试此操作以了解更多关于此特性的信息。
现在让我谈谈AutoSAR时序扩展规范。如您所知,汽车问题的复杂性正在增长,因为它包括两个到三个核心,大概15到20个任务,数百个RTE事件到任务关系。可以将一些任务映射到50到60个可行的事件。因此,整合成为一个必不可少的和重要的任务,为核心分配任务。
因此,AUTOSAR引入了一个称为时间扩展的概念,以提供时间需求,指导系统的构建,并分析和验证系统的时间行为。在这里,您可以看到许多可运行程序映射到任务,然后映射到代码。同时,保持功能行为和及时执行也很重要。
这里的问题是命令将执行的顺序执行?那么你如何知道您评估或模拟此模型的订单?很难告诉数据依赖性。让我试试这个以弄清楚执行顺序如何影响最终结果。在这里,我们的端口连接到范围,检查最终结果。如果Runnable R1在Runnable R2之前执行,则您将获得这样的图形。但如果我翻转执行顺序,结果将改变。延迟与不同的值完全不同。
我们的客户提到这个信息非常重要。因此,我们导出了执行顺序以供进一步使用。在这里,我有一个例子来展示我们如何在Simulink中支持执行顺序约束。万博1manbetx万博1manbetx这里有一个Simulink模型,它有多个万博1manbetx可运行的。您可以看到它的执行顺序可以在日程编辑器中查看。我通过拖放来改变执行顺序。现在,我将继续验证并生成代码。你可以看到ARXML中的执行顺序约束。
总结一下,在20b版本中,我们支持导入和导出执行顺序约束,包括Schedu万博1manbetxle Editor对可运行和执行顺序以及ARXML文件的修改,以及使用执行顺序约束的ARXML更改更新AUTOSAR组件模型。总之,使用AUTOSAR Blockset,您可以建模和模拟AUTOSAR Classic软件,并且您可以采用多个设计工作流来导入、更新和导出软件描述文件,包括它的时间扩展。然后,您可以在System Composer中编写AUTOSAR合成,导入和导出合成ARXML文件,并为生产目的生成优化的C代码。
所以我想提一下,可以在开发周期的每个阶段使用自动节库块集。您可以将具有要求和模型的模型链接在组合,组件和子组件级别中的软件。而且,您可以通过模拟和调整软件来验证您的设计。这包括仿真AutoSAR基本软件服务。
从组件生成C代码。使用SIL和PIL的验证工作流是Simulink测试,以确保充分覆盖您的算法。万博1manbetx我们还生成ARXML,包括组合ARXML,并将其打包,以进入工具链中的下一个元素。例如,RTE生成器。
然后使用嵌入式代码和Autosar Slockset,您可以为ASIL D生成应用程序的AutoSAR代码。IEC认证套件可帮助您简化ISO 26262的开发过程。它包含ISO 26262中的表之间的映射以及可以执行的相应模型的设计工具,例如可以执行的背对背测试,也可以兼容兼容AutoSAR兼容代码。
好的,现在让我谈谈Simulink for Auto万博1manbetxsar Adaptive。Adaptive的层类似于经典,因为有组件,运行时,基本服务和硬件。也许自适应和经典之间的最大区别是,应用程序称为基础公共接口是直接服务的,因此API服务区域要大得多。
可能需要注意的是,Adaptive不一定运行在裸机上,但可以运行在虚拟机上。这里还使用了MathWorks工具来建模自适应应用程序的代码生成。我将介绍Adaptive的一些关键概念。
现在来看关键概念一,操作系统提供多进程POSIX操作系统能力。然后,每个自适应应用程序都是一个操作系统进程,具有自己的主要功能、逻辑内存空间和名称空间。现在,如果您查看进程管理,OS还提供了进程调度。执行管理器提供进程生命周期管理,包括启动、运行和终止进程。通信管理器提供进程间通信。
现在用于关键概念二,使用面向服务的进程间通信。如果您在进程之间查看IPC,IPC可以通过通信管理器或通过通信管理器再次通过通信管理器或网络。现在,如果您查看通信类型,Classic具有发件人接收器客户端服务器。自适应具有面向服务,可以分解为方法 - 更像是功能 - 通过事件通信 - 像消息一样思考 - 以及通过字段沟通 - 像数据一样思考。到目前为止,我们支持以万博1manbetxSimulink中的消息形式的事件的建模。万博1manbetx
第三个关键概念是一切都是c++。所有的模块和应用程序都需要用c++编写。这是AUTOSAR自适应的三个关键概念。这是AUTOSAR自适应路线图。现在我们已经完成了标准的第四版。我很高兴地说,MathWorks从2019a版开始支持Adaptive标准。万博1manbetx
在接下来的几张幻灯片中,我将介绍这些Adaptive概念,并向您展示如何在Simulink中为Adaptive应用程序建模和生成代码。万博1manbetx自适应应用程序需要并提供端口,如我们所讨论的,这些端口由服务接口类型化。在Si万博1manbetxmulink中,自适应应用程序将映射到模型。所需的端口事件将映射到Simulink中的消息。万博1manbetx在这里,我使用这个应用程序的发货AUTOSAR块将消息转换为信号。
在提供的端口端,这是非常类似的。同样,自适应应用程序映射到模型,甚至映射到输出端口。现在我将向您展示如何在Simulink中完成自适应工作流。万博1manbetx您还可以导入或导出自适应ARXML文件到Simulink,就像我们在经典ARXML工作流中做的那样。万博1manbetx
可以从Simulink模型开始万博1manbetx,您可以通过使用其数据字典将Simulink模型转换为AutoSAR自适应。然后,一旦您对您的设计感到满意,您就可以生成代码,然后是ARXML。这称为自下而上的工作流程。或者您可以从创作适应应用程序的架构开始,然后导出该ARXML,然后将其导入Simulink。万博1manbetx并且那是被称为自上而下的工作流程。迭代自上而下和自下而上的工作流程称为圆形跳闸。
现在让我们看看它是怎么运作的。这里,我有一个ARXML,是用创作工具创建的。现在我想用这两行代码把它导入Simulink。万博1manbetx这就创建了一个骨架自适应Simulink模型。万博1manbetx注意,已经创建了输入端口和输出端口。现在让我看看代码映射。注意端口中的Simulink是万博1manbetx如何映射到AUTOSAR属性的,以及这些所需的端口是如何配置的。
此处“服务发现方式”为“OneTime”。我可以把它转换成动态发现。然后,相应的服务接口具有导入的事件和名称空间。下面是您可以选择的XML选项。现在,在代码映射编辑器中,我们可以看到哪个Simulink端口映射到哪个AUTOSAR事件。万博1manbetx
现在让我们去设置。请注意,将系统目标文件设置为AutoSAR自适应和语言设置为C ++。在这里,您可以看到导入的ARXML的架构。我将为代码生成保留相同的架构。好的,现在让我向车道引导骨架模型添加示例实现。
现在让我在ARXML中生成代码。所以在生成的代码中,它在相应的位置有ARA调用。我们可以看到正在生成的应用程序、清单和服务清单ARXML文件。
正如您刚才在演示中看到的,您可以将应用程序配置为使用一次性服务发现或动态服务发现模式。一次性发现是指应用在初始化过程中一次性发现并订阅自适应服务。一次性发现可能需要自适应服务在应用程序之前启动,并阻止应用程序在新服务可用时使用它们。
对于版本2020a,您还可以使用动态服务发现,以便它在后台监视服务可用性,并在服务可用时订阅自适应服务。这就形成了一个更强大的系统。在版本2020b中,作为自适应代码生成的一部分,您可以为Linux主机上的运行时校准创建一个可执行文件。您也可以将可执行文件作为独立的应用程序运行。
自适应AUTOSAR Linux可执行工具链提供了用于编译生成代码的AUTOSAR adaptive功能集群库。使用ASAP2 Generator应用程序,您可以配置您的ASAP2文件生成,以指定一个ASAP2文件版本。您也可以选择在生成A2L文件时排除或包含注释。
总之,使用AUTOSAR Blockset,通过对具有事件通信和动态服务发现的自适应应用程序建模,您可以对AUTOSAR Adaptive软件建模、模拟和测试。您还可以导入和导出自适应ARXML文件。最后,您可以为代码生成生成优化的AUTOSAR c++代码。
好了,现在是时候在Simulink中构建AUTOSAR应用算法了。万博1manbetx首先,您可以尝试这些发货示例,并探索AUTOSAR Blockset支持的最新特性。万博1manbetx要了解更多关于AUTOSAR支持的信息,可以访问Math万博1manbetxWorks.com上的AUTOSAR Blockset页面。谢谢你的聆听。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。