多层数据管理方案解决 AUTOSAR CP Composition 级别共享代码生成问题

重要的事情放到前头说,本文提出的方法可解决:

AUTOSAR Composition 级别的代码生成问题

多模型代码生成共享代码问题

单元模型单独生成代码时和共享数据的耦合问题

在实际的项目中,我们经常会遇到大规模模型代码生成的共享代码问题,而且常常还会涉及到自定制存储类,AUTOSAR Composition,多层数据管理方案等内容。该问题是一类经典问题,基本上每个月都会有不同的用户以各种不同的场景和方式前来询问解决方案或建议,为了帮助大家更好的处理此类问题,本文提供了一种以多层数据管理方案为核心的解耦方式,类似的场景大家也可以尝试借用此方法。

第一步:构建用例场景

我们首先快速构建一个典型场景,新建了一个数据包  mySDCPackage:

图片

并使用 CSCDesigner 创建了如下所示的 Memory Section - MathWorks_CalPrm:

图片

以及 Storage Class - MathWorks_CalPrm_SC,该存储类使用上述创建的 Memory Section - MathWorks_CalPrm。通过该存储类约束的 Simulink Parameter 会生成到指定的 HCU_Prm.h 和指定名称的 .c 文件中(注意:Definition file 选 Instance Specific 以便后续可以单独配置 Parameter 要生成到哪个头文件):

图片

接着我们将名为ThrottlePositionControlComposition.arxml 的  AUTOSAR CP Composition arxml 导入到System Composer,重现架构,如下图所示:

图片

第二步:适用多层数据管理方案

这里为了方便解释,我们只选 Monitor(模型全名实为 ThrottlePositionMonitor),Controller 两个子模型为例,其中 Monitor 模型的数据存放在  Monitor_Unique.sldd 和 Monitor_Shared.sldd   中,Monitor_Unique.sldd 直接关联 Monitor 模型,Monitor_Shared.sldd 不直接关联模型而是被 Monitor_Unique.sldd 通过数据字典引用的方式进行引用。

Monitor_Unique.sldd 中存放的是  Monitor 模型所独有的数据,Monitor_Sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值