我尝试使用NvM_Write();
向内存中写入 UDS 。
当我尝试读取相同的块时,没有响应,并且软件进入NvM_PENDING state
的检测状态。我重置,然后尝试读取相同的内存块,该块中没有数据(仅为0x00)。
NvM_Write导致Fee_Write
,但从未调用Fls_Write
。这是配置问题吗?
经过调试,发现从未调用Fls_Write
。 Nvm,Fee和fls每5毫秒调用一次。当我请求NvM_Write时,该请求将被放入队列中以备将来使用。
答案 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要求中描述的标准行为,