通过提供高级设计抽象和生产代码的自动生成,基于模型的设计比传统开发提供了许多优势。AUTOSAR软件组件的建模和代码生成使您可以自动化指定和同步设计、代码和描述文件中的冗长标识符的过程。
加入我们,了解Simulink高级支持AUTO金宝appSAR特性建模AUTOS金宝appAR经典和自适应软件应用程序,创作AUTOSAR软件架构,模拟AUTOSAR组合和ecu,以及C/ c++生产代码生成。
MathWorks工程师将简要介绍最新的AUTOSAR标准,包括经典平台和自适应平台,并提供产品演示,展示如何使用Simulink、AUTOSAR Blockset和嵌入式编码器为AUTOSAR应用软件组件设计、模拟、验证和生成代码。金宝app
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的概述,然后谈谈Simulink for AUTOSAR Classic和我们从AUTOS金宝appAR Blockset提供的最新支持,然后我将谈谈Simulink for A金宝appUTOSAR Adaptive。
让我先向您概述一下AUTOSAR。在这里,你可以看到非AUTOSAR和经典AUTOSAR。正如您在这里看到的,在非autosar体系结构中,应用程序软件和基础软件是紧密集成的。这个图层看起来非常僵硬。应用软件依赖于硬件,而在AUTOSAR Classic中,它具有分层的体系结构。这将为依赖硬件和标准软件与高级应用程序功能之间提供清晰的区分。实际上,硬件和软件将广泛地相互独立,软件将增加功能的模块化和可移植性。
因此,开发可以通过水平层进行解耦。这减少了开发时间和成本。在OEM和供应商那里,软件的重用也在增加。这通过缩短上市时间提高了质量和效率。
Classic软件架构遵循基于信号的通信和静态分配的软件组件,并支持对ecu的单片更新。金宝app这对于传统的汽车应用(包括车身控制模块、动力系统等)来说非常有用。为了满足高度自动驾驶应用的需求,AUTOSAR组织引入了Adaptive AUTOSAR。它利用了更多的计算能力,满足了可伸缩性和易于更新的需求。Adaptive AUTOSAR是基于面向服务架构的新范式创建的,在这种架构中,应用程序是由系统中可用的服务组成的。
因此,有了这个概念,应用程序可以根据新的和更新的服务动态地重新配置自己,以满足可伸缩性和易于更新的要求。好消息是,使用Simulink,您可以一次设金宝app计您的软件,然后配置和部署到多个目标,遵循多个体系结构。关于这一点,重要的一点是开发人员可以从遗留模型开始,并为经典或自适应体系结构配置它,而不是每次都从头开始。
您还可以通过使用现有工作流将现有组件迁移到新的体系结构中。因此,使用Sim金宝appulink,您可以设计、部署和模拟您的模型到遗留ecu到AUTOSAR Classic或自适应应用程序,或到fpga和gpu,以满足电机控制和自动驾驶等苛刻的应用程序。AUTOSAR Classic非常受欢迎,而且已经上路了。我们为生产目的提供了过去10年的经典AUTOSAR支持。金宝app
所以在这张幻灯片中,我整理了一份来自我们的AUTOSAR客户的用户文章和演讲列表。FCA描述了他们在Simulink中从需求到建模和代码生成,再到AUTOSAR软件的车载测试的完整开发过程。金宝app因此,作为AUTOSAR联盟的创始成员之一,BMW谈到了在具有持续集成的敏捷工作流中使用基于模型的开发和AUTOSAR。
约翰迪尔提供了一个有趣的演讲,讲述他们如何使用AUTOSAR和基于模型的设计来应对复杂农业机械的挑战。LG化学和Magneti Marelli讨论在符合ISO 26262和A-SPICE标准的背景下开发AUTOSAR软件。最后,IDNEO提供了一个使用AUTOSAR工具链开发复杂设备驱动程序的不同视角。他们报告了70%的开发时间,发现了80%的错误是在设计阶段,而不是在硬件测试阶段。
好的,现在让我来谈谈AUTOSAR经典版的Simul金宝appink。在这里,我们看到了AUTOSAR经典架构的放大展示。应用层包含软件的算法部分,它被划分为软件组件。软件组件和基本软件之间的所有通信都通过标准接口通过RTE进行路由。这样,RTE就像一个虚拟的功能总线。
金宝app我们的客户使用Simulink进行应用软件的建模和代码生成。如果您正在使用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端口是如何映射到A金宝appUTOSAR元素的。在这里,你可以改变通信属性等等。
在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,它可以导入到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组件都有组件和实现描述文件,而体系结构模型则有组合、数据类型和接口描述文件。
在源文件夹中,您将看到每个组件的代码。通过这种方式,您可以为组合创建体系结构模型,然后生成代码。此外,您可以使用文档中提供的实时脚本来尝试这个示例。
现在让我给你展示一个自上而下工作流的演示。我将从导入合成描述开始。熟悉组件导入器的人应该熟悉将组件导入到体系结构的过程。但是这里是我们重要的组合描述和System Composer,我们在前面的演示中创建了体系结构模型。
这是一个在第三方工具中创建的ARXML。注意,它是为4.2.2创建的。我可以使用这个API创建一个新的体系结构模型和对象。我打开一个架构模板的API也是如此。这里,我选择建模选项卡。然后使用这个从ARXML导入选项。
这个导入的应用会要求你选择想要导入的ARXML。如果你愿意,你可以配置建模选项。这个导入的应用程序正在创建一个骨架架构模型。注意,它正在为所有五个组件创建体系结构模型。
这是一个架构模型。让我继续查看建模设置。到代码生成面板。是的,它在模式4.2中导入了。在这个合成模型中,在这个组件中,你可以把它按比例缩小来添加一个Simulink模型。金宝app你还可以看到一个代表组件类型的标志。现在,在添加逻辑之后,就可以用ARXML导出代码了。
总之,在演示中,我们使用这个选项导入了一个ARXML。此外,还可以使用importfromxml API将组合描述导入到体系结构模型中。同样,这个示例也可以作为实时脚本演示使用。您可以尝试了解更多关于该特性的信息。
现在让我来谈谈AUTOSAR计时扩展规范。正如你所意识到的,汽车问题的复杂性正在增长,因为它包括2到3个核心,可能15到20个任务,数百个RTE事件到任务的关系。有些任务可能会映射到50到60个可运行事件。因此,集成就成为一项必不可少的关键任务,将任务分配到核心。
因此,AUTOSAR引入了一个称为计时扩展的概念,以提供指导系统构造的计时需求,并分析和验证系统的时间行为。在这里,你可以看到许多可运行程序映射到任务,然后映射到代码。同时,保持功能行为和及时执行也很重要。
这里的问题是执行可运行程序的顺序是什么?那么如何知道计算或模拟这个模型的顺序呢?这很难用数据依赖性来判断。让我试着找出执行顺序如何影响最终结果。在这里,我们的端口连接到一个范围,以检查最终结果。如果可运行R1在可运行R2之前执行,你会得到一个像这样的图。但如果我翻转执行顺序,结果就会改变。不同值的延迟是完全不同的。
我们的客户提到这个信息非常重要。因此,我们导出了执行命令以供进一步使用。这里,我有一个例子来展示我们如何在Simulink中支持执行顺序约束。金宝app金宝app这里有一个Simulink模型,它有多个金宝app可运行的。你可以看到它的执行顺序可以在日程编辑器中查看。我通过拖放来改变执行顺序。现在我将继续验证并生成代码。您可以在ARXML中看到执行顺序约束。
总之,在版本20b中,我们支持导入和导出执行顺序约束,包括Schedule金宝app Editor对可运行顺序和执行顺序以及对ARXML文件的修改,并使用对执行顺序约束的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自适应的Simul金宝appink。Adaptive的层与Classic类似,包括组件、运行时、基本服务和硬件。也许Adaptive和Classic之间最大的区别是,称为基础公共接口的应用程序直接是服务,因此API服务领域要大得多。
也许值得注意的是,Adaptive并不一定运行在裸机上,而是可以运行在虚拟机上。这里还使用MathWorks工具对自适应应用程序的代码生成进行建模。我将介绍Adaptive的一些关键概念。
现在是关键概念一,操作系统提供多进程POSIX操作系统功能。那么,每个自适应应用程序都是一个独立的操作系统进程,具有自己的主要功能、逻辑内存空间和名称空间。现在如果你看看进程管理,操作系统也提供了进程调度。执行管理器提供流程生命周期管理,启动、运行和终止流程。通信管理器提供进程间通信。
现在来看关键概念二,面向服务的进程间通信的使用。如果您查看进程之间的IPC, IPC可以通过通信管理器或通过网络进行本地操作,同样是通过通信管理器。如果你看一下通信的类型,Classic有发送方,接收方,客户端,服务器。Adaptive是面向服务的,它可以被分解为方法——它更像函数——通过事件通信——像消息——和跨字段通信——像数据。到目前为止,我们支持在金宝appSimulink中以消息的形式对事件建模。金宝app
第三个关键概念是一切都是c++。所有模块和应用程序都需要用c++编写。这是AUTOSAR自适应的三个关键概念。这是AUTOSAR自适应路线图。我们现在正在进行该标准的第四个版本。我很高兴地说,MathWorks从2019a版本开始支持Adaptive标准。金宝app
在接下来的几张幻灯片中,我将使用这些Adaptive概念,并向您展示如何在Simulink中为Adaptive应用程序建模和生成代码。金宝app自适应应用程序需要并提供端口,正如我们所讨论的,这些端口由服务接口进行类型化。在Si金宝appmulink中,自适应应用程序将映射到一个模型。所需的端口事件将映射到Simulink中的消息。金宝app在这里,我使用这个应用程序的运输AUTOSAR块将消息转换为信号。
在所提供的端口端,这非常类似。同样,自适应应用程序映射到模型,甚至映射到输出端口。现在我将向您展示如何在Simulink中完成自适应工作流。金宝app您还可以像我们在Classic ARXML工作流中所做的那样,将自适应ARXML文件导入或导出到Simulink中。金宝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主机上的运行时校准创建一个可执行文件。您也可以将可执行文件作为一个独立的应用程序运行。
自适应AUTOSAR Linux可执行工具链提供了用于编译生成代码的AUTOSAR自适应功能集群库。使用ASAP2 Generator应用程序,您可以配置您的ASAP2文件生成来指定ASAP2文件版本。您还可以选择排除或包含A2L文件生成时的注释。
总之,使用AUTOSAR Blockset,您可以通过对具有事件通信和动态服务发现的自适应应用程序建模来建模、模拟和测试AUTOSAR自适应软件。还可以导入和导出自适应ARXML文件。最后,您可以为代码生成生成优化的AUTOSAR c++代码。
好了,现在是时候在Simulink中构建AUTOSAR应用程序算法了。金宝app首先,您可以尝试这些发布示例,并探索AUTOSAR Blockset支持下的最新功能。金宝app要了解更多关于AUTOSAR支持的信息,您可以访问Mat金宝apphWorks.com上的AUTOSAR Blockset页面。谢谢大家的聆听。
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。