DEENESPTFRRUARHIKOZHNL

NVRAM Manager (NvM)

ModulNvM (NVRAM Manager)
BSW-Modul-ID20
Standard-Header#include "NvM.h"
SWS-SpezifikationAUTOSAR_SWS_NVRAMManager.pdf
ClusterMemory Services

Руководство по модулюСОЗДАНО ИИ

Управляет энергонезависимыми блоками данных и асинхронно синхронизирует их между RAM и энергонезависимой памятью.
СОЗДАНО ИИ не проверено Модель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: 1d912b11517a Происхождение Открытые вопросы (1)
Причинный якорь: R20-11 Действует с R20-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Управляет энергонезависимыми блоками данных и асинхронно синхронизирует их между RAM и энергонезависимой памятью.

NVRAM Manager (NvM) представляет собой единственный доступ к энергонезависимой памяти. Он неявно копирует NVRAM-блоки между RAM и энергонезависимой памятью [SWS_NvM_00038]. При запуске инициированная BswM функция NvM_ReadAll заполняет RAM-блоки, при выключении (Shutdown) NvM_WriteAll сохраняет изменённые блоки. Одиночные запросы, такие как NvM_WriteBlock, ставятся в очередь асинхронно, обрабатываются с учётом приоритетов и подтверждаются через статус или callback-вызов [SWS_NvM_00185]. Ошибки чтения NvM парирует с помощью повторных попыток, избыточных копий и данных по умолчанию; тем не менее пользователи должны самостоятельно проверять статус блока.

NVRAM Manager (NvM) является единственным доступом к энергонезависимой памяти [SWS_NvM_00384]. Он неявно копирует блоки между NVRAM и RAM; приложение работает напрямую с данными в RAM [SWS_NvM_00038]. На нижнем уровне он использует Memory Abstraction Interface с Fee или Ea [SWS_NvM_00051]. О состояниях он сообщает в BswM, об ошибках — в DEM и DET [SWS_NvM_00745] [SWS_NvM_00592].

kontext nutzer Пользователи NvM (SW-C через RTE, модули BSW) nvm NvM (NVRAM Manager) nutzer->nvm Одиночные задания NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer Функции обратного вызова SingleBlock, InitBlock и Mirror nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif Задания на чтение/запись, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Пересылка fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Диаграмма контекста: встраивание NvM между пользователями, BswM, MemIf/Fee/Ea, а также DEM и DET. Источники: [SWS_NvM_00384] [SWS_NvM_00465] [SWS_NvM_00746]

Каждый NVRAM-блок состоит из NV-блока, RAM-блока и Administrative Block, опционально дополняясь ROM-блоком с данными по умолчанию [SWS_NvM_00138]. Существуют типы Native, Redundant и Dataset; они различаются количеством NV- и ROM-блоков [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559]. Синхронизацию RAM-блока NvM выполняет неявно напрямую или явно через RAM-mirror с callback-вызовами [SWS_NvM_00511].

Жизненный цикл проходит в три шага:

  • BswM монопольно вызывает NvM_Init [SWS_NvM_00693].
  • NvM_ReadAll сначала проверяет ID конфигурации и затем заполняет RAM-блоки [SWS_NvM_00073] [SWS_NvM_00718].
  • При Shutdown NvM_WriteAll сохраняет изменённые блоки [SWS_NvM_00092]. NvM_CancelWriteAll выполняет недеструктивное прерывание [SWS_NvM_00238].

Одиночные запросы, такие как NvM_WriteBlock, ставятся в очередь и после этого находятся в состоянии NVM_REQ_PENDING [SWS_NvM_00185]. Опционально NvM использует собственную очередь для запросов типа Immediate [SWS_NvM_00378]. Результат возвращает NvM_GetErrorStatus или сконфигурированный callback-вызов [SWS_NvM_00015] [SWS_NvM_00740].

Асинхронное задание для отдельного блока с подтверждениемNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloopпока задание на запись не завершитсяNvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

Диаграмма последовательности: асинхронный запрос на запись ставится в очередь, обрабатывается в NvM_MainFunction и подтверждается через callback-вызов, сообщение в BswM и опрос статуса. Источники: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00891], SWS NvM с. 160

Ошибки чтения NvM парирует на трёх уровнях:

  • сконфигурированные повторные попытки чтения [SWS_NvM_00526],
  • вторая копия избыточных блоков [SWS_NvM_00199],
  • данные по умолчанию с результатом NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202].

Интерпретация: порядок уровней, вероятно, соответствует перечислению в Error Description. Вопрос Q-027e7f981e4d0a43 (открытый) Ошибки записи NvM повторяет до NVM_MAX_NUM_OF_WRITE_RETRIES и затем сообщает NVM_E_REQ_FAILED в DEM [SWS_NvM_00684]. Пользователи проверяют статус своих блоков самостоятельно [SWS_NvM_00694].

Роль в стеке памяти: единственный доступ к энергонезависимой памяти

NVRAM Manager (NvM) объединяет доступ к энергонезависимым данным. Окружение обращается к энергонезависимой памяти исключительно через NvM, который предоставляет для этого callback-интерфейс [SWS_NvM_00384]. Доступ является неявным: NvM копирует блоки между NVRAM и совместно используемой RAM. Приложение работает напрямую с данными в RAM с соблюдением правил синхронизации [SWS_NvM_00038] [SWS_NvM_00692]. Блок выбирается по его сконфигурированному Block ID [SWS_NvM_00069] [SWS_NvM_00471]. Верхние уровни подключают для этого только NvM.h [SWS_NvM_00691]. Схема неявного обновления демонстрирует разделение обязанностей: другие компоненты базового программного обеспечения инициируют сохранение и восстановление всех блоков в зависимости от состояния ECU. SW-C обращается только к содержимому своих RAM-блоков (SWS NvM с. 121).

На нижнем уровне NvM взаимодействует с Memory Abstraction Interface. Совместно с Fee или Ea он предоставляет виртуальное линейное 32-битное адресное пространство [SWS_NvM_00051] [SWS_NvM_00465]. Контрольные суммы NvM вычисляет через модуль Crc [SWS_NvM_00466]. О завершении задания нижнего уровня он узнаёт двумя путями:

Производственные ошибки отправляются в DEM [SWS_NvM_00592], ошибки разработки — в DET [SWS_NvM_00614]. О состояниях запросов NvM сообщает в BswM [SWS_NvM_00745] [SWS_NvM_00746].

kontext nutzer Пользователи NvM (SW-C через RTE, модули BSW) nvm NvM (NVRAM Manager) nutzer->nvm Одиночные задания NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer Функции обратного вызова SingleBlock, InitBlock и Mirror nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif Задания на чтение/запись, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Пересылка fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Диаграмма контекста: NvM выступает посредником между пользователями и BswM с одной стороны и MemIf/Fee/Ea — с другой. Об ошибках он сообщает в DEM и DET. Источники: [SWS_NvM_00384] [SWS_NvM_00745] [SWS_NvM_00746] [SWS_NvM_00465] [SWS_NvM_00466], Error Description с. 43

Структура NVRAM-блока и три типа управления

NVRAM-блок состоит из обязательных компонентов: NV-блока, RAM-блока и Administrative Block. ROM-блок с данными по умолчанию является опциональным [SWS_NvM_00138] [SWS_NvM_00139] [SWS_NvM_00020]. Состав определяется дескриптором блока во время конфигурации [SWS_NvM_00140]. Отдельные компоненты:

  • NV-блок содержит полезные данные, а также, опционально, CRC и заголовок [SWS_NvM_00125] (SWS NvM с. 39).
  • RAM-блок может располагаться в глобальной RAM без ограничений по адресам [SWS_NvM_00088].
  • Administrative Block невидим для приложения. Он хранит индекс набора данных, атрибуты и поле ошибок/статуса [SWS_NvM_00134] [SWS_NvM_00135] [SWS_NvM_00136].

NvM поддерживает типы NVM_BLOCK_NATIVE, NVM_BLOCK_REDUNDANT и NVM_BLOCK_DATASET [SWS_NvM_00137]. Они различаются количеством NV- и ROM-блоков [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] (SWS NvM с. 10). Для Dataset-блоков действует следующее:

blockaufbau nvram NVRAM-Block (BlockId, Verwaltungstyp) nv NV-Block Header (opt.), Daten, CRC (opt.) nvram->nv NATIVE: 1 REDUNDANT: 2 DATASET: 1..m ram Блок RAM: постоянный, временный или RAM-Mirror nvram->ram genau 1 rom ROM-Block (optional) Defaultdaten nvram->rom NATIVE/REDUNDANT: 0..1 DATASET: 0..n adm Administrative Block Index, Attribute, Fehler-/Status nvram->adm genau 1

Диаграмма кооперации (структура блоков): обязательные и опциональные компоненты NVRAM-блока с кардинальностями для каждого типа управления. Источники: [SWS_NvM_00138] [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] [SWS_NvM_00134], SWS NvM с. 10

Жизненный цикл: NvM_Init, NvM_ReadAll и NvM_WriteAll

BswM монопольно вызывает NvM_Init [SWS_NvM_00693]. NvM_Init сбрасывает очереди и конечные автоматы и внутренне сигнализирует «INIT DONE» [SWS_NvM_00399]. Он не инициализирует ни RAM-блоки, ни нижележащие модули [SWS_NvM_00091] [SWS_NvM_00193]. Указатель конфигурации всегда равен NULL_PTR [SWS_NvM_00881]. Только после этого NvM_MainFunction обрабатывает запросы [SWS_NvM_00257].

Затем RAM-блоки заполняет NvM_ReadAll [SWS_NvM_00718]. Вызов лишь сигнализирует о запросе. Обработка откладывается до тех пор, пока не завершатся одиночные запросы к блокам [SWS_NvM_00243]. После этого задание выполняется в три шага:

  1. Сначала выполняется сравнение сохранённого ID конфигурации со скомпилированным [SWS_NvM_00073]. При несовпадении поведение зависит от NvMDynamicConfiguration: при NvMDynamicConfiguration == FALSE расхождение игнорируется [SWS_NvM_00248]. В противном случае блоки, не устойчивые к изменениям, получают данные по умолчанию [SWS_NvM_00249] [SWS_NvM_00674] (NV Data Handling с. 15).
  2. Затем выполняется итерация по пользовательским блокам, за исключением Block ID 0 и 1 [SWS_NvM_00244]. При этом обрабатываются только блоки с постоянным RAM-блоком или явной синхронизацией [SWS_NvM_00118].
  3. В завершение общий результат устанавливается в NVM_REQ_OK или NVM_REQ_NOT_OK [SWS_NvM_00895] [SWS_NvM_00301].

В примере с управлением режимами правило BswM NvMReadAllFinished запускает оставшуюся инициализацию только после завершения NvM_ReadAll (Mode Management Guide с. 31).

Запуск: NvM_Init и NvM_ReadAllBSW-TaskBswMNvMMemIf / Fee / EaUse Case: InitialisierungNvM_Init(NULL_PTR)Сбросить очереди и состояния,«INIT DONE» — блоки RAM без измененийNvM_Init()Use Case: Multiblock-Auftrag NvM_ReadAllNvM_ReadAll()NvM_ReadAll()optNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, NVM_REQ_PENDING)NvM_MainFunction()первый шаг: сохраненные иkompilierte Konfigurations-ID vergleichenloopдля каждого пользовательского блока для NvM_ReadAll (без ID блоков 0 и 1)NvM_MainFunction()NV-Block lesenJob-ErgebnisЗаполнить блок RAM или Mirror,Blockergebnis setzenoptNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, Ergebnis)BswM_MainFunction()Regel NvMReadAllFinished:restliche BSW-Initialisierung

Диаграмма последовательности: асинхронный запуск с NvM_Init, NvM_ReadAll и обратная передача состояния мультиблочной операции в BswM. Источники: [SWS_NvM_00693] [SWS_NvM_00243] [SWS_NvM_00073] [SWS_NvM_00888] [SWS_NvM_00889], NV Data Handling с. 20

Для Shutdown BswM вызывает NvM_WriteAll [SWS_NvM_00092]. Задание ведёт себя следующим образом:

  • Оно записывает постоянные RAM-блоки или получает явно синхронизированные данные через NvM_WriteRamBlockToNvm [SWS_NvM_00252].
  • Предварительно оно проверяет состояние «valid/modified» [SWS_NvM_00682].
  • Защищённые и заблокированные блоки пропускаются без сообщения об ошибке [SWS_NvM_00434] [SWS_NvM_00750].
  • Другие запросы его не прерывают [SWS_NvM_00567].

Пользователи помечают изменённые блоки с помощью NvM_SetRamBlockStatus(…, TRUE), если этот API активирован [SWS_NvM_00406] [SWS_NvM_00408]. Для блоков с флагом изменений (Dirty-Flag) этот вызов берёт на себя RTE (NV Data Handling с. 41).

NvM_CancelWriteAll зарезервирован за BswM [SWS_NvM_00703] и остаётся безрезультатным при отсутствии выполняющегося NvM_WriteAll [SWS_NvM_00233]. Текущий блок завершается недеструктивно [SWS_NvM_00238]. Оставшиеся блоки и результат мультиблочной операции получают NVM_REQ_CANCELED [SWS_NvM_00236] [SWS_NvM_00237] (SWS NvM с. 161).

Жизненный цикл дополняют два других мультиблочных запроса:

  • NvM_ValidateAll переводит блоки с автоматической валидацией в состояние «VALID / CHANGED» [SWS_NvM_00856].
  • NvM_FirstInitAll перезаписывает блоки данными по умолчанию или инвалидирует их, если они отсутствуют [SWS_NvM_00913] [SWS_NvM_00919].

Для всех мультиблочных запросов длина очереди равна единице [SWS_NvM_00380].

Shutdown: NvM_WriteAll и NvM_CancelWriteAllBSW-TaskBswMNvMNvM_WriteAll()NvM_WriteAll()loopдля каждого блока с постоянным RAM или явной синхронизациейNvM_MainFunction()проверить «valid/modified»; защищенные изаблокированные блоки пропустить; записатьaltAbbruch angefordertNvM_CancelWriteAll()NvM_CancelWriteAll()NvM_MainFunction()завершить текущий блок недеструктивно,остальные блоки: NVM_REQ_CANCELEDBswM_NvM_CurrentJobMode(WriteAll, NVM_REQ_CANCELED)штатное завершениеBswM_NvM_CurrentJobMode(WriteAll, Ergebnis)Regel NvMWriteAllFinished:EcuM_GoDown

Диаграмма последовательности: Shutdown с NvM_WriteAll и опциональным прерыванием через NvM_CancelWriteAll. Источники: [SWS_NvM_00092] [SWS_NvM_00682] [SWS_NvM_00238] [SWS_NvM_00237] [SWS_NvM_00889], Mode Management Guide с. 37

Одиночные запросы: очереди, приоритеты и обратная связь

Одиночные запросы к блокам, такие как NvM_ReadBlock, NvM_WriteBlock или NvM_RestoreBlockDefaults, являются асинхронными. Функция принимает параметры, ставит запрос в очередь и возвращает управление [SWS_NvM_00195] [SWS_NvM_00208] [SWS_NvM_00224]. После этого результат блока находится в NVM_REQ_PENDING [SWS_NvM_00185]. При переполнении очереди функция возвращает E_NOT_OK [SWS_NvM_00184]. Блок ставится в очередь только в том случае, если он ещё не ожидает и не обрабатывается [SWS_NvM_00385].

Другие службы действуют синхронно в контексте вызывающей стороны, например NvM_SetDataIndex [SWS_NvM_00448] и NvM_GetErrorStatus (SWS NvM с. 158). NvM_CancelJobs удаляет ожидающие запросы блока; однако выполняющееся задание продолжается [SWS_NvM_00536] [SWS_NvM_00537].

Обработка выполняется последовательно в соответствии с приоритетом [SWS_NvM_00162]. Если активен NvMJobPrioritization, NvM использует две очереди, одна из которых предназначена для запросов на немедленную запись Immediate (Crash-данные) [SWS_NvM_00564] [SWS_NvM_00378]. Такой NvM_WriteBlock деструктивно прерывает ожидающее задание [SWS_NvM_00300]. NvM_MainFunction затем перезапускает прерванное задание [SWS_NvM_00258]. Без приоритезации NvM работает в порядке поступления, без Immediate-заданий [SWS_NvM_00379]. Запросы, поступающие во время выполнения мультиблочного запроса, ставятся в очередь и выполняются после него [SWS_NvM_00568] [SWS_NvM_00569].

Каждый асинхронный запрос сохраняет свой результат в поле ошибок/статуса [SWS_NvM_00175]. NvM_GetErrorStatus считывает это поле [SWS_NvM_00015]. Кроме того, существуют два опциональных способа обратной связи:

Асинхронное задание для отдельного блока с подтверждениемNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloopпока задание на запись не завершитсяNvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

Диаграмма последовательности: асинхронный запрос на запись со статусными сообщениями в BswM, callback-вызовом и опросом статуса. Источники: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00740] [SWS_NvM_00890] [SWS_NvM_00891], SWS NvM с. 160

Синхронизация RAM-блоков и состояние блоков

NvM предусматривает два способа синхронизации данных с RAM-блоком приложения. При неявной синхронизации он работает непосредственно на этом RAM-блоке. Приложение предоставляет блок и не обращается к нему до завершения запроса [SWS_NvM_00698] [SWS_NvM_00699]. Если оно передаёт NULL_PTR, NvM использует постоянный RAM-блок [SWS_NvM_00898] [SWS_NvM_00900]. Тем не менее временный блок по указателю возможен [SWS_NvM_00278]. Службы PRAM всегда работают на постоянном RAM-блоке [SWS_NvM_00765] [SWS_NvM_00794]. В сценарии RTE этот блок представляет собой Per-Instance-Memory (NV Data Handling с. 32).

При явной синхронизации (NvMBlockUseSyncMechanism) обмен происходит через внутренний RAM-mirror [SWS_NvM_00511]. Он существует ровно в одном экземпляре, размер которого рассчитан по наибольшему задействованному блоку [SWS_NvM_00513]. NvM вызывает NvMWriteRamBlockToNvCallback или NvMReadRamBlockFromNvCallback [SWS_NvM_00515] [SWS_NvM_00516]. Если callback возвращает E_NOT_OK, он повторяет вызов в следующем цикле, до NvMRepeatMirrorOperations раз [SWS_NvM_00579] [SWS_NvM_00840]. Вплоть до callback-вызова приложению разрешено изменять RAM-блок [SWS_NvM_00705]. Блок использует либо явную синхронизацию, либо постоянный RAM-блок, но не то и другое одновременно [SWS_NvM_00904]. Этот механизм допускает разделяемые блоки через NvBlockSwComponentType (NV Data Handling с. 12).

Запись с явной синхронизациейAnwendung (SW-C/RTE)NvMBSW-TaskMemIfЗаполнить блок RAM даннымиNvM_WriteBlock(BlockId, NULL_PTR)E_OKБлок RAM разрешается изменятьвплоть до функции обратного вызоваNvM_MainFunction()NvM_WriteRamBlockToNvm(NvMBuffer)(NvMWriteRamBlockToNvCallback)RAM-Block in RAM-Mirror kopierenaltВозврат E_OKE_OKMirror-Inhalt in NV-Block schreibenВозврат E_NOT_OKE_NOT_OKCallback в следующей NvM_MainFunctionerneut aufrufen (max. NvMRepeatMirrorOperations)

Диаграмма последовательности: запрос на запись с явной синхронизацией через RAM-mirror, включая повторную попытку при E_NOT_OK. Источники: [SWS_NvM_00515] [SWS_NvM_00705] [SWS_NvM_00579] [SWS_NvM_00840], NV Data Handling с. 27

Для постоянных RAM-блоков и mirror NvM ведёт состояние «valid»/«invalid» [SWS_NvM_00128] [SWS_NvM_00132]. Переходы подробно:

  • NvM_ReadBlock инвалидирует постоянный RAM-блок уже при постановке в очередь [SWS_NvM_00198].
  • После успешного чтения он переходит в «valid/unchanged» [SWS_NvM_00200].
  • После загрузки данных по умолчанию он переходит в «valid/changed» [SWS_NvM_00366].
  • NvM_SetRamBlockStatus(…, TRUE) помечает его как изменённый и инициирует фоновый пересчёт CRC [SWS_NvM_00406] [SWS_NvM_00121].
  • После успешной записи он считается «valid/unmodified» [SWS_NvM_00472].
blockzustand invalid INVALID unchanged VALID / UNCHANGED invalid->unchanged NV-Daten erfolgreich gelesen changed VALID / CHANGED invalid->changed Defaultdaten geladen unchanged->invalid NvM_ReadBlock angenommen (permanenter RAM) unchanged->changed NvM_SetRamBlockStatus(TRUE) или NvM_ValidateAll changed->invalid NvM_ReadBlock angenommen (permanenter RAM) changed->unchanged erfolgreich in NV geschrieben

Диаграмма состояний: состояния RAM-блока и инициирующие события. Источники: [SWS_NvM_00198] [SWS_NvM_00200] [SWS_NvM_00366] [SWS_NvM_00406] [SWS_NvM_00472] [SWS_NvM_00856]

Конфигурация, механизмы защиты и привязка к разделам (Partition)

Для ограниченных ресурсов предусмотрены три класса конфигурации API [SWS_NvM_00149]. Класс 1 не поддерживает Dataset-блоки [SWS_NvM_00365]. Таблицы дескрипторов генерируются [SWS_NvM_00143]. Потребность в памяти пользователи декларируют во время конфигурации [SWS_NvM_00030]. Модули BSW делают это через NvBlockNeeds (BSWMD Template с. 241). Интегратор ECU формирует на этой основе конфигурацию NvM (Methodology с. 444).

Для отдельных блоков доступно несколько механизмов защиты:

  • Поле атрибутов управляет защитой от записи [SWS_NvM_00054]; NvMBlockWriteProt активирует её по умолчанию [SWS_NvM_00326].
  • Блоки с NvMWriteBlockOnce записываются только один раз [SWS_NvM_00397]. Запросы на запись до первого чтения NvM отклоняет [SWS_NvM_00952].
  • Для заблокированных блоков (NvM_SetBlockLockStatus) NvM_WriteBlock возвращает E_NOT_OK [SWS_NvM_00749]. Блокировку не изменяют ни NvM_SetRamBlockStatus, ни NvM_SetBlockProtection [SWS_NvM_00754].
  • Опционально доступны также заголовок Static-Block-ID [SWS_NvM_00522], сравнение CRC для предотвращения лишней записи [SWS_NvM_00849] и шифрование через CSM [SWS_NvM_00976].

При разделении на разделы (Partitioning) NvM вызывает интерфейсы в контексте соответствующего назначенного раздела. Общие функции выполняются в master-разделе [SWS_NvM_00969]. NvM_ReadAll и NvM_WriteAll предоставляются только master-разделом [SWS_NvM_00970] [SWS_NvM_00971] [SWS_NvM_CONSTR00974]. SW-C обращаются к NvM через порты, ориентированные на блоки:

Поведение при ошибке

При чтении NvM по-разному интерпретирует сообщения от MemIf:

  • Расхождение CRC он сообщает как NVM_E_INTEGRITY_FAILED [SWS_NvM_00203].
  • О MEMIF_JOB_FAILED он сообщает как о NVM_E_REQ_FAILED [SWS_NvM_00654].
  • MEMIF_BLOCK_INVALID приводит только к NVM_REQ_NV_INVALIDATED, без сообщения в DEM [SWS_NvM_00341] [SWS_NvM_00652].

Затем вступают в действие несколько этапов восстановления:

  1. При ошибках CRC следуют сконфигурированные повторные попытки чтения [SWS_NvM_00526].
  2. Для избыточных блоков NvM считывает вторую копию и пытается восстановить избыточность [SWS_NvM_00199] [SWS_NvM_00531]. Если это не удаётся, он сообщает NVM_E_LOSS_OF_REDUNDANCY [SWS_NvM_00546].
  3. Наконец, NvM загружает данные по умолчанию с результатом NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. Содержимое NV при этом остаётся без изменений [SWS_NvM_00172].

Если данные по умолчанию отсутствуют, RAM-блок остаётся недействительным [SWS_NvM_00658] [SWS_NvM_00204]. Интерпретация: порядок этапов, вероятно, соответствует перечислению в Error Description (Error Description с. 62). Вопрос (открытый) Этот источник расходится с требованиями в двух пунктах. Он указывает NVM_REQ_RESTORED_FROM_ROM вместо NVM_REQ_RESTORED_DEFAULTS. Кроме того, он обобщённо сводит окончательный сбой к NVM_E_REQ_FAILED. Нормативными являются приведённые выше требования.

lesefehler lesen Прочитать блок NV через MemIf pruef Результат MemIf и проверки CRC? lesen->pruef erfolg NVM_REQ_OK RAM-Block VALID / UNCHANGED pruef->erfolg in Ordnung inv NVM_REQ_NV_INVALIDATED без сообщения в Dem pruef->inv MEMIF_BLOCK_INVALID retry Lesewiederholung (NVM_MAX_NUM_OF_READ_RETRIES) pruef->retry Ошибка, остались повторные попытки red NVM_BLOCK_REDUNDANT? pruef->red Ошибка, повторные попытки исчерпаны retry->lesen zweit zweiten NV-Block lesen red->zweit да def Defaultdaten vorhanden? (ROM-Block / Init-Callback) red->def нет zweitok zweite Kopie in Ordnung? zweit->zweitok wieder Восстановить избыточность; при неудаче NVM_E_LOSS_OF_REDUNDANCY zweitok->wieder да zweitok->def нет wieder->erfolg restore Defaults in RAM laden NVM_REQ_RESTORED_DEFAULTS def->restore да fail Блок RAM остается недействительным NVM_REQ_INTEGRITY_FAILED / NVM_REQ_NOT_OK сообщение в Dem def->fail нет

Диаграмма деятельности: обработка ошибок чтения от повторной попытки и избыточной копии до данных по умолчанию. Интерпретация: порядок соответствует перечислению в Error Description. Источники: [SWS_NvM_00526] [SWS_NvM_00199] [SWS_NvM_00202] [SWS_NvM_00341] [SWS_NvM_00658], Error Description с. 62

При записи NvM считает отрицательные подтверждения до NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00213] [SWS_NvM_00216]. При превышении предела он устанавливает NVM_REQ_NOT_OK и сообщает NVM_E_REQ_FAILED [SWS_NvM_00683] [SWS_NvM_00684] (Error Description с. 43). Два других сценария ошибок:

  • Если верификация записи завершается неудачей, NvM сообщает NVM_E_VERIFY_FAILED и повторяет запись [SWS_NvM_00528] [SWS_NvM_00529].
  • Избыточный блок считается записанным, как только одна копия успешно записана [SWS_NvM_00284].

Об ошибках некорректного использования NvM сообщает в DET при активированном обнаружении ошибок разработки. Примерами являются NVM_E_UNINIT и NVM_E_BLOCK_PENDING [SWS_NvM_00614] [SWS_NvM_00615], а также NVM_E_WRITE_PROTECTED [SWS_NvM_00962]. Мультиблочный запрос завершается с NVM_REQ_NOT_OK, как только происходит сбой в отдельном блоке [SWS_NvM_00318]. Пользователи проверяют статус своих блоков самостоятельно [SWS_NvM_00694]. После неудачного чтения они предоставляют валидные данные перед следующей записью [SWS_NvM_00696].

Дальнейшие подробные доказательства

Сгенерированное ИИ руководство на основе требований R20-11 и соответствующих фрагментов документации. Фрагменты документов из других релизов носят дополняющий характер. Определяющими остаются исходные тексты спецификаций по ссылкам.

NVRAM Manager (NvM)

Provides synchronous and asynchronous block-based data management for non-volatile storage (EEPROM, Flash).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция NvM_Init [SWS_NvM_00447] 📄 PDF

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Service for resetting all internal variables.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d241ed15a825 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и контекст вызова

Функция NvM_Init служит для синхронного сброса всех внутренних переменных NVRAM Manager [SWS_NvM_00447]. В качестве входного параметра ConfigPtr она ожидает указатель на выбранный набор конфигурационных данных и не имеет возвращаемого значения [SWS_NvM_00447]. Будучи API типа 4, она входит в состав классов конфигурации 2 и 3 [SWS_NvM_00560], [SWS_NvM_00561]. Функция не является реентерабельной и может вызываться исключительно через BSW Mode Manager [SWS_NvM_00447], [SWS_NvM_00693].

Задачи инициализации

Во время вызова функция выполняет следующие действия:

  • сброс всех внутренних переменных, включая конечные автоматы, очереди заданий и флаги запросов, в их начальные значения [SWS_NvM_00399];
  • установка индекса набора данных всех блоков NVRAM типа NVM_BLOCK_DATASET в ноль [SWS_NvM_00192];
  • внутренняя установка сигнала «INIT DONE», который является предпосылкой для обработки заданий, управления очередями и пересчёта CRC в модуле [SWS_NvM_00257], [SWS_NvM_00399].

Ограничения и взаимодействие

Из-за строгих требований ко времени запуска электронного блока управления (ECU) NvM_Init не инициализирует сконфигурированные блоки NVRAM [SWS_NvM_00091]. Постоянное содержимое блоков RAM не изменяется, а функции обратного вызова синхронизации не вызываются; это закреплено за функцией NvM_ReadAll [SWS_NvM_00400]. Кроме того, NvM_Init не инициализирует ни нижележащие драйверы, ни аппаратную абстракцию памяти, ни сторонние модули, так как их инициализация предполагается выполненной через BSW Mode Manager [SWS_NvM_00157], [SWS_NvM_00193].

Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_GetDataIndex [SWS_NvM_00449] 📄 PDF

Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);

Service for getting the currently set Data Index of a datase t NVRAM block

функция NvM_SetBlockProtection [SWS_NvM_00450] 📄 PDF

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

Service for setting/ resetting the write protection for a NV block. Availabl e via Nv M.h

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f3fd900b11e8 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Синхронная и реентерабельная функция NvM_SetBlockProtection служит для установки или сброса защиты от записи для блока NVRAM через соответствующий атрибут в административном блоке [SWS_NvM_00450], [SWS_NvM_00016]. Она относится к классу конфигурации API 3 [SWS_NvM_00560]. Окружение модуля NvM может целенаправленно включать или отключать защиту от записи через параметр ProtectionEnabled [SWS_NvM_00578]. Функция возвращает E_OK при успешном выполнении и E_NOT_OK в случае ошибки [SWS_NvM_00450].

Ограничения и параллелизм

Изменение защиты от записи разрешено только для блоков, у которых NvMWriteBlockOnce настроен на FALSE, независимо от значения параметра NvMBlockWriteProt [SWS_NvM_00325]. Если NvMWriteBlockOnce настроен на TRUE, защиту от записи запрещено как включать, так и отключать [SWS_NvM_00398], [SWS_NvM_00577]; эта защита не может быть снята даже после операций чтения [SWS_NvM_00314], [SWS_NvM_00316], [SWS_NvM_00784]. Кроме того, состояние блокировки, установленное через NvM_SetBlockLockStatus, не может быть изменено с помощью NvM_SetBlockProtection [SWS_NvM_00754]. Пока запрос для отдельного блока активен или находится в очереди для того же блока, вызов не допускается [SWS_NvM_00704].

Обработка ошибок

При включённом обнаружении ошибок разработки (DET) функция сообщает о специфических состояниях ошибок:

  • NVM_E_UNINIT, если модуль NvM ещё не инициализирован [SWS_NvM_00606];
  • NVM_E_PARAM_BLOCK_ID, если переданный BlockId находится вне допустимого диапазона [SWS_NvM_00609].
  • NVM_E_BLOCK_PENDING, если для блока операция уже активна или находится в очереди [SWS_NvM_00607];
  • NVM_E_BLOCK_CONFIG, если блок сконфигурирован с NvMWriteBlockOnce = TRUE [SWS_NvM_00608];
  • NVM_E_BLOCK_LOCKED, если блок заблокирован [SWS_NvM_00759].

Это указание по использованию основано на спецификации NVRAM Manager в AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_GetErrorStatus [SWS_NvM_00451] 📄 PDF

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

Service to read the block dependent error/ status information.

функция NvM_SetRamBlockStatus [SWS_NvM_00453] 📄 PDF

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

Service for setting the RAM block status of a permanent RAM block or the status of the explicit synchronization of a NVRAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f2f026a0e790 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная и реентерабельная функция NvM_SetRamBlockStatus служит для установки статуса блока RAM для постоянных блоков RAM или для блоков с явной синхронизацией [SWS_NvM_00453]. Она доступна в классах конфигурации API 2 и 3 [SWS_NvM_00561], [SWS_NvM_00560], если она была активирована через конфигурационный параметр NvMSetRamBlockStatusApi [SWS_NvM_00408].

Через параметр BlockChanged управляется, помечается ли блок как действительный и изменённый (TRUE) или как недействительный и неизменённый (FALSE) [SWS_NvM_00453], [SWS_NvM_00406]. При передаче TRUE модуль исходит из действительности данных [SWS_NvM_00241]. Функция возвращает E_OK при успешном изменении статуса и E_NOT_OK в случае ошибки [SWS_NvM_00453].

Если BlockChanged устанавливается в TRUE, функция запрашивает в фоновом режиме перерасчет контрольной суммы в NvM_MainFunction, если сконфигурирован NvMCalcRamBlockCrc [SWS_NvM_00121]. Для блоков без постоянного RAM с явной синхронизацией это задание использует функцию обратного вызова записи для получения данных [SWS_NvM_00906]. Если она завершается сбоем, выполняются сконфигурированные повторные попытки на каждый вызов NvM_MainFunction [SWS_NvM_00907], [SWS_NvM_00908]. Если все попытки остаются безуспешными, задание тем не менее считается завершенным, а блок остается помеченным как измененный [SWS_NvM_00909].

Перед вызовом модуль NvM должен быть инициализирован [SWS_NvM_00711]. При активном обнаружении ошибок разработки функция сообщает NVM_E_UNINIT при неинициализированном модуле [SWS_NvM_00643], NVM_E_PARAM_BLOCK_ID при недействительном BlockId [SWS_NvM_00645] и NVM_E_BLOCK_PENDING при уже выполняющихся или находящихся в очереди заданиях [SWS_NvM_00644]. Пока активно задание для одного блока, функцию нельзя вызывать для этого блока [SWS_NvM_00704]. Блокировку блока, установленную через NvM_SetBlockLockStatus, изменить с помощью этого невозможно [SWS_NvM_00754].

Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_SetBlockLockStatus [SWS_NvM_00548] 📄 PDF

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

Service for setting the lock status of a permanent RAM block or of the explicit synchronization of a NVRAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9c1d841bb0f7 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и контекст вызова

Синхронная и реентерабельная функция NvM_SetBlockLockStatus служит для блокировки (BlockLocked = TRUE) или разблокировки (BlockLocked = FALSE) постоянно сконфигурированного RAM-блока или явной синхронизации блока NVRAM [SWS_NvM_00548]. Она входит в состав функционала классов конфигурации API 2 и 3 [SWS_NvM_00561], [SWS_NvM_00560]. Функция не содержится в интерфейсе ServicePort и вызывается преимущественно DCM, а также сложными драйверами устройств (CDD) [SWS_NvM_00732].

Ограничения и взаимодействие

Вызов действует исключительно на блоки NVRAM с постоянным RAM-блоком или сконфигурированной явной синхронизацией; для всех остальных блоков он остается без эффекта [SWS_NvM_00732]. Если блок блокируется (BlockLocked = TRUE), NvM гарантирует, что связанные NV-данные не будут модифицированы: блок пропускается при NvM_WriteAll, а службы NvM_WriteBlock, NvM_WritePRAMBlock, NvM_InvalidateNvBlock и NvM_EraseNvBlock отклоняются [SWS_NvM_00751]. При следующем запуске NvM гарантированно загружает блок при NvM_ReadBlock или NvM_ReadPRAMBlock из NV-памяти [SWS_NvM_00752]. Установленное состояние блокировки не может быть изменено ни через NvM_SetRamBlockStatus, ни через NvM_SetBlockProtection [SWS_NvM_00754]. Передача BlockLocked = FALSE восстанавливает штатную обработку [SWS_NvM_00753].

Обработка ошибок

При активированном обнаружении ошибок разработки (DET) функция сообщает о специфических ошибках разработки:

  • NVM_E_UNINIT, если модуль NvM на момент вызова еще не инициализирован [SWS_NvM_00728].
  • NVM_E_PARAM_BLOCK_ID, если параметр BlockId находится вне допустимого диапазона [SWS_NvM_00731].
  • NVM_E_BLOCK_CONFIG, если указанный блок NVRAM сконфигурирован с параметром NvMWriteBlockOnce = TRUE [SWS_NvM_00730].

Данное указание по использованию основано на спецификации AUTOSAR Classic R20-11 и обобщает требования к вызову, защитному действию и обработке ошибок API.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_CancelJobs [SWS_NvM_00535] 📄 PDF

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel all jobs pending for a NV block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 692d02b963f0 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Функция NvM_CancelJobs, доступная через NvM.h, служит для синхронной отмены всех стоящих в очереди заданий для определенного блока NVRAM [SWS_NvM_00535], [SWS_NvM_00536]. Функция спроектирована как реентерабельная и ожидает в качестве параметра BlockId, который однозначно идентифицирует дескриптор блока соответствующего блока NVRAM [SWS_NvM_00535]. Вызов возвращает E_OK, если ожидающие задания удалось успешно удалить из очереди, и E_NOT_OK, если для указанного блока задание в очереди обнаружено не было [SWS_NvM_00535].

Последовательность и параллелизм

Задание, которое на момент вызова функции уже активно обрабатывается, не прерывается с помощью NvM_CancelJobs, а продолжает выполняться до конца [SWS_NvM_00537]. Если запрос на отмену для ожидающих заданий принят, служба предварительно устанавливает зависящий от блока результат запроса в NVM_REQ_CANCELED [SWS_NvM_00225], [SWS_NvM_00536]. Цель этой очистки заключается в том, чтобы освободить очередь, например, при завершении или перезапуске раздела, предотвратив тем самым последующие уведомления о завершенных заданиях [SWS_NvM_00225].

Обработка ошибок и конфигурация

При активированном обнаружении ошибок разработки (DET) функция проверяет предусловия: если модуль еще не инициализирован, сообщается об ошибке NVM_E_UNINIT [SWS_NvM_00648]. Если переданный BlockId находится вне допустимого диапазона, формируется DET-сообщение NVM_E_PARAM_BLOCK_ID [SWS_NvM_00649]. NvM_CancelJobs классифицируется как API типа 2 и доступна в классах конфигурации API 2 и 3 [SWS_NvM_00561], [SWS_NvM_00560].

Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_ReadBlock [SWS_NvM_00454] 📄 PDF

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

Service to copy the data of the NV block to its corresponding RAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 423f54bb75f5 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Функция NvM_ReadBlock служит для асинхронного копирования пользовательских данных из NV-памяти в соответствующий RAM-блок [SWS_NvM_00010], [SWS_NvM_00454]. Вызов является реентерабельным [SWS_NvM_00454]. Она принимает параметры, помещает запрос на чтение во внутреннюю очередь заданий и немедленно возвращает E_OK при успешном принятии или E_NOT_OK при отклонении [SWS_NvM_00195], [SWS_NvM_00454].

При передаче указателя NvM_DstPtr данные могут считываться во временный RAM-буфер в отличие от конфигурации блока; недопустимый указатель NULL в этом сценарии приводит к ошибке DET [SWS_NvM_00196], [SWS_NvM_00278]. Сконфигурированный постоянный RAM-блок помечается как невалидный непосредственно при постановке в очередь или при запуске обработки задания [SWS_NvM_00198]. Только после успешного процесса копирования RAM-блок считается валидным и неизменённым [SWS_NvM_00200], а результат выполнения задания переходит в NVM_REQ_OK [SWS_NvM_00206].

Обработка ошибок и целостность данных

Если для блока активирована контрольная сумма (NvMCalRamBlockCrC == TRUE), задание запрашивает перерасчёт после копирования [SWS_NvM_00201]:

  • При ошибках CRC в DEM передаётся NVM_E_INTEGRITY_FAILED [SWS_NvM_00203]. Если стандартные значения присутствуют, они загружаются, а результат устанавливается в NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. При отсутствии ROM-данных и callback-функций инициализации результатом является NVM_REQ_INTEGRITY_FAILED [SWS_NvM_00204].
  • Если драйвер памяти сообщает MEMIF_JOB_FAILED и замещающие значения недоступны, задание завершается с NVM_REQ_NOT_OK [SWS_NvM_00359].

Особенности типов блоков

  • Redundant: если чтение первой копии завершается сбоем, автоматически используется вторая NV-копия [SWS_NvM_00199]. Если обе копии невалидны, весь блок инвалидируется [SWS_NvM_00317].
  • Dataset: если блок, выбранный по индексу набора данных, помечен как невалидный, копирование в RAM не выполняется [SWS_NvM_00355].
  • Write-Once: непротиворечиво прочитанные блоки с установленным NVM_WRITE_BLOCK_ONCE становятся постоянно защищёнными от записи [SWS_NvM_00316].

Этот текст был создан ИИ и основан исключительно на спецификациях релиза R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_WriteBlock [SWS_NvM_00455] 📄 PDF

Std_ReturnType NvM_WriteBlock (NvM_BlockIdType BlockId, const void* NvM_SrcPtr);

Service to copy the data of the RAM block to its corresponding NV block. Available vi a Nv M.h

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d2775f30ff1b Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция NvM_WriteBlock служит для копирования данных RAM-блока в назначенный NV-блок [SWS_NvM_00455], [SWS_NvM_00410]. Вызов выполняется реентерабельно и асинхронно: функция принимает переданные параметры BlockId, а также NvM_SrcPtr, помещает задание на запись во внутреннюю очередь заданий и немедленно возвращает управление [SWS_NvM_00208]. Возвращаемое значение сигнализирует с помощью E_OK об успешном принятии или с помощью E_NOT_OK об отклонении задания [SWS_NvM_00455].

В отношении параметризации и источника данных действуют следующие требования:

  • Если через NvM_SrcPtr передается допустимый RAM-адрес, задание на запись использует этот буфер [SWS_NvM_00210]. Это также позволяет сохранять временные RAM-блоки для блоков, сконфигурированных как постоянные, или при явной синхронизации [SWS_NvM_00280].
  • Сконфигурированный постоянный RAM-блок предполагается действительным или автоматически валидируется перед процессом копирования [SWS_NvM_00303].
  • Если для NV-блока сконфигурирована контрольная сумма, задание перед процессом записи запрашивает перерасчет CRC [SWS_NvM_00212].
  • Для блоков наборов данных (NVM_BLOCK_DATASET) целевой объект выбирается через индекс данных, сохраненный в административном блоке [SWS_NvM_00338].
  • Для избыточных блоков (NVM_BLOCK_REDUNDANT) задание завершается с NVM_REQ_OK, как только хотя бы одна копия была успешно записана [SWS_NvM_00284].
  • Если установлен NvMWriteBlockOnce == TRUE, задание после успешной записи незамедлительно активирует защиту от записи в административном блоке [SWS_NvM_00328].
  • Задания на запись для зарезервированного ID блока 1 разрешены только при активированном NvMDynamicConfiguration [SWS_NvM_00311].

Обработка ошибок и параллелизм:

  • Если обнаружение ошибок разработки активно, NvM_WriteBlock сообщает об ошибке DET NVM_E_UNINIT при неинициализированном модуле [SWS_NvM_00619], а также о NVM_E_BLOCK_PENDING, если тот же блок уже находится в обработке или поставлен в очередь [SWS_NvM_00620]. Отсутствующий указатель на источник для временных буферов приводит к ошибке параметров DET [SWS_NvM_00280].
  • Отрицательные подтверждения от интерфейса памяти увеличивают счетчик повторов; после превышения NVM_MAX_NUM_OF_WRITE_RETRIES задание завершается с NVM_REQ_NOT_OK [SWS_NvM_00213], [SWS_NvM_00216].
  • Если блок сконфигурирован с немедленным приоритетом, NvM_WriteBlock деструктивно прерывает выполняющееся в данный момент задание, чтобы задание на запись было обработано следующим [SWS_NvM_00300].

Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_RestoreBlockDefaults [SWS_NvM_00456] 📄 PDF

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

Service to restore the default data to its corr esponding RAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 01efa016ebb0 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Функция NvM_RestoreBlockDefaults восстанавливает стандартные данные в назначенном RAM-блоке ([SWS_NvM_00456], [SWS_NvM_00012]). Она работает асинхронно: после вызова она принимает параметры, ставит запрос во внутреннюю очередь заданий и немедленно возвращает E_OK при успешном принятии или E_NOT_OK при отклонении ([SWS_NvM_00456], [SWS_NvM_00224]). Если через выходной параметр NvM_DestPtr передан валидный RAM-адрес, он используется в качестве целевого адреса ([SWS_NvM_00435]). Чтобы скопировать ROM-данные во временный RAM-блок, даже если сконфигурированы постоянный RAM-блок или callback-функции синхронизации, вызывающая сторона обязательно должна передать указатель, отличный от NULL ([SWS_NvM_00436]).

Обработка ошибок и граничные условия

Функция не является реентерабельной ([SWS_NvM_00456]) и входит в классы конфигурации API 2 и 3 ([SWS_NvM_00561], [SWS_NvM_00560]). Если включено обнаружение ошибок разработки (DET), она сообщает NVM_E_UNINIT, если модуль ещё не инициализирован ([SWS_NvM_00625]), NVM_E_PARAM_BLOCK_ID при невалидном BlockId ([SWS_NvM_00630]), а также ошибку параметра, если для постоянно сконфигурированных блоков при временном копировании не передан валидный целевой указатель ([SWS_NvM_00436]). Функция синхронно завершается сбоем с E_NOT_OK, если блок относится к типу NVM_BLOCK_DATASET, существует как минимум один ROM-блок и текущий индекс данных указывает на NV-блок ([SWS_NvM_00353]).

Обработка заданий и взаимодействие

В рамках асинхронной обработки заданий сервис загружает стандартные значения из сконфигурированного ROM-блока ([SWS_NvM_00267]). Если запрошен постоянный RAM-блок или используется явная callback-функция синхронизации (NvMReadRamBlockFromNvCallback), RAM-блок инвалидируется перед процессом копирования или перед вызовом callback-функции ([SWS_NvM_00227]). После успешного процесса копирования или после возврата callback-функции синхронизации со значением E_OK RAM-блок валидируется и помечается как изменённый ([SWS_NvM_00228]). Если для блока сконфигурирована контрольная сумма, задание в завершение запрашивает перерасчёт CRC ([SWS_NvM_00229]). Эту же логику восстановления используют NvM_ReadBlock и NvM_ReadAll в качестве резервного механизма при сбое чтения из памяти или ошибках CRC ([SWS_NvM_00202], [SWS_NvM_00293], [SWS_NvM_00657]).

Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_EraseNvBlock [SWS_NvM_00457] 📄 PDF

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

Service to erase a NV block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e5129c2997d6 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Реентерабельная асинхронная функция NvM_EraseNvBlock ([SWS_NvM_00457]) класса конфигурации API 3 ([SWS_NvM_00560]) служит для стирания блока энергонезависимой памяти по переданному BlockId. Если защита от записи не активна, функция принимает параметры, ставит задание на стирание во внутреннюю очередь заданий и немедленно возвращает управление ([SWS_NvM_00231], [SWS_NvM_00418]). Возвращаемое значение E_OK сигнализирует об успешном принятии задания, тогда как E_NOT_OK указывает на отклонение ([SWS_NvM_00457]).

Перед вызовом модуль NvM должен быть полностью инициализирован ([SWS_NvM_00715]). После постановки в очередь защита от записи повторно не проверяется перед извлечением задания из очереди ([SWS_NvM_00662]). Для избыточных блоков типа NVM_BLOCK_REDUNDANT операция стирания считается успешной только после того, как стёрты оба избыточных NV-блока ([SWS_NvM_00269]). Содержимое данных назначенного RAM-блока всегда остаётся неизменным в результате выполнения задания ([SWS_NvM_00416]).

Вызов отклоняется, если адресуется ROM-блок блока набора данных ([SWS_NvM_00661]) или блок заблокирован с помощью NvM_SetBlockLockStatus ([SWS_NvM_00751]). При активном обнаружении ошибок разработки (DET) функция сообщает NVM_E_UNINIT при неинициализированном модуле ([SWS_NvM_00631]), NVM_E_PARAM_BLOCK_ID при невалидном BlockId ([SWS_NvM_00635]), а также NVM_E_BLOCK_LOCKED при заблокированном блоке ([SWS_NvM_00757]). Если блок не имеет немедленного приоритета («immediate priority») или сконфигурирован стандартный приоритет, при активном DET сообщается об ошибке NVM_E_BLOCK_CONFIG и возвращается E_NOT_OK ([SWS_NvM_00357], [SWS_NvM_00636]). Если последующее асинхронное выполнение завершается неудачно, статус запроса устанавливается в NVM_REQ_NOT_OK ([SWS_NvM_00271]) и в DEM сообщается NVM_E_REQ_FAILED ([SWS_NvM_00663]).

Это указание по использованию было сгенерировано автоматически на основе спецификации.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_InvalidateNvBlock [SWS_NvM_00459] 📄 PDF

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Service to invalidate a NV block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a20887273850 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция NvM_InvalidateNvBlock представляет собой асинхронный и реентерабельный сервис класса конфигурации API 3 для инвалидации NV-блока [SWS_NvM_00459], [SWS_NvM_00560]. Условием вызова является предварительная инициализация модуля NvM окружением модуля [SWS_NvM_00717]. Вызов принимает параметр BlockId, при отключённой защите от записи помещает запрос в очередь и возвращает E_OK [SWS_NvM_00239], [SWS_NvM_00424]. Если задание не может быть принято, функция возвращает E_NOT_OK [SWS_NvM_00459].

Вызов синхронно отклоняется с E_NOT_OK, если через BlockId был указан ROM-блок блока набора данных (Dataset) [SWS_NvM_00664]. Если блок ранее был заблокирован через NvM_SetBlockLockStatus, NvM отклоняет задание [SWS_NvM_00751] и при активном интерфейсе разработки сообщает об ошибке DET NVM_E_BLOCK_LOCKED [SWS_NvM_00756]. Если блок уже находится в очереди или выполняется, выдаётся сообщение DET NVM_E_BLOCK_PENDING [SWS_NvM_00639].

Собственно асинхронное задание инвалидирует адресуемый NV-блок [SWS_NvM_00421] с учётом следующих граничных условий:

  • Для избыточных блоков (NVM_BLOCK_REDUNDANT) результат выполнения задания устанавливается в NVM_REQ_OK только тогда, когда успешно инвалидированы оба избыточных NV-блока [SWS_NvM_00274]; тот же механизм применяется и для NvM_FirstInitAll [SWS_NvM_00919], [SWS_NvM_00920].
  • Для блоков с NVM_WRITE_BLOCK_ONCE задание оставляет защиту от записи без изменений [SWS_NvM_00960]. Если операция чтения не предшествовала, задание сообщает об ошибке DET NVM_E_WRITE_ONCE_STATUS_UNKNOWN [SWS_NvM_00958].
  • Если во время асинхронной обработки возникает ошибка, результат запроса устанавливается в NVM_REQ_NOT_OK [SWS_NvM_00275], а производственная ошибка NVM_E_REQ_FAILED передаётся в DEM [SWS_NvM_00666].

Данное указание по применению было сгенерировано ИИ и основано исключительно на данных спецификации из AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_ReadPRAMBlock [SWS_NvM_00764] 📄 PDF

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

Service to copy the data of the NV block to its corresponding permanent RAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 657ec2501bdc Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Асинхронная и реентерабельная функция [SWS_NvM_00764] служит для копирования данных NV-блока в назначенный постоянный RAM-блок. Вызов принимает BlockId, помещает запрос на чтение во внутреннюю очередь заданий и немедленно возвращает управление [SWS_NvM_00766]. Возвращаемое значение E_OK подтверждает принятие задания, тогда как E_NOT_OK сигнализирует об отклонении [SWS_NvM_00764]. Функция входит в состав функционала классов конфигурации API 2 и 3 [SWS_NvM_00560], [SWS_NvM_00561].

Порядок выполнения и синхронизация

При успешной постановке задания в очередь или начале обработки постоянный RAM-блок незамедлительно инвалидируется [SWS_NvM_00767]. Если для блока настроена явная синхронизация, приложению разрешается изменять RAM-блок вплоть до вызова рутины синхронизации; инвалидация в этом случае происходит непосредственно перед вызовом NvMReadRamBlockFromNvCallback [SWS_NvM_00706], [SWS_NvM_00767]. Если NV-данные были безошибочно переданы в RAM, задание завершается со статусом NVM_REQ_OK [SWS_NvM_00765], [SWS_NvM_00775].

Обработка ошибок и избыточность

Для блоков типа NVM_BLOCK_REDUNDANT задание автоматически запускает попытку чтения со второго блока, если первая попытка чтения завершается неудачей [SWS_NvM_00768]. Для наборов данных (NVM_BLOCK_DATASET) копирование блокируется, если выбранный через индекс NV-блок является несогласованным [SWS_NvM_00771]; если индекс указывает на ROM-данные, они загружаются, а результат устанавливается в NVM_REQ_OK [SWS_NvM_00772]. Если сконфигурированы стандартные данные и NV-блок не читается при недействительном состоянии RAM, выполняется неявное восстановление [SWS_NvM_00575], классифицирующее RAM-блок как действительный и измененный [SWS_NvM_00774]; без сконфигурированных значений по умолчанию восстановление не выполняется [SWS_NvM_00572]. Если ранее был активен NvM_SetBlockLockStatus, принудительно выполняется дозагрузка из NV-памяти [SWS_NvM_00752].

Это указание по использованию было сгенерировано автоматически на основе состояния спецификации AUTOSAR CP R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_WritePRAMBlock [SWS_NvM_00793] 📄 PDF

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

Service to copy the data of the permanent RAM block to its corresponding NV block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5a26959f15b3 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Реентерабельная асинхронная функция NvM_WritePRAMBlock инициирует запись данных постоянного RAM-блока в соответствующий NV-блок [SWS_NvM_00793], [SWS_NvM_00794]. Функция доступна в классах конфигурации API 2 и 3 [SWS_NvM_00561], [SWS_NvM_00560]. Зарезервированный ID блока 1 разрешается передавать только в том случае, если NvMDynamicConfiguration установлен в TRUE [SWS_NvM_00311].

При передаче функция возвращает E_OK при успешном принятии или E_NOT_OK [SWS_NvM_00793]. Если указанный блок заблокирован, вызов завершается с ошибкой E_NOT_OK, и модуль сообщает об ошибке DET [SWS_NvM_00797]. Защита блока проверяется уже при постановке в очередь заданий и повторно не валидируется перед выполнением задания [SWS_NvM_00799]. Если блок NVRAM обладает немедленным приоритетом (immediate priority), текущее выполняемое задание немедленно деструктивно прерывается, и это задание записи обрабатывается следующим [SWS_NvM_00800].

Перед фактической передачей в NV-память задание запрашивает пересчет CRC, если блок сконфигурирован с CRC [SWS_NvM_00801]. Еще недействительный постоянный RAM-блок автоматически валидируется [SWS_NvM_00803]. Для избыточных блоков (NVM_BLOCK_REDUNDANT) записываются оба NV-блока, начиная с того, который не читался при предшествующих заданиях чтения [SWS_NvM_00807], [SWS_NvM_00808]. При ошибках записи количество повторов ограничивается параметром NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00806]; при переполнении NvM устанавливает результат задания в NVM_REQ_NOT_OK [SWS_NvM_00804] и сообщает NVM_E_REQ_FAILED в DEM [SWS_NvM_00805].

Что касается параллелизма: при неявной синхронизации приложению после вызова и вплоть до завершения задания запрещается модифицировать данные буфера, доступ по чтению остается разрешенным [SWS_NvM_00698]. При явной синхронизации буфер разрешается изменять до тех пор, пока не будет вызвана callback-рутина NvMWriteRamBlockToNvCallback [SWS_NvM_00705].

Этот текст был сгенерирован ИИ и служит для технической ориентации на основе спецификации.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_RestorePRAMBlockDefaults [SWS_NvM_00813] 📄 PDF

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

Service to restore the default data to its corresponding permanent RAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ffad126a6872 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Функция NvM_RestorePRAMBlockDefaults восстанавливает стандартные данные в соответствующем постоянном RAM-блоке ([SWS_NvM_00813], [SWS_NvM_00814]). Служба работает асинхронно и принимает через параметр BlockId идентификатор дескриптора блока NVRAM ([SWS_NvM_00813]). При вызове запрос помещается во внутреннюю очередь заданий ([SWS_NvM_00815]). Возвращаемое значение E_OK сигнализирует об успешном принятии, тогда как E_NOT_OK указывает на отклонение ([SWS_NvM_00813]). Если сконфигурирован ROM-блок, данные загружаются из него в рамках асинхронной обработки ([SWS_NvM_00816]).

Обработка ошибок и граничные условия

Если для блока не сохранены ни стандартные ROM-данные, ни callback-рутина NvMInitBlockCallback, статус блока остается без изменений, а вызов возвращает E_NOT_OK ([SWS_NvM_00884]). При активированном обнаружении ошибок разработки (DET) формируются сообщения о специфических ошибках:

  • NVM_E_UNINIT: модуль еще не инициализирован ([SWS_NvM_00831]).
  • NVM_E_PARAM_BLOCK_ID: переданный BlockId находится вне допустимого диапазона ([SWS_NvM_00834]).
  • NVM_E_BLOCK_PENDING: для ID блока задание уже поставлено в очередь или находится в обработке ([SWS_NvM_00832]).
  • NVM_E_BLOCK_WITHOUT_DEFAULTS: отсутствуют как стандартные данные ROM, так и callback-функция инициализации ([SWS_NvM_00886]).
  • NVM_E_PARAM_ADDRESS: не сконфигурированы ни постоянный RAM-блок, ни явная синхронизация ([SWS_NvM_00894]).

Параллелизм и взаимодействие

Служба специфицирована как нереентерабельная ([SWS_NvM_00813]) и доступна в классах конфигурации API 2 и 3 ([SWS_NvM_00561], [SWS_NvM_00560]). Та же логика восстановления используется также внутри NvM_ReadPRAMBlock в случае, если нижележащая операция чтения завершается неудачей ([SWS_NvM_00789], [SWS_NvM_00882]).

Это указание по использованию основано на спецификациях AUTOSAR Classic Release R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_ReadAll [SWS_NvM_00460] 📄 PDF

void NvM_ReadAll (void);

Initiates a multi block read request.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d6aaa62b8e91 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция NvM_ReadAll асинхронно запускает многоблочное задание на чтение для инициализации блоков данных RAM [SWS_NvM_00460], [SWS_NvM_00158]. Она не имеет параметров, не возвращает значения и не является реентерабельной [SWS_NvM_00460]. Вызов сигнализирует запрос модулю NvM и немедленно возвращает управление; фактическая обработка, однако, откладывается до тех пор, пока все очереди заданий для отдельных блоков не опустеют [SWS_NvM_00243].

В начале задание во время запуска системы валидирует ID конфигурации путем сравнения сохраненного значения со скомпилированным [SWS_NvM_00073], [SWS_NvM_00246]:

  • При совпадении выполняется обычная подготовка для всех сконфигурированных блоков [SWS_NvM_00247].
  • Различие конфигураций игнорируется, если установлен NvMDynamicConfiguration == FALSE [SWS_NvM_00248].
  • Если NvMDynamicConfiguration == TRUE и NvMResistantToChangedSw == FALSE, при несовпадении выполняется расширенная подготовка [SWS_NvM_00249].

Затем задание выполняет итерацию по всем пользовательским блокам, начиная с наименьшего ID блока (за исключением зарезервированных ID 0 и 1) [SWS_NvM_00244]. Учитываются постоянные RAM-блоки или блоки со сконфигурированной функцией обратного вызова синхронизации NvM_ReadRamBlockFromNvm, если сконфигурирован NvmSelectBlockForReadall == TRUE [SWS_NvM_00118]. Не прочитанные, но выбранные блоки получают результат NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00287].

Для избыточных блоков (NVM_BLOCK_REDUNDANT) при сбое первой попытки чтения автоматически считывается второй NV-блок [SWS_NvM_00288]. После успешной загрузки в RAM статус блока устанавливается в «valid/unmodified», а результат задания — в NVM_REQ_OK [SWS_NvM_00251], [SWS_NvM_00290], [SWS_NvM_00291]. Для блоков с NvMCalRamBlockCrC == TRUE задание запрашивает перерасчет CRC [SWS_NvM_00292]. Если сконфигурировано, для каждого блока вызывается NvMSingleBlockCallback, а после последнего блока — MultiBlockCallback [SWS_NvM_00281].

Этот указание по использованию основано на требованиях спецификации AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_WriteAll [SWS_NvM_00461] 📄 PDF

void NvM_WriteAll (void);

Initiates a multi block write request.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a7a2e73b7711 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и контекст вызова

Функция NvM_WriteAll асинхронно запускает многоблочное задание на запись и не имеет ни параметров, ни возвращаемых значений [SWS_NvM_00461]. После вызова функция сигнализирует запрос модулю NvM и немедленно возвращает управление [SWS_NvM_00254]. Фактическая обработка откладывается до тех пор, пока все очереди для одноблочных заданий не будут полностью обработаны [SWS_NvM_00254]. Вызов обычно выполняется в рамках базового процесса выключения (Shutdown) диспетчером BSW Mode Manager [SWS_NvM_00092].

Последовательность выполнения и обработка блоков

Во время останова задание синхронизирует постоянные RAM-блоки с соответствующими NV-блоками или выполняет явный обратный вызов синхронизации NvM_WriteRamBlockToNvm [SWS_NvM_00018]. При этом учитываются исключительно блоки, для которых параметр конфигурации NvMSelectBlockForWriteAll установлен в true [SWS_NvM_00252], а также блок 1 в случае несовпадающих ID конфигурации при активной динамической конфигурации [SWS_NvM_00310]. Если для NVRAM-блока сконфигурирован CRC, задание перед операцией записи запрашивает перерасчет и обновляет контрольную сумму [SWS_NvM_00253]. Для блоков с NvMWriteBlockOnce == TRUE задание после успешной записи сразу устанавливает флаг защиты от записи в административном блоке [SWS_NvM_00329].

Параллелизм и обработка ошибок

  • Реентерабельность: функция не является реентерабельной [SWS_NvM_00461].
  • Контроль ошибок: во избежание бесконечных циклов счетчик повторов отслеживает повторные попытки при неуспешных ответах от модуля MemIf [SWS_NvM_00296].
  • Результаты задания: если обработка хотя бы одного блока завершается неудачно, общий результат устанавливается в NVM_REQ_NOT_OK [SWS_NvM_00318]. Для сконфигурированных блоков, которые не были записаны, устанавливается индивидуальный результат NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00298]. Для избыточных блоков (NVM_BLOCK_REDUNDANT) индивидуальное задание считается NVM_REQ_OK, как только хотя бы один из NV-блоков был успешно записан [SWS_NvM_00337].
  • Прерывание: выполняющееся задание может быть прервано с помощью NvM_CancelWriteAll [SWS_NvM_00019]. Это приводит к общему результату NVM_REQ_CANCELED [SWS_NvM_00237], при этом обрабатываемый в данный момент блок завершается без разрушения и с сохранением целостности данных [SWS_NvM_00238].

Этот текст был сгенерирован ИИ и служит в качестве справочного руководства. Определяющей является спецификация AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_CancelWriteAll [SWS_NvM_00458] 📄 PDF

void NvM_CancelWriteAll (void);

Service to cancel a running Nv M_ Write All request.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2a47a7f76a8b Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и семантика

Функция NvM_CancelWriteAll служит для досрочного прерывания текущей операции многоблочной записи (NvM_WriteAll) [SWS_NvM_00458], [SWS_NvM_00019]. Вызов является асинхронным, нереентерабельным, не принимает параметров и не возвращает значения [SWS_NvM_00458]. Функция напрямую сигнализирует модулю о запросе на прерывание и немедленно возвращает управление [SWS_NvM_00232]. Запрос не ставится в очередь заданий; в каждый момент времени может ожидать выполнения только один запрос этого типа [SWS_NvM_00420]. Если на момент вызова операция не активна, вызов не производит никакого действия [SWS_NvM_00233].

Последовательность выполнения и согласованность данных

Прерывание выполняется таким образом, чтобы согласованность данных блока NVRAM, обрабатываемого в момент прерывания, не нарушалась [SWS_NvM_00019]. Модуль штатно завершает этот активный блок и устанавливает его атрибут состояния в зависимости от успеха в NVM_REQ_OK или NVM_REQ_NOT_OK, в то время как все оставшиеся ещё ожидающие блоки переводятся в NVM_REQ_CANCELED [SWS_NvM_00236]. Общий результат неявно предопределяется результатом прерванной операции [SWS_NvM_00235], сохраняется в отдельной переменной [SWS_NvM_00393] и может быть запрошен через NvM_GetErrorStatus с указанием зарезервированного ID блока 0 [SWS_NvM_00394]. Кроме того, опционально может быть уведомлена вышестоящая callback-функция (NvMMultiBlockCallback) [SWS_NvM_00260]. Если это сконфигурировано через NvMDrvModeSwitch, после прерывания задание переключает устройства памяти в медленный рабочий режим («slow-mode») [SWS_NvM_00681].

Ограничения и обработка ошибок

Вызов NvM_CancelWriteAll функционально ограничен и может осуществляться исключительно BSW Mode Manager (BswM) [SWS_NvM_00703]. Кроме того, функция относится к классу конфигурации API 2 [SWS_NvM_00561]. Перед вызовом модуль должен быть инициализирован [SWS_NvM_00716]; при активированном обнаружении ошибок разработки (DET) вызов в неинициализированном состоянии приводит к сообщению об ошибке NVM_E_UNINIT [SWS_NvM_00637].

Данное указание по использованию было создано автоматически на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_ValidateAll [SWS_NvM_00855] 📄 PDF

void NvM_ValidateAll (void);

Initiates a multi block validation request.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 234ca1eec615 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция NvM_ValidateAll инициирует асинхронную валидацию нескольких блоков NVRAM ([SWS_NvM_00855]) и относится к классу конфигурации API 3 ([SWS_NvM_00560]). Она является нереентерабельной, не ожидает параметров и не возвращает значения ([SWS_NvM_00855]). Перед вызовом модуль NvM должен быть инициализирован ([SWS_NvM_00859]).

При вызове функция сигнализирует запрос модулю и немедленно возвращает управление ([SWS_NvM_00858]). Однако фактическая обработка откладывается до тех пор, пока очереди заданий для отдельных блоков не будут полностью обработаны ([SWS_NvM_00858]). Для мультиблочных заданий в очереди заданий доступно в общей сложности только одно место ([SWS_NvM_00380]). Общий результат асинхронного задания сохраняется в отдельной переменной состояния ([SWS_NvM_00393]).

В рамках обработки задания как результат мультиблочного задания, так и результаты затронутых отдельных блоков предварительно устанавливаются в NVM_REQ_PENDING ([SWS_NvM_00861]). Обработка учитывает исключительно блоки, для которых NvMBlockUseAutoValidation сконфигурирован как TRUE ([SWS_NvM_00856], [SWS_NvM_00860]):

  • обрабатываются постоянные RAM-блоки или выполняется явная синхронизация через callback NvM_WriteRamBlockToNvm ([SWS_NvM_00860]);
  • статус RAM-блока устанавливается в «VALID / CHANGED» ([SWS_NvM_00856]);
  • если дополнительно сконфигурировано вычисление CRC в RAM, задание запрашивает пересчет в фоновом режиме, обрабатываемый через NvM_MainFunction ([SWS_NvM_00857]);
  • после успешной валидации RAM-блока зависящий от блока результат переходит в NVM_REQ_OK ([SWS_NvM_00862]).

Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_FirstInitAll [SWS_NvM_91001] 📄 PDF

void NvM_FirstInitAll (void);

The function initiates a multi block first initialization request. The job of the function does not care if a block exists in the non - volatile memory or not OR if it is valid (i.e. not corrupted) or not, when processing it.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 97732570bd55 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция NvM_FirstInitAll инициирует асинхронную первичную инициализацию нескольких сконфигурированных блоков ([SWS_NvM_91001]). Служба является нереентерабельной, не ожидает параметров и не возвращает значения ([SWS_NvM_91001]). При обработке не учитывается, существует ли блок в энергонезависимой памяти, является ли он действительным или поврежденным ([SWS_NvM_91001]). Длина очереди для мультиблочных заданий (в том числе из NvM_FirstInitAll) равна единице, поэтому одновременно может быть поставлено в очередь только одно мультиблочное задание ([SWS_NvM_00380]).

Обработка различается в зависимости от типа управления блоком:

  • NATIVE: если стандартные данные присутствуют, NV-блок записывается ими ([SWS_NvM_00913]). Если блок имеет постоянную RAM или явную синхронизацию, RAM обновляется стандартными данными (ROM или callback-функция инициализации), как в NvM_RestoreBlockDefaults ([SWS_NvM_00915]); без постоянной RAM и без явной синхронизации внутренний буфер NvM служит в качестве RAM, при этом состояние RAM остается нетронутым ([SWS_NvM_00914]). Если стандартные данные отсутствуют ([SWS_NvM_00919]) или сконфигурированная callback-функция инициализации завершается ошибкой с возвращаемым значением, отличным от E_OK ([SWS_NvM_00921]), блок инвалидируется.
  • REDUNDANT: если стандартные данные присутствуют, ими записываются оба экземпляра блока ([SWS_NvM_00916]), и при наличии постоянной RAM или явной синхронизации RAM обновляется ([SWS_NvM_00918]); в противном случае используется внутренний буфер ([SWS_NvM_00917]). Если callback-функция инициализации возвращает значение, отличное от E_OK, оба экземпляра инвалидируются ([SWS_NvM_00922]).
  • DATASET: все сконфигурированные для обработки блоки или экземпляры NV-блоков этого типа инвалидируются без исключения ([SWS_NvM_00923], [SWS_NvM_00924]).

Если запись блока NATIVE со стандартными данными ([SWS_NvM_00925]), инвалидация блока NATIVE ([SWS_NvM_00927]) или запись обоих экземпляров блока REDUNDANT ([SWS_NvM_00926]) завершается неудачей, задание устанавливает общий результат в NVM_REQ_NOT_OK.

Этот текст был сгенерирован ИИ на основе спецификации R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_JobEndNotification [SWS_NvM_00462] 📄 PDF

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job without error.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 44e91f5e39db Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Синхронная callback-функция NvM_JobEndNotification вызывается нижележащей абстракцией памяти для сигнализации менеджеру NVRAM о безошибочном окончании задания [SWS_NvM_00462]. Функция не имеет ни параметров, ни возвращаемого значения и доступна через заголовочный файл NvM_MemIf.h с service ID 0x11 [SWS_NvM_00462]. Успешное уведомление абстракции памяти охватывает безошибочно завершённые операции чтения, записи или стирания [SWS_NvM_00111].

Параллелизм и ограничения

Интерфейс специфицирован как нереентерабельный [SWS_NvM_00462]. В зависимости от вызывающей функции внутри абстракции памяти эта процедура может выполняться в контексте прерывания [SWS_NvM_00111]. Все модули абстракции памяти должны быть сконфигурированы таким образом, чтобы они единообразно использовали один и тот же режим — callback или опрос (polling) [SWS_NvM_00111].

Конфигурация и взаимодействие

Модуль NvM предоставляет callback-функцию NvM_JobEndNotification только в том случае, если режим опроса отключён через конфигурационный параметр NvMPollingMode [SWS_NvM_00440]. Кроме того, на функцию влияют общие конфигурационные параметры NvM [SWS_NvM_00440].

Это указание по использованию основано на спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_JobErrorNotification [SWS_NvM_00463] 📄 PDF

void NvM_JobErrorNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: aca80117b4e4 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Callback-функция NvM_JobErrorNotification ([SWS_NvM_00463]) служит нижележащему уровню абстракции памяти для сигнализации модулю менеджера NVRAM (NvM) об ошибочном окончании асинхронного задания. Вызов выполняется синхронно и специфицирован как нереентерабельный ([SWS_NvM_00463]).

Использование и сигнатура

  • Интерфейс: объявление функции предоставляется через заголовочный файл NvM_MemIf.h ([SWS_NvM_00463]).
  • Сигнатура: согласно void NvM_JobErrorNotification(void), функция не имеет ни входных, ни выходных, ни входных/выходных параметров и не возвращает значения ([SWS_NvM_00463]).
  • Service-ID: функция идентифицируется через шестнадцатеричный идентификатор 0x12 ([SWS_NvM_00463]).

Зависимость от конфигурации и взаимодействие

Модуль NvM предоставляет callback-функцию NvM_JobErrorNotification только тогда, когда режим опроса отключён через конфигурационный параметр NvMPollingMode ([SWS_NvM_00441]). Если используется опрос, данный механизм уведомления не применяется. Кроме того, на функцию влияют общие конфигурационные параметры согласно [SWS_NvM_00028] текст ещё не импортирован ([SWS_NvM_00441]).

Обработка ошибок и параллелизм

Функция служит исключительно для сообщения об ошибках заданий и не определяет ни собственных кодов ошибок, ни откликов DET или DEM ([SWS_NvM_00463]). В силу классификации как Non Reentrant вызывающая сторона в абстракции памяти, вероятно, обязана гарантировать отсутствие перекрывающихся или прерывающих вызовов ([SWS_NvM_00463]). Вопрос Q-5f72d9d605c25922 (открытый)

Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_MainFunction [SWS_NvM_00464] 📄 PDF

void NvM_MainFunction (void);

Service for performing the processing of the Nv M jobs.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e37fc51f7baf Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Функция NvM_MainFunction не имеет ни передаваемых параметров, ни возвращаемого значения (void NvM_MainFunction(void)) и объявлена через SchM_NvM.h ([SWS_NvM_00464]). Она служит для обработки заданий менеджера NVRAM ([SWS_NvM_00464], [SWS_NvM_00256]). После завершения асинхронного сервиса она выполняет сконфигурированные callback-процедуры для уведомления верхнего уровня ([SWS_NvM_00347]). Кроме того, она берёт на себя запрошенные в фоновом режиме перерасчёты CRC для блоков NVRAM ([SWS_NvM_00333]), например вследствие NvM_SetRamBlockStatus ([SWS_NvM_00121]) или NvM_ValidateAll ([SWS_NvM_00857]).

Управление последовательностью выполнения и приоритизация

Если это сконфигурировано, функция отслеживает очередь немедленного приоритета (Immediate-Priority-Queue) на наличие запросов с немедленным приоритетом ([SWS_NvM_00259]). Если регулярный запрос был деструктивно прерван немедленным заданием, NvM_MainFunction перезапускает его после его завершения ([SWS_NvM_00258]). При активном режиме опроса она проверяет статус заданий, переданных на нижний уровень ([SWS_NvM_00346]). Во время обработки NvM_WriteAll она циклически опрашивает состояние абстракции драйвера памяти через MemIf_GetStatus для MEMIF_BROADCAST_ID и задерживает callback-вызовы к верхнему уровню до тех пор, пока сообщается MEMIF_BUSY_INTERNAL ([SWS_NvM_00350]).

Обработка ошибок и повторные попытки

Если прикладные callback-функции завершаются сбоем, NvM_MainFunction управляет повторными попытками:

  • Если NvMReadRamBlockFromNvCallback возвращает значение E_NOT_OK, модуль повторяет вызов в следующем цикле NvM_MainFunction ([SWS_NvM_00839]).
  • Если NvMWriteRamBlockToNvCallback возвращает E_NOT_OK, повтор также происходит при следующем вызове NvM_MainFunction ([SWS_NvM_00840]).
  • Если явная callback-функция синхронизации при NvM_SetRamBlockStatus возвращает E_NOT_OK, модуль выполняет сконфигурированные повторные попытки с одной попыткой на каждый вызов NvM_MainFunction ([SWS_NvM_00908]).

Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I2)

функция NvM_SingleBlockCallbackFunction [SWS_NvM_00467] 📄 PDF

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

Per block callback routine to notify the upper layer that an asynchronous single block request has been finished.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f9058239e263 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Callback-процедура NvM_SingleBlockCallbackFunction синхронно уведомляет вышележащий уровень о завершении ранее запущенного асинхронного одноблочного запроса [SWS_NvM_00467].

Функция обрабатывает два передаваемых параметра [SWS_NvM_00467]:

  • BlockRequest (тип NvM_BlockRequestType): передаёт вид ранее выполненного запроса блока, например операции чтения или записи [SWS_NvM_00467].
  • JobResult (тип NvM_RequestResultType): сообщает общий результат обработанного задания блока [SWS_NvM_00467].

В качестве возвращаемого значения функция передаёт тип Std_ReturnType [SWS_NvM_00467]. Об успешной обработке callback-функции сигнализирует возврат E_OK; любое другое возвращаемое значение указывает на неуспешное выполнение [SWS_NvM_00467].

Обработка ошибок и параллелизм

Интерфейс не специфицирует собственных сообщений об ошибках DET или DEM [SWS_NvM_00467]. Результат предыдущего задания передаётся через параметр JobResult, в то время как ошибки внутри самой обработки callback-функции передаются через возвращаемое значение функции [SWS_NvM_00467].

Что касается параллелизма, процедура объявлена как нереентерабельная (Non Reentrant) [SWS_NvM_00467]. Она предоставляется через заголовочный файл NvM_Externals.h [SWS_NvM_00467]. Вызов со стороны модуля NvM, вероятно, происходит синхронно в контексте задачи циклической обработки заданий NvM (интерпретация). Вопрос Q-f50640211851274f (открытый)

Данное указание по применению было сгенерировано ИИ на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_MultiBlockCallbackFunction [SWS_NvM_00468] 📄 PDF

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

Common callback routine to notify the upper layer that an asynchronous multi block request has been finished. Available v ia Nv M_ Externals.h

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a3c38e2b6191 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Callback-процедура NvM_MultiBlockCallbackFunction уведомляет вышестоящий уровень о том, что ранее инициированное асинхронное многоблочное задание было завершено [SWS_NvM_00468]. Объявление функции предоставляется через заголовочный файл NvM_Externals.h [SWS_NvM_00468].

Контекст вызова и параметры

Вызов со стороны менеджера NVRAM выполняется синхронно с обработкой в потоке выполнения [SWS_NvM_00468]. При вызове процедуре передаются два параметра:

  • MultiBlockRequest (тип NvM_MultiBlockRequestType): обозначает конкретный тип запроса ранее обработанного многоблочного задания, например обращения на чтение или запись [SWS_NvM_00468].
  • JobResult (тип NvM_RequestResultType): передаёт окончательный результат обработки предыдущего многоблочного задания вышестоящему уровню [SWS_NvM_00468].

Возвращаемое значение и обработка ошибок

Процедура возвращает вызывающему модулю значение типа Std_ReturnType [SWS_NvM_00468]. Возвращаемое значение E_OK показывает, что callback-функция была успешно обработана; любое другое возвращаемое значение, напротив, сигнализирует о неудавшейся обработке [SWS_NvM_00468]. Специфические коды ошибок, сообщения DET или DEM в объёме спецификации для данной функции не определены. Интерпретация: конкретные последствия возвращаемого значения, отличного от E_OK, вероятно, зависят от реализации, поскольку стандарт не предписывает последующей обработки ошибок. Вопрос Q-462dea7f3074ae9c (открытый)

Параллелизм и ограничения

Функция специфицирована как нереентерабельная (Non Reentrant) [SWS_NvM_00468]. Поэтому внутри вызывающей системы необходимо гарантировать отсутствие параллельных или прерывающих многократных вызовов данного callback-интерфейса.

Этот текст сгенерирован ИИ на основе спецификации.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_InitBlockCallbackFunction [SWS_NvM_00469] 📄 PDF

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

Per block callback routine which shall be called by the Nv M module when default data needs to be restored in RAM, and a RO M block is not configured. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_NVRAMManager

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 6fa779cf7b62 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и контекст вызова

Пользовательская callback-процедура NvM_InitBlockCallbackFunction вызывается модулем NvM, когда стандартные данные для блока NVRAM должны быть восстановлены в RAM и соответствующий ROM-блок не сконфигурирован [SWS_NvM_00469]. Вызов происходит синхронно, а интерфейс объявлен через заголовочный файл NvM_Externals.h [SWS_NvM_00469].

В качестве передаваемого параметра функция получает InitBlockRequest типа NvM_InitBlockRequestType [SWS_NvM_00469]. Это значение информирует процедуру о специфическом типе запроса текущего обрабатываемого блока, таком как чтение или восстановление данных (read, restore) [SWS_NvM_00469].

Возвращаемые значения и обработка ошибок

Процедура возвращает значение статуса типа Std_ReturnType [SWS_NvM_00469]:

  • E_OK: сигнализирует модулю NvM, что callback-функция успешно инициализировала и обработала данные в RAM [SWS_NvM_00469].
  • Любое другое возвращаемое значение: показывает, что инициализация не могла быть успешно завершена [SWS_NvM_00469].

Специфические коды ошибок для DET или DEM для самого интерфейса не специфицированы [SWS_NvM_00469].

Параллелизм и ограничения выполнения

Интерфейс определён как синхронный и нереентерабельный (Non Reentrant) [SWS_NvM_00469]. Поскольку менеджер NVRAM синхронно ожидает возврата функции, блокирующее выполнение внутри процедуры, вероятно, непосредственно остановит дальнейшую обработку NvM (интерпретация). Вопрос Q-c0e43c9871c4f2d0 (открытый)

Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_WriteRamBlockToNvm [SWS_NvM_00539] 📄 PDF

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

Block specific callback routine which shall be called in order to let the application copy data from RAM block to Nv M module's mirror.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5243b53cfd03 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Специфичная для блока callback-функция NvM_WriteRamBlockToNvm служит для явной синхронизации с целью копирования данных приложения из RAM-блока во внутреннее RAM-зеркало модуля NvM [SWS_NvM_00539]. Она декларативно доступна через NvM_Externals.h и синхронно вызывается NvM [SWS_NvM_00539].

Использование и параметры

Функция передает в качестве выходного параметра указатель NvMBuffer, представляющий собой целевой адрес зеркала NvM, по которому должны быть записаны данные [SWS_NvM_00539]. В качестве возвращаемого значения callback-рутина возвращает E_OK при успешной обработке или любое другое значение в случае ошибки [SWS_NvM_00539].

Параллелизм и ограничения

Согласно спецификации NvM_WriteRamBlockToNvm спроектирована как нереентерабельная (Non Reentrant) [SWS_NvM_00539].

Взаимодействие в модуле

  • При завершении работы задание NvM_WriteAll синхронизирует постоянные RAM-блоки или вызывает callback-рутину NvM_WriteRamBlockToNvm для явной синхронизации [SWS_NvM_00018], если параметр NvMSelectBlockForWriteAll для блока NVRAM сконфигурирован как true [SWS_NvM_00252].
  • Задания записи NvM_WriteBlock [SWS_NvM_00303] и NvM_WritePRAMBlock [SWS_NvM_00803] автоматически валидируют еще недействительный постоянный RAM-блок после вызова NvM_WriteRamBlockToNvm.

Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

функция NvM_ReadRamBlockFromNvm [SWS_NvM_00540] 📄 PDF

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

Block specific callback routine which shall be called in order to let the application copy data from Nv M module's mirror to RAM block.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 1b2c937c4017 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция NvM_ReadRamBlockFromNvm представляет собой специфичную для блока callback-рутину, объявляемую через NvM_Externals.h [SWS_NvM_00540]. Ее назначение состоит в том, чтобы позволить приложению скопировать данные из внутреннего буфера зеркала модуля NvM в соответствующий RAM-блок для выполнения явной синхронизации [SWS_NvM_00540], [SWS_NvM_00118].

Использование и семантика

  • Контекст вызова и параллелизм: вызов выполняется синхронно и специфицирован как нереентерабельный (Non Reentrant) [SWS_NvM_00540].
  • Параметры: в качестве входного параметра служит указатель NvMBuffer (тип const void*). Он передает адрес буфера, из которого данные могут быть прочитаны и скопированы в RAM-блок [SWS_NvM_00540].
  • Возвращаемое значение и обработка ошибок: callback-функция возвращает Std_ReturnType. Возвращаемое значение E_OK сигнализирует об успешной обработке; любое другое возвращаемое значение указывает на неуспешную обработку [SWS_NvM_00540].

Взаимодействие

В рамках мультиблочной службы NvM_ReadAll функция NvM_ReadRamBlockFromNvm вызывается для тех блоков NVRAM для явной синхронизации, которые соответствующим образом сконфигурированы и для которых действует NvmSelectBlockForReadall == TRUE [SWS_NvM_00118], [SWS_NvM_00356]. Это представляет собой альтернативу прямому процессу копирования в постоянные RAM-блоки, тогда как NvM_ReadAll инициализирует административные данные блоков [SWS_NvM_00356].

Этот текст был сгенерирован системой ИИ на основе требований спецификации.

Руководство разработчика реализации в подготовке (сложность I1)

тип NvM_MultiBlockRequestType [SWS_NvM_91003] 📄 PDF

Identifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw M

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e84ff8330bcb Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Тип перечисления NvM_MultiBlockRequestType предоставляется через заголовочный файл NvM.h и служит для однозначного обозначения выполненного мультиблочного запроса [SWS_NvM_91003]. Данный тип используется, когда результат или статус мультиблочной операции передается через callback-функцию или сообщается модулю BswM [SWS_NvM_91003].

Диапазон значений и семантика

Перечисление определяет следующие значения для дифференциации мультиблочных заданий [SWS_NvM_91003]:

  • NVM_READ_ALL (0x00): указывает, что было выполнено NvM_ReadAll.
  • NVM_WRITE_ALL (0x01): указывает, что было выполнено NvM_WriteAll.
  • NVM_VALIDATE_ALL (0x02): указывает, что было выполнено NvM_ValidateAll.
  • NVM_FIRST_INIT_ALL (0x03): указывает, что было выполнено NvM_FirstInitAll.
  • NVM_CANCEL_WRITE_ALL (0x04): указывает, что было выполнено NvM_CancelWriteAll.

Взаимодействие

Благодаря передаче этого типа вызываемые callback-функции, а также BswM могут определить, какая конкретно мультиблочная служба вызвала уведомление. Интерпретация: предположительно, обратная связь в BswM служит для того, чтобы связать последующие действия или изменения состояния в общей системе с завершением определенных мультиблочных служб. Вопрос Q-69b4d985301acfeb (открытый)

Этот текст был сгенерирован ИИ и служит в качестве вспомогательного руководства. Определяющее значение имеют указанные спецификации.

Руководство разработчика реализации в подготовке (сложность I1)

тип NvM_RequestResultType [SWS_NvM_00470] 📄 PDF

Type NvM_RequestResultType.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 49d0056a8c31 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Тип NvM_RequestResultType основан на uint8, доступен через Rte_NvM_Type.h и отражает результат асинхронного запроса заданий на чтение, запись и управление менеджера NVRAM [SWS_NvM_00470]. Результат опрашивается преимущественно через API-службу NvM_GetErrorStatus и может дополнительно сигнализироваться через сконфигурированную функцию обратного вызова [SWS_NvM_00470].

Диапазон значений отображает различные состояния выполнения и случаи ошибок [SWS_NvM_00470]:

  • NVM_REQ_OK (0x00): последнее асинхронное задание успешно завершено; это также значение по умолчанию после сброса.
  • NVM_REQ_NOT_OK (0x01): асинхронный запрос на чтение, запись или управление завершился неудачно.
  • NVM_REQ_PENDING (0x02): асинхронный запрос в данный момент все еще находится в обработке.
  • NVM_REQ_INTEGRITY_FAILED (0x03): ошибка целостности данных при NvM_ReadBlock или NvM_ReadAll. В случае NvM_ReadBlock содержимое RAM-блока было изменено, однако стало недействительным; приложение несет ответственность за обновление и валидацию содержимого.
  • NVM_REQ_BLOCK_SKIPPED (0x04): указанный блок был пропущен во время NvM_ReadAll или NvM_WriteAll (например, NVRAM-блоки наборов данных при NvM_ReadAll или блоки без постоянно сконфигурированного RAM-блока).
  • NVM_REQ_NV_INVALIDATED (0x05): указанный NV-блок инвалидирован.
  • NVM_REQ_CANCELED (0x06): отмена NvM_WriteAll посредством NvM_CancelWriteAll или отмена одноблочного задания (NvM_ReadBlock, NvM_WriteBlock, NvM_EraseNvBlock, NvM_InvalidateNvBlock, NvM_RestoreBlockDefaults) посредством NvM_CancelJobs.
  • NVM_REQ_RESTORED_DEFAULTS (0x08): значения по умолчанию были успешно скопированы в RAM-образ.

Во взаимодействии с избыточными блоками (NVM_BLOCK_REDUNDANT) функция NvM_InvalidateNvBlock устанавливает результат запроса NvM_RequestResultType в NVM_REQ_OK только тогда, когда оба NV-блока были инвалидированы [SWS_NvM_00274].

Этот текст был сгенерирован автоматически. Все данные основаны исключительно на требованиях спецификации версии AUTOSAR R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

тип NvM_BlockIdType [SWS_NvM_00471] 📄 PDF

Identification of a NVRAM block via a unique block identifier. Reserved NVRAM block IDs: 0 - > to derive multi block request results via Nv M_ Get Error Status 1 - > redundant NVRAM block which holds the configuration ID

тип NvM_InitBlockRequestType [SWS_NvM_91123] 📄 PDF

Identifies the type of request performed on a block when signaled via the callback function

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f4f68ded6ba5 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Тип данных NvM_InitBlockRequestType основан на uint8 и предоставляется через заголовочный файл Rte_NvM_Type.h [SWS_NvM_91123]. Он служит для идентификации типа запроса, выполненного над блоком NVRAM, при его передаче через соответствующую callback-функцию [SWS_NvM_91123].

Допустимый диапазон значений включает четыре типа запросов [SWS_NvM_91123]:

  • NVM_INIT_READ_BLOCK (0x00): указывает, что для блока было запрошено NvM_ReadBlock или NvM_ReadPRAMBlock [SWS_NvM_91123].
  • NVM_INIT_RESTORE_BLOCK_DEFAULTS (0x01): сигнализирует о том, что для блока было запрошено NvM_RestoreBlockDefaults или NvM_RestorePRAMBlockDefaults [SWS_NvM_91123].
  • NVM_INIT_READ_ALL_BLOCK (0x02): указывает на то, что обработка блока происходит в рамках NvM_ReadAll [SWS_NvM_91123].
  • NVM_INIT_FIRST_INIT_ALL (0x03): обозначает обработку блока во время выполнения NvM_FirstInitAll [SWS_NvM_91123].

На основе этого значения перечисления вызываемая логика приложения может различать, идет ли речь о явном запросе для отдельного блока (чтение или восстановление стандартных значений) или об общей групповой операции во время запуска системы [SWS_NvM_91123]. Интерпретация: данный тип, вероятно, передается в качестве параметра в связанные с блоком callback-функции инициализации, чтобы приложение могло своевременно предоставить стандартные данные или выполнить специфическую подготовку в соответствии с ситуацией. Вопрос Q-42d0d469e305728e (открытый)

Это указание по использованию основано на спецификации AUTOSAR Classic Release R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

тип NvM_BlockRequestType [SWS_NvM_91002] 📄 PDF

Identifies the type of reques t performed on a block when signaled via the callback function

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 68d31eddd2e0 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Тип перечисления NvM_BlockRequestType основан на uint8 и предоставляется через заголовочный файл Rte_NvM_Type.h [SWS_NvM_91002]. Он служит для передачи при уведомлении через callback-функцию типа запроса, который ранее был выполнен над блоком NVRAM [SWS_NvM_91002].

Диапазон значений охватывает шесть специфических запросов к блоку [SWS_NvM_91002]:

  • NVM_READ_BLOCK (0x00): сигнализирует о том, что для блока было выполнено NvM_ReadBlock или NvM_ReadPRAMBlock [SWS_NvM_91002].
  • NVM_WRITE_BLOCK (0x01): сигнализирует о том, что для блока было выполнено NvM_WriteBlock или NvM_WritePRAMBlock [SWS_NvM_91002].
  • NVM_RESTORE_BLOCK_DEFAULTS (0x02): сигнализирует о том, что было выполнено NvM_RestoreBlockDefaults или NvM_RestorePRAMBlockDefaults [SWS_NvM_91002].
  • NVM_ERASE_NV_BLOCK (0x03): сигнализирует о том, что на блоке было выполнено NvM_EraseNvBlock [SWS_NvM_91002].
  • NVM_INVALIDATE_NV_BLOCK (0x04): сигнализирует о том, что на блоке было выполнено NvM_InvalidateNvBlock [SWS_NvM_91002].
  • NVM_READ_ALL_BLOCK (0x05): сигнализирует о том, что NvM_ReadAll завершил обработку этого блока [SWS_NvM_91002].

В архитектуре приложения значение, вероятно, обрабатывается в качестве параметра в callback-рутинах для дифференцированного информирования вышестоящих программных компонентов о завершении определенных операций с блоком [SWS_NvM_91002]. Вопрос Q-467801b6b5e898a2 (открытый) Ввиду отсутствия дальнейших требований в полезных данных относительно кодов ошибок или параллелизма детали спецификации ограничиваются определением типа и диапазоном значений [SWS_NvM_91002].

Этот текст был создан ИИ; правильность не гарантируется.

Руководство разработчика реализации в подготовке (сложность I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_NvM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_NvM@rel:R20-11#c928f693
Content hash
c928f693
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_NVRAMManager.pdf#nameddest=SWS_NvM_00447

Инициализация и состояние

NvM_GetVersionInfo функция

Service to get the version information of the Nv M module.

void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
NvM_Init функция

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Сервисы · Read…

NvM_ReadAll функция

Initiates a multi block read request.

void NvM_ReadAll (void);
NvM_ReadBlock функция

Service to copy the data of the NV block to its corresponding RAM block.

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);
NvM_ReadPRAMBlock функция

Service to copy the data of the NV block to its corresponding permanent RAM block.

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

Block specific callback routine which shall be called in order to let the application copy data from Nv M module's mirror to RAM block.

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

Сервисы · Set…

NvM_SetBlockLockStatus функция

Service for setting the lock status of a permanent RAM block or of the explicit synchronization of a NVRAM block.

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);
NvM_SetBlockProtection функция

Service for setting/ resetting the write protection for a NV block. Availabl e via Nv M.h

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);
NvM_SetDataIndex функция

Service for setting the Data Inde x of a dataset NVRAM block.

Std_ReturnType NvM_SetDataIndex (NvM_BlockIdType BlockId, uint8 DataIndex);
NvM_SetRamBlockStatus функция

Service for setting the RAM block status of a permanent RAM block or the status of the explicit synchronization of a NVRAM block.

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

Сервисы · Write…

NvM_WriteAll функция

Initiates a multi block write request.

void NvM_WriteAll (void);
NvM_WriteBlock функция

Service to copy the data of the RAM block to its corresponding NV block. Available vi a Nv M.h

Std_ReturnType NvM_WriteBlock (NvM_BlockIdType BlockId, const void* NvM_SrcPtr);
NvM_WritePRAMBlock функция

Service to copy the data of the permanent RAM block to its corresponding NV block.

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);
NvM_WriteRamBlockToNvm функция

Block specific callback routine which shall be called in order to let the application copy data from RAM block to Nv M module's mirror.

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

Сервисы · Cancel…

NvM_CancelJobs функция

Service to cancel all jobs pending for a NV block.

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);
NvM_CancelWriteAll функция

Service to cancel a running Nv M_ Write All request.

void NvM_CancelWriteAll (void);

Сервисы · Get…

NvM_GetDataIndex функция

Service for getting the currently set Data Index of a datase t NVRAM block

Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);
NvM_GetErrorStatus функция

Service to read the block dependent error/ status information.

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

Сервисы · Job…

NvM_JobEndNotification функция

Function to be used by the underlying memory abstraction to signal end of job without error.

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

void NvM_JobErrorNotification (void);

Сервисы · Restore…

Service to restore the default data to its corr esponding RAM block.

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

Service to restore the default data to its corresponding permanent RAM block.

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

Сервисы · Прочее

NvM_EraseNvBlock функция

Service to erase a NV block.

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);
NvM_FirstInitAll функция

The function initiates a multi block first initialization request. The job of the function does not care if a block exists in the non - volatile memory or not OR if it is valid (i.e. not corrupted) or not, when processing it.

void NvM_FirstInitAll (void);

Per block callback routine which shall be called by the Nv M module when default data needs to be restored in RAM, and a RO M block is not configured. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_NVRAMManager

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);
NvM_InvalidateNvBlock функция

Service to invalidate a NV block.

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Common callback routine to notify the upper layer that an asynchronous multi block request has been finished. Available v ia Nv M_ Externals.h

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

Per block callback routine to notify the upper layer that an asynchronous single block request has been finished.

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);
NvM_ValidateAll функция

Initiates a multi block validation request.

void NvM_ValidateAll (void);

Циклические

NvM_MainFunction функция

Service for performing the processing of the Nv M jobs.

void NvM_MainFunction (void);

Типы

Identification of a NVRAM block via a unique block identifier. Reserved NVRAM block IDs: 0 - > to derive multi block request results via Nv M_ Get Error Status 1 - > redundant NVRAM block which holds the configuration ID

Identifies the type of reques t performed on a block when signaled via the callback function

Configuration data structure of the Nv M module.

Identifies the type of request performed on a block when signaled via the callback function

Identifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw M

Type NvM_RequestResultType.