配置 AUTOSAR 实例内存
要对 AUTOSAR 应用程序的 AUTOSAR 实例内存 (PIM) 进行建模,您需要从 ARXML 文件导入实例内存定义或在 Simulink® 中创建实例内存内容。有关高级 PIM 工作流的信息,请参阅Per-Instance Memory。
AUTOSAR 定型的实例内存 (ArTypedPerInstanceMemory) 定义 AUTOSAR 定型的内存块,该内存块可用于 AUTOSAR 软件组件的每个实例。在 AUTOSAR 运行时环境中,标定工具可以访问 arTypedPerInstanceMemory 模块以进行标定和测量。
要对 AUTOSAR PIM 进行建模,您可以在模型中使用 Simulink 模块信号、离散状态或数据存储。
将模块信号和状态配置为 AUTOSAR 定型的实例内存
要为 AUTOSAR 模型中的 Simulink 模块信号和离散状态数据生成 arTypedPerInstanceMemory 模块,请打开代码映射编辑器并选择信号/状态选项卡。选择信号和状态并将它们映射到 arTypedPerInstanceMemory。例如:
打开包含要为其生成
arTypedPerInstanceMemory模块的信号或状态的 AUTOSAR 模型。此示例使用模型autosar_swc_counter。在 AUTOSAR 代码透视中,打开代码映射编辑器并选择信号/状态选项卡。在可用信号列表中,选择
sum_out。选择一个信号会在模型图中突出显示该信号。在映射到下拉列表中,选择 ArTypedPerInstanceMemory。要查看和修改实例内存的 AUTOSAR 属性,请点击
图标。有关信号代码和标定属性的详细信息,请参阅Map Block Signals and States to AUTOSAR Variables。如果您正在映射由组件引用的子模型中的信号和状态,请参阅Map Submodel Signals and States to AUTOSAR Variables。
在信号/状态选项卡中,从可用状态列表中,选择状态
X。在映射到下拉列表中,选择 ArTypedPerInstanceMemory。要查看和修改实例内存的 AUTOSAR 属性,请点击
图标。
当您生成代码时:
导出的 ARXML 文件包含您配置为 ArTypedPerInstanceMemory 的信号和状态的
AR-TYPED-PER-INSTANCE-MEMORYS描述。生成的 C 代码包含用于信号和状态变量的
Rte_Pim_*API 调用。
对于 AUTOSAR 组件模型内的引用模型,Embedded Coder® 为模型引用代码生成映射内部信号和状态。内部信号和状态映射到 AUTOSAR ArTypedPerInstanceMemory(适用于多实例模型引用)或 AUTOSAR StaticMemory(适用于单实例模型引用)。
将数据存储配置为 AUTOSAR 定型的实例内存
要为 AUTOSAR 模型中的 Simulink Data Store Memory 模块生成 arTypedPerInstanceMemory 模块,请打开代码映射编辑器并选择数据存储选项卡。选择数据存储并将它们映射到 arTypedPerInstanceMemory。例如:
打开包含要为其生成
arTypedPerInstanceMemory模块的数据存储的 AUTOSAR 模型。此示例使用模型autosar_bsw_sensor1。在 AUTOSAR 代码透视中,打开代码映射编辑器并选择数据存储选项卡。在可用数据存储列表中,选择数据存储
LowSetPoint。选择数据存储会在模型图中突出显示 Data Store Memory 模块。在映射到下拉列表中,选择 ArTypedPerInstanceMemory。要查看和修改实例内存的 AUTOSAR 属性,请点击
图标。有关数据存储代码和标定属性的详细信息,请参阅Map Data Stores to AUTOSAR Variables。如果您要映射由组件引用的子模型中的数据存储,请参阅Map Submodel Data Stores to AUTOSAR Variables。
当您生成代码时:
导出的 ARXML 文件包含您配置为 ArTypedPerInstanceMemory 的数据存储的
AR-TYPED-PER-INSTANCE-MEMORYS描述。生成的 C 代码包含用于数据存储变量的
Rte_Pim_*API 调用。
当您编译模型时,生成的 XML 文件为引用实例内存的每个 Data Store Memory 模块定义一个互斥区域。访问实例内存的每个可运行实体都在对应的互斥区域内运行。如果多个 AUTOSAR 可运行实体有权访问同一 Data Store Memory 模块,则导出的 AUTOSAR 设定通过使用 AUTOSAR 互斥区域来强制实现数据一致性。通过此设定,可运行实体对实例内存全局数据具有互斥访问权限,从而防止数据损坏。
在实例内存的 AUTOSAR 属性中,如果您选择 needsNVRAMAccess,则会在 XML 文件中声明 SERVICE-NEEDS 条目。该条目指示实例内存是一个 RAM 镜像块,并需要来自 NvM 管理器模块的服务。有关对软件组件访问 AUTOSAR 非易失性内存进行建模的详细信息,请参阅Model AUTOSAR Nonvolatile Memory。
配置数据存储以在启动和关闭时保留状态信息
为便于执行自下而上工作流和双向工作流,您可以通过配置 NVBlockNeeds 属性 RestoreAtStart 和 StoreAtShutdown 将 NVRAM 模块状态数据配置为在启动时读取并在关闭时写入。要设置这些属性,您必须将模型数据存储配置为 ArTypedPerInstanceMemory 并将属性 needsNVRAMAccess 设置为 true。
要以交互方式设置这些参数,您可以使用代码映射编辑器,方法是选择铅笔图标
,或使用属性检查器的 NvBlockNeeds 部分:

要以编程方式配置这些参数,您可以使用 getDataStore 函数配置映射对象:
mappingObj = autosar.api.getSimulinkMapping(modelName); mappingObj.mapDataStore(dsmBlockPath, 'ArTypedPerInstanceMemory', ... 'NeedsNVRAMAccess', 'true', ... 'RestoreAtStart', 'true', ... 'StoreAtShutdown', 'true');
另请参阅
getDataStore | getSignal | getState | mapDataStore | mapSignal | mapState | Data Store Memory