【问题标题】:AUTOSAR Configuration - NVMAUTOSAR 配置 - NVM
【发布时间】:2019-04-09 13:17:57
【问题描述】:

我尝试使用NvM_Write(); 写入内存,UDS 有积极响应。

当我尝试读取同一个块时,没有响应,软件进入 det NvM_PENDING state。我重置然后尝试读取相同的内存块,该块中没有数据(它只是 0x00)。

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

调试发现Fls_Write 从来没有被调用过。 Nvm、Fee 和 fls 每 5 毫秒调用一次。当我请求 NvM_Write 时,该请求被放入队列中以供将来服务。

【问题讨论】:

    标签: nvm autosar


    【解决方案1】:

    您的设置似乎有问题。我想知道,如果你有一个任务,调用NvM_Mainfunction()Fee_Mainfunction()Fls_Mainfunction()。 NvM 通过队列处理 NvM_ReadBlock()NvM_WriteBlock() 等请求,由任务级别的主函数处理。

    关于 UDS 服务,请求返回肯定响应很可能是因为您使用了 NvM_WriteBlock() 的返回值,如果 request 写入,它将是 E_OK被 NvM 接受并放入 NvM 队列。如果请求未被接受,则返回E_NOT_OK

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

    我猜你的实现是手工实现的,因为通过适当的配置,Dcm 具有要求 SWS_Dcm_00541 中描述的标准行为,正如我在上面解释的那样。

    【讨论】:

    • 不是手工实现的。我知道UDS既然已经接受了请求,就会发送一个肯定的响应,并不能保证nvm已经写入了数据。 nvm/fee/fls的配置好像有问题。我只是在努力找出是哪一个。
    • 你说的是生成的,是不是说Dcm WRDBI服务有DcmDspDidUse-Port设置为USE_ATOMIC_NV_DATA_INTERFACE?因为这应该处理包括状态轮询在内的写入。那么这可能是一个问题,例如主要功能的任务处理和/或可能是任务优先级问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    相关资源
    最近更新 更多