杭州网站建设q479185700惠,网站系统商城,宁波职业能力建设网,详情页设计思路怎么写NVRAM#xff08;NvM#xff09;提供了在NVRAM中存储数据Block的机制。 NVRAM Block#xff08;最大大小取决于配置#xff09;被分配给Dem#xff0c;并由Dem实现事件状态信息和相关数据的永久存储#xff08;例如通电复位#xff09;。
ECU 状态管理器#xff08;Ec…NVRAMNvM提供了在NVRAM中存储数据Block的机制。 NVRAM Block最大大小取决于配置被分配给Dem并由Dem实现事件状态信息和相关数据的永久存储例如通电复位。
ECU 状态管理器EcuM负责基本软件组件包括Dem的基本初始化和解除初始化。
Dem调用**NvM_SetRamBlockStatus来设置要由NvM_WriteAll**写入的NvM Block。
如果需要在Dem_Init和Dem_Shutdown之间存储数据Dem模块应使用API NvM_WriteBlock和NVRAMManager的NvM_GetErrorStatus
此外如果块写入成功完成API NvM_GetErrorStatus应等待肯定响应。
7.3.4 故障的目的地
配置参数DemMemoryDestinationRef请参阅DemDTCAttributes定义事件及其相关数据的专用存储位置请参阅第7.6.7章。
“permanent event memory”分配是从相关DTC类型中隐式得出的参考第7.4.1章。排放相关事件自动分配给permanent event memory因为将事件存储为“permanent DTC”是从其当前状态中动态得出的第7.8.5.8章描述了处理。在这种情况下术语“permanent”与排放相关事件的属性相关而不仅仅与通过NvM进行的持久性存储相关无论如何对于每种事件存储器类型都是如此。
不同内存类型的定义和使用取决于OEM。 对于Dcm-Dem接口参数DTCOrigin用于区分不同的存储区域。其目的是允许对不同的内存区域primary, user defined, permanent and mirror memory进行特定操作。
DemMemoryDestinationRef的限制 如果DemMirrorMemory配置为DemMemoryDestinationRef则DemPrimaryMemory或DemUserDefinedMemory的同一事件上的另一个DemMemoryDistinationRef应配置为先决条件。 如果一个不是DemMirrorMemory则不应将同一事件配置为两个目的地。
7.6.2.2 清除故障存储 Clearing event memory entries
Dem模块的 event memory entries可以通过各种诊断服务清除DTC。 例如服务0x14 ClearDiagnosticInformation或服务$04清除/重置排放相关诊断信息。 因此Dem为不同的用户提供了不同的API
Dem_ClearDTC (to CDDs 复杂驱动) Dem_DcmClearDTCDcm中的UDS服务 0x14服务 Dem_SetClearDTCOBD Dem_J1939DcmClearDTCJ1939Dcm
如果请求Dem模块清除诊断信息并且配置参数DemClearDTCBehavior设置为Dem_CLRRESP_NONFOLATILE_FINISH则Dem模块在清除易失性存储器和非易失性内存后应返回DEM_CLEAR_OK。
注Dem实现负责持久数据的一致性。 请参阅SWS_NvM_00698当NvM处理作业时传递给NvM_WriteBlock的RAM缓冲区的内容可能不会更改。如何确保数据一致性UDS状态字节、冻结帧数据和所有其他相关信息是特定于实施的取决于实施的NvM策略。 选项包括但不限于额外的RAM镜像和更改排队直到可以再次修改RAM区域。 注意如果Dcm模块接收到API DEM_DcmClearDTC的返回类型DEM_CLEAR_OK则Dcm模块发送肯定响应。
7.10.5 Interaction with NVRAM Manager (NvM) 和NvM的交互
通常Dem模块使用非易失性存储器块可由NVRAM管理器配置大小来实现事件状态信息、事件相关数据和所需内部状态例如启动时检索状态的永久存储。 还需要配置Dem中使用的每个非易失性内存块请参阅DemNvRamBlockId。未规定所使用的非易失性存储块的数量、类型和内容。这些应针对具体实施进行处理。 NvM的使用也可以通过配置停用参考Dem-NvRamBlockId的多重性这样Dem将仅基于RAM工作。
Dem模块应验证其非易失性块的有效性与块状态相关、完整性与CRC结果相关和一般NvM读取错误在使用相应数据之前。
通常在API Dem_Init参考第8.3.2.2章中使用这些块的NvM_GetErrorStatus进行验证这些块由ECUM读取参考API NvM_ReadAll。
注对于Dem模块的非易失性数据建议在NvM中配置CRC。
如果NVM模块无法读取Dem模块的一些非易失性数据Dem模块应使用其初始值初始化所有非易失数据。 注意为了避免可读块和错误块之间的不一致所有非易失性数据都被初始化。 完成初始化以允许NvM模块的故障检测机制向Dem模块报告相应的读取错误请参阅Dem_ReportErrorStatus。这些错误表示NVRAM有缺陷。
API Dem_Init完成后Dem应完全运行。
Dem模块应为每个DTC提供配置参数DemImmediateNvStorage参考DemDTCAttributes以立即触发相应事件存储器条目的存储包括其在非易失性存储器中的事件相关数据参考NvM_WriteBlock。
如果为特定DTC启用了即时非易失性存储则Dem模块应在每次更改事件相关数据事件存储器条目已更新后触发新事件存储器条目的存储。 注意对于立即存储的事件存储器条目必须确保Dem_Init期间的数据一致性例如与事件状态字节。
**注**如果立即非易失性存储被禁用则事件存储器条目及其事件相关数据将在下电阶段永久存储参见[SSWS_dm_0002]、[SSWS_DM_00341]和以下注释。
如果针对特定DTC启用了立即非易失性存储如果Dem模块的发生计数器已达到配置参数DemImmediateNvStorageLimit参考DemGeneral定义的阈值则Dem模块不应为该DTC触发对NVRAM的进一步立即写入操作。
注意在任何情况下ECU下电时都会执行对NVRAM的写入操作。
API Dem_Shutdown应完成Dem模块中的所有未决操作以准备内部状态和数据以便传输至NVRAM。 在调用API Dem_Init之前应锁定事件存储器不得修改。对于更改的非易失性数据Dem模块应在Dem_Shutdown之前或期间触发NVRAM存储。
基于Dem配置和实现将在Dem_Shutdown之后存储的Dem相关NvMblock复制到NVRAM的过程由ECUM调用的API NvM_WriteAll执行。
如果在NvM完成将所有数据复制到NVRAM之前断开ECU电源则这些数据将不完整/不一致或未存储。下次启动时无法再找到上一个操作周期的事件。
因此NVRAM管理器配置提供了数据一致性机制如冗余数据块。
如果需要在Dem_Init和Dem_Shutdown之间存储和恢复数据Dem模块应使用NVRAM管理器的API NvM_WriteBlock和NvM_ReadBlock。 注意NvM模块实现了块读写的重试机制。因此Dem模块不为其非易失性块实现任何重试机制。
如果NVM模块无法写入Dem模块的某些非易失性数据则Dem模块应忽略NVM报告的负返回值。
注如果非易失性Dem数据写入失败则Dem模块无法执行任何适当的反应。