• 发文
  • 评论
  • 微博
  • 空间
  • 微信

Autosar NVM 介绍

Vehicle攻城狮 2019-07-21 11:58 发文

汽车ECU内存中存在着各式各样的变量,绝大多数变量随着ECU的掉电数据就丢失了。也有一部分十分重要的变量会伴随着整个ECU生命周期而一直存在。比如:车辆的VIN码,防盗钥匙,车辆下线配置字等等。而今天所说的Autosar NVM模块为ECU内所有NV(Non Volatile) data 进行管理与维护,并提供服务确保这些数据被正确的存储或备份。在Autsar NVM支持两种NV变量存储方式:


EEPROM(EA : EEPROM Abstraction)
优点:读写速度快,寿命长
缺点:价格较高


FLASH EEPROM模拟(FEE : Flash EEPROM Emulation)
优点:价格便宜
缺点:访问速度慢,擦写限制,寿命较短

Autosar NVM

Autosar NVM位于基础软件的服务层,并为为所有NV data的(初始化、读、写、控制)维护以及管理作提供了各种同步/异步服务。无论是EEPROM还是Flash模拟,都在这层被抽象为同一类型,直到MemIf层才会做出区分。

NVRAM Block

在Autosar中规定了四种 NVRAM Block,分别为 NV Block、RAM Block、ROM Block、Administrative Block。

NV block

NV block是存储NV变量的基本结构,其中Header以及CRC校验非必须项。

[SWS_NvM_00125] ⌈The NV block is a basic storage object and represents a
memory area consisting of NV user data and (optionally) a CRC value and
(optionally) a NV block header.

Ram block

由于NV变量的写入与读取都是一件相对较慢的操作,而应用层逻辑操作周期速度又太快。直接操作NV block显然不合适,所以在进行读写之前,我们会建议一个同样大小的Ram空间来操作、使用、存放这些还没有被写入或者读取的NV值。

在NVM中规定了permanent,temporary 两种类型。其中永久型在项目配置时就必须输入指定的RAM地址;而临时型不需要在项目配置期间就设定,而是

[SWS_NvM_00373] ⌈The RAM block data shall contain the permanently or
temporarily assigned user data. ⌋ ( )

[SWS_NvM_00370] ⌈In case of permanently assigned user data, the address of the RAM block data is known during configuration time. ⌋ ( )

Rom block 

ROM block 用于存储默认值,以便当NV block数据出现损坏时予以替换。

[SWS_NvM_00020] ⌈The ROM block is a basic storage object, resides in the ROM (FLASH) and is used to provide default data in case of an empty or damaged NV block.

Administrative block

Administrative block是专门用于对NVRAM Block 与 RAM blcok 的数据安全性进行管理而设计的,它对应用层并不可见。

[SWS_NvM_00135] ⌈The Administrative block shall be invisible for the application and is used exclusively by the NvM module for security and administrative purposes of the RAM block and the NVRAM block itself. ⌋ ( )

[SWS_NvM_00054] ⌈The NvM module shall use an attribute field to manage the NV block write protection in order to protect/unprotect a NV block data field. ⌋ ( )

异步调用

由于NV data区域的访问速度较慢,所以NVM所支持的API多以异步调用为主。其核心函数为周期执行的NvM_MainFunction()。下图主要阐述了在异步调用中使用 PollingCallback 两种方式来执行NvM_WriteBlock()操作。

Polling 

在NVM User 请求写入NvM_WriteBlock时,会将这个任务写入存储在队列里,并由后台NvM_MainFunction() 执行。Nvm user需要用polling 方式主动查询写入结果。如果返回NVM_REQ_PENDING,表示还没有执行完成,回复NVM_REQ_OK 表示执行成功。

Callback 

在call back模式下,如果执行成功,NvM_MainFunction() 会主动调用call back 函数来提醒 NVM user 来查询结果。

声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    Vehicle攻城狮

    分享汽车相关知识,共同学习进步...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码