Hyowinner的MBD技术论坛

 找回密码
 立即注册
搜索
查看: 202|回复: 0

Simulink AUTOSAR下ASW的NVM接口配置完整流程

[复制链接]

108

主题

281

帖子

4508

积分

管理员

校长

Rank: 9Rank: 9Rank: 9

积分
4508
QQ
发表于 2026-6-17 10:03:46 | 显示全部楼层 |阅读模式
如何在 Simulink / AUTOSAR 架构下配置 NVM 类型接口(NvMService / NVRAM Service Component)

本文基于 MATLAB/Simulink R2023a + AUTOSAR Blockset,演示在 Classic AUTOSAR SWC 中配置 NVM/NvM 类型接口的基本流程。这里说的 NVM 接口,工程上通常对应 AUTOSAR BSW 的 NVRAM Manager(NvM)服务调用,而不是普通 Sender/Receiver 数据接口。



一、准备模型和 AUTOSAR 组件
1. 新建一个 Simulink 模型,并在 Code Generation 中将 System target file 设置为 autosar.tlc
2. 使用 autosar.api.create(model,'default') 给模型创建 AUTOSAR component 映射。
3. 明确软件组件中哪些数据需要持久化,例如故障冻结帧、学习值、标定学习结果、运行计数器等。

二、添加 NvM 服务调用块
AUTOSAR Blockset 提供两个常用 NVM 相关调用块:
- NvMServiceCaller:用于 ReadBlock、WriteBlock、GetErrorStatus、EraseNvBlock、InvalidateNvBlock、SetRamBlockStatus 等服务。
- NvMAdminCaller:用于 SetBlockProtection 等管理类服务。

在模型中从 AUTOSAR Blockset 库添加 NvMServiceCaller,关键参数如下:
- PortName:通常配置为 NvMService
- Operation:按需求选择 ReadBlockWriteBlockGetErrorStatus 等。
- ArgumentSpecification:配置 NvM Block ID 的类型和值,例如 uint16(1)。这个值必须和 ECU BSW/NvM 配置里的 Block ID 对齐。



三、配置 NVRAM Service Component 做仿真
为了在 Simulink 中做 MIL 仿真,可以在模型中加入 NVRAM Service Component。它模拟 AUTOSAR RTE/BSW 中 NvM 服务的行为,常用参数包括:
- ClientPortNames:例如 {'NvMService','NvMAdmin'}
- ClientPortPortDefinedArguments:例如 {uint16(1),uint16(1)},和调用方的 Block ID 保持一致。
- IdTypes:例如 {'uint16'}
- MaxBlockId:当前仿真支持的最大 NvM Block ID。
- NvInitValues:NVM 初始值,例如 {uint8(0)}

四、典型连接方式
1. ReadBlock:输入 BlockId,输出读取状态和/或数据结果;通常在初始化阶段或需要刷新 RAM 镜像时调用。
2. WriteBlock:输入 BlockId 和待写数据;通常在数据变化、下电保存、诊断请求保存时调用。
3. GetErrorStatus:读取指定 Block 的 NvM 状态,用于判断 Read/Write 是否成功。
4. SetBlockProtection:用于控制某些 NVM Block 的写保护策略。

五、生成代码和 ARXML 前的检查项
- NvM Block ID 是否和 ECU BSW 配置一致。
- 调用块的 PortName 是否和服务接口命名一致。
- Read/Write 的数据类型是否固定,避免继承类型导致 ARXML 和 RTE 接口不稳定。
- 初始化值、数组长度、结构体字段是否和 NVM Block 的真实布局一致。
- 如果模型只负责应用 SWC,真实 NvM Block Descriptor 仍需要在 ECU 基础软件配置工具中完成。

六、常见问题
1. 仿真能跑,集成后 RTE 接口对不上:优先检查 PortName、Operation 和 ArgumentSpecification 是否和 BSW 配置一致。
2. WriteBlock 没有效果:检查是否调用了 SetRamBlockStatus,或 BSW 侧是否要求显式置脏 RAM block。
3. 数据类型不一致:建议用明确的 uint8/uint16/结构体类型,不要依赖自动继承。
4. 模型里找不到 NVRAM Service Component:确认安装了 AUTOSAR Blockset,并在 Simulink Library Browser 中搜索 NVRAM 或 NvM。

示例模型核心目的是说明配置链路:SWC 侧使用 NvMServiceCaller/NvMAdminCaller,仿真侧使用 NVRAM Service Component,ECU 集成侧再由 BSW/NvM 配置承接实际非易失存储。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
持续学习 未来有你
基于场景 解决问题
项目合作联系微信:Hyowinners
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|MBD全栈技术学校|苏ICP备2025212294号-1|Hyowinner校长B站首页|手机版|小黑屋|Hyowinner的MBD技术论坛

GMT+8, 2026-6-25 06:21 , Processed in 0.134013 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表