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