• 104查看
  • 0回复

[Autosar] Autosar存储(下)NvM使用

[复制链接]

该用户从未签到

发表于 25-4-2024 20:06:44 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


1 使用介绍对于存储模块的使用,一般通过两种方式:NvM和复杂驱动的Quasi static Data(准静态数据)Manager.准静态数据一般用于数据量比较大(对于TC397来说为4K的整数倍)且不经常更新的数据(如一些配置数据),用户可以直接操作Fee的Api函数来进行数据的读取和写入。
Autosar存储(下)NvM使用w1.jpg

DFlash0的数据读取方式
当采用了准静态数据管理方式,DFlash0将会划分为两部分:一部分给NvM使用,一部分给Quasi static Data使用,如下图所示(double sector即换页时使用,详见<< Autosar存储(中)NvM内存管理>>一文中的换页描述)。
Autosar存储(下)NvM使用w2.jpg

DFlash内存划分

2 应用通过NvM读取
本文只介绍最常见的通过NvBlockSwComponentType来获取NVRAM中的数据。NvBlockSwComponentType通过提供Rte的接口来供SWC获取数据,如下图所示。
Autosar存储(下)NvM使用w3.jpg

NvBlockSwComponentType的方式来获取数据
NvBlockDescriptor包含一个作为NVRAM Block的RAM Block的VariableDataPrototype和一个可选的作为NVRAM Block的默认值的ROM的ParameterDataPrototype.(两者的数据类型要一致)NvBlockSwComponentType的配置(如定义触发NvBlockDescriptor中RunnableEntity的RTE的事件、把RTE的事件映射到task)不是由SWC的开发者负责的。因此,SWC的开发者只需要配置SwcServiceDependency中的serviceNeeds的storeAtShutdown、storeCyclic、cyclicWritingPeriod、storeEmergency和storeImmediate属性即可,剩下的将由Rte来完成:1 如果配置了storeCyclic为true,那么NvBlockDescriptor的RunnableEntity需要被TimeingEvent来触发;2 如果配置了storeAtShutdown或者storeImmediate为true,那么NvBlockDescriptor的RunnableEntity需要被DataReceivedEvent来触发.实际使用过程应注意:1 NvBlockSwComponentType对应的SWC类型是Nv Block Sw Component Type;2 NvBlockSwComponentType需要通过NvDataInterface来向其他SWC提供读(RPort)或者写(PPort)的接口;3 NvBlockSwComponentType不再向SWC提供BlockId,这个参数由RTE生成器(gnerator)来决定(通过RteNvRamAllocation配置来指定AtomicSwComponentType的NVRAM的需求和NvM模块的配置)。
3 Quasi Static Manager
QS的扇区的地址需要放在正常的double-sector地址后(如上图DFlash内存划分所示),因此它的其实地址等于double sector的其中一个扇区的大小x 2,它的最大空间等于总的DFlash大小- double sector的其中一个扇区的大小x 2。对于TC397来说,假如配置的doublesector中的其中一个扇区是384Kbytes,那么QS的起始地址就是2 x 0x60000 = 0xC0000,QS的最大空间为0x100000 – (2 X 0x60000) = 0x40000。实际使用过程应注意:1 FeeQsBlockAddress不应该有地址重复(不能覆盖上一个FEE QS block的地址);2 对于TC397而言,当需要使用EB配置的Fee模块时,需要将Fls模块的FlsIfxFeeUse选项使能,因为英飞凌的Fee模块需要Fls模块提供一些非autosar的接口。

快速发帖

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

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 5-5-2024 12:40 , Processed in 0.269178 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.