Конфигурация AUTOSAR - NVM - PullRequest
0 голосов
/ 09 апреля 2019

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

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

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

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

1 Ответ

0 голосов
/ 10 апреля 2019

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

...