Настройка автозапуска — NVM

#nvm #autosar

#nvm #автозапуск

Вопрос:

Я пытаюсь записать в память, используя NvM_Write(); положительный ответ от UDS.

Когда я пытаюсь прочитать тот же блок, ответа нет, и программное обеспечение переходит в режим det NvM_PENDING state . Я сбрасываю, а затем пытаюсь прочитать тот же блок памяти, в этом блоке нет данных (это всего лишь 0x00).

NvM_Write приводит к Fee_Write , но Fls_Write никогда не вызывается. Это проблема конфигурации?

Отлажено и обнаружено, что Fls_Write это никогда не вызывается. Nvm, Fee и fls вызываются один раз каждые 5 мс. Когда я запрашиваю NvM_Write, запрос помещается в очередь для обслуживания в будущем.

Ответ №1:

Похоже, проблема в вашей настройке. Интересно, есть ли у вас задача, которая вызывает 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 на return NVM_REQ_OK или что-то еще подобное NVM_REQ_NOT_OK .

Я предполагаю, что ваша реализация была реализована вручную, потому что при правильной конфигурации Dcm имеет стандартное поведение, описанное в требовании SWS_Dcm_00541, как я объяснил выше.

Комментарии:

1. Реализация не была выполнена вручную. Я знаю, что UDS отправляет положительный ответ, поскольку он принял запрос, и это не является гарантией того, что nvm записал данные. Похоже, существует проблема с конфигурацией nvm / fee / fls. Я просто пытаюсь выяснить, какой из них.

2. Когда вы говорите, что он сгенерирован, вы имеете в виду, что служба Dcm WRDBI имеет DcmDspDidUse- для порта установлено значение USE_ATOMIC_NV_DATA_INTERFACE? Потому что это должно обрабатывать запись, включая опрос состояния. Тогда это может быть проблемой, например, при обработке задач основных функций и / или, возможно, проблемой приоритета задачи.