Конфигурация AUTOSAR - NVM

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

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

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

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


person Sivaramakrishna Shriraam    schedule 09.04.2019    source источник


Ответы (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 на NVM_REQ_OK или что-то еще, например NVM_REQ_NOT_OK.

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

person kesselhaus    schedule 10.04.2019
comment
Реализация шла не вручную. Я знаю, что UDS отправляет положительный ответ, поскольку он принял запрос, и это не гарантия того, что nvm записал данные. Вроде проблема с настройкой nvm / fee / fls. Я просто пытаюсь понять, какой именно. - person Sivaramakrishna Shriraam; 10.04.2019
comment
Когда вы говорите, что он сгенерирован, вы имеете в виду, что служба Dcm WRDBI имеет DcmDspDidUse - для порта установлено значение USE_ATOMIC_NV_DATA_INTERFACE? Потому что это должно обрабатывать запись, включая опрос статуса. Тогда это может быть проблема, например, a Задача обработки основных функций и / или, возможно, проблема приоритета задачи. - person kesselhaus; 19.04.2019