AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)

AutoSAR配置与实践(实践篇)13.1 如何添加一个NVM BLOCK

  • 如何添加一个NVM BLOCK (PIM类型)
  • 一、PIM(PerInstanceMemory)简介
  • 二、PIM添加步骤
    • 2.1 总体思路
    • 2.2 DEV工程步骤
    • 2.3 CFG工程步骤

如何添加一个NVM BLOCK (PIM类型)

->返回总目录<-

一、PIM(PerInstanceMemory)简介

  • NvM提供了NvM_ReadPRAMBlock/NvM_WritePRAMBlock一对API可以对这个固定地址(永久地址)的RAM块进行读写操作。配置这样的地址,我们称之为PerInstanceMemory(PIM),它存在于RTE中,SWC可以通过Rte_Pim接口访问。

  • 与Nv Block Descriptor类型的差异在于PIM类型适用于单个SWC访问,而Descriptor类型一般是多个SWC共同访问一个Block。两种类型的优劣势在之前有介绍,不清楚的可以回头看看7.5章节的介绍。

  • 如果用户在某些情况下还是想使用临时地址用来作NvM请求,仍旧可以通过NvM_ReadBlock/NvM_WriteBlock接口来实现。

二、PIM添加步骤

2.1 总体思路

使用方SWC:
App_Swc 即用户模块。需要新建SWC、Runnable、PIM存储区及NVM ports(Client类型)。同时将ports通过access point关联到Runnable的以便使用。

提供方BSW模块:
NVM标准模块。当App_Swc创建ServiceNeed之后,NVM模块自动生成Ports(Service类型)并映射。

2.2 DEV工程步骤

  1. 新建C/S接口
    NVM_swc中新建一个C/S类型接口,同时在接口中定义函数原型
    具体NVM函数解释:
    Erase: 擦除接口
    GetErrorStatus: 获取NVM错误状态接口
    InvalidateNvBlock: 读写失败时,使NVMBLock无效
    NvM_ReadBlock: 读Block
    NvM_WriteBlock: 写Block
    NvM_SetRamBlockStatus: 设置Block标志,以便ShutDown阶段通过Writeall写入。
    NvM_RestoreBlockDefaults: 把ROM默认数据拷贝到RAM
    AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第1张图片

2.新建SWC(App_Swc) ,在SWC内部创建Service Ports(实例化C/S接口)

AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第2张图片
3.新建标定参数,这个主要是定义数据的初值

AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第3张图片
4.在ServiceNeed中创建NvMBlockNeeds,Block属性和port属性
Default Value:即第3步定义的初值

AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第4张图片

5.定义Addressing Method

这就是一个分区字段,生成代码后,可以根据用户需求,将字段定义在普通RAM或者RRAM(休眠唤醒不掉电)。若配置成RRAM可以优化启动时间,有兴趣的可以查看实践篇的NVM 时间优化。

AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第5张图片
6.创建一个PIM类型的存储区(PIM)

Data Type: PIM的数据类型,一般为Array数组,定义存储长度
Addressing Method: 存储策略,链接哪个字段

AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第6张图片
7.在SWC内部创建runnable,并在其中添加AccessPoint, 包括读取、写入和获取错误状态接口

AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第7张图片
8.保存DEV工程

2.3 CFG工程步骤

1.DEV工程保存后在Cfg工程下点击同步数据

2.修改Fee下的写入参数
AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第8张图片

3.修改NVM模块的写入参数

  • 配置长度等信息
  • 注意RAM、ROM block是从Develop自动同步的, 不用做修改。
    若名称出现”To be defined by RTE”, 点击Cfg生成代码后即可加载为正常的名称
    AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)_第9张图片
    在这里插入图片描述

你可能感兴趣的:(AutoSAR配置和实践,c语言,mcu,单片机,stm32,51单片机)