AUTOSAR配置-NVM

时间:2019-04-09 13:17:57

标签: nvm autosar

我尝试使用NvM_Write();向内存中写入 UDS

当我尝试读取相同的块时,没有响应,并且软件进入NvM_PENDING state的检测状态。我重置,然后尝试读取相同的内存块,该块中没有数据(仅为0x00)。

NvM_Write导致Fee_Write,但从未调用Fls_Write。这是配置问题吗?

经过调试,发现从未调用Fls_Write。 Nvm,Fee和fls每5毫秒调用一次。当我请求NvM_Write时,该请求将被放入队列中以备将来使用。

1 个答案:

答案 0 :(得分:0)

似乎是您的设置中的问题。我想知道,如果您有任务要调用NvM_Mainfunction()Fee_Mainfunction()Fls_Mainfunction()。 NvM通过队列处理NvM_ReadBlock()NvM_WriteBlock()之类的请求,这些任务由任务级别的主要功能处理。

关于UDS服务,由于您使用了NvM_WriteBlock()的返回值(如果是 request,则为E_OK),该请求最有可能返回了肯定的响应 write已被NvM接受并放入NvM队列中。如果请求未被接受,则返回E_NOT_OK

诊断服务实现实际上应该等待NvM_GetErrorStatus(BlockID)返回值从NVM_REQ_PENDING更改为返回NVM_REQ_OK或类似NVM_REQ_NOT_OK的情况。

我想,您的实现是手工实现的,因为如前所述,Dcm具有SWS_Dcm_00541要求中描述的标准行为,