Кажется, проблема в вашей настройке. Интересно, если у вас есть задача, которая вызывает NvM_Mainfunction()
, Fee_Mainfunction()
и Fls_Mainfunction()
. NvM обрабатывает запросы типа NvM_ReadBlock()
и NvM_WriteBlock()
с помощью очереди, которая обрабатывается основными функциями на уровне задач.
Что касается сервиса UDS, запрос вернул положительный ответ, скорее всего, из-за того, что вы использовали возвращаемое значение NvM_WriteBlock()
, которое будет E_OK
, если запрос для записи был принимаются NvM и помещаются в очередь NvM. Если запрос не был принят, он возвращает E_NOT_OK
.
Реализация диагностической службы должна фактически ожидать, пока возвращаемое значение NvM_GetErrorStatus (BlockID) изменится с NVM_REQ_PENDING
, чтобы вернуть NVM_REQ_OK
или что-то еще, например NVM_REQ_NOT_OK
.
Я полагаю, что ваша реализация была реализована вручную, потому что при правильной конфигурации Dcm имеет стандартное поведение, описанное в требовании SWS_Dcm_00541, как я объяснил выше.