DEENESPTFRRUARHIKOZHNL

Memory Abstraction Interface (MemIf)

ModulMemIf (Memory Abstraction Interface)
BSW-Modul-ID22
Standard-Header#include "MemIf.h"
SWS-SpezifikationAUTOSAR_SWS_MemoryAbstractionInterface.pdf
ClusterMemory Services

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

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

Перенаправляет запросы на сохранение от менеджера NVRAM по индексу устройства в эмуляцию Flash EEPROM или абстракцию EEPROM.

MemIf перенаправляет запросы на сохранение от NVRAM Manager в модули Fee или Ea и скрывает их количество за единым API SWS MemIf с. 7. Параметр DeviceIndex выбирает модуль; если сконфигурирован только один модуль, он игнорируется, и MemIf реализуется в виде набора макросов SWS MemIf с. 17. Службы принимают запросы синхронно и передают дальше возвращаемое значение, в то время как операция сохранения выполняется асинхронно на нижнем уровне. Состояние и результат возвращают MemIf_GetStatus и MemIf_GetJobResult. При активном обнаружении ошибок разработки ошибочные вызовы возвращают E_NOT_OK или MEMIF_JOB_FAILED.

Memory Abstraction Interface заменяет прежние интерфейсные уровни драйверов для Flash и EEPROM. Он позволяет NVRAM Manager обращаться через единый API к нескольким модулям абстракции: эмуляции Flash EEPROM (Fee) и абстракции EEPROM (Ea) SRS MemHwAb с. 5. MemIf скрывает количество этих модулей и предоставляет виртуальную сегментацию в линейном адресном пространстве SWS MemIf с. 7.

kontext cluster_services Services Layer cluster_abstraktion Memory Hardware Abstraction cluster_treiber Memory Drivers NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / ... (DeviceIndex) Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_* Ea Ea (EEPROM Abstraction) MemIf->Ea Ea_* Lib Herstellerspezifische Bibliothek (statt Fee/Ea + Treiber) MemIf->Lib тот же API, что и у Fee/Ea Det Det (optional) MemIf->Det Det_ReportError Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Flash Driver Fee->Fls Ea->NvM NvM_JobEndNotification / NvM_JobErrorNotification Eep EEPROM Driver Ea->Eep

Контекстная диаграмма: MemIf выступает посредником между NvM и Fee/Ea; уведомления о завершении поступают напрямую от Fee/Ea в NvM. Источники: SWS Fee с. 6, [SWS_MemIf_00047]

Собственной логики сохранения MemIf не имеет. Параметр DeviceIndex выбирает модуль; если сконфигурирован только один модуль, он игнорируется, и MemIf реализуется в виде набора макросов. При наличии нескольких модулей распределение осуществляется, например, через таблицы указателей на функции SWS MemIf с. 17. В R20-11 DeviceIndex имеет тип uint8 [SWS_MemIf_00039]; более поздние версии используют uint16.

Службы принимают запросы синхронно и передают дальше возвращаемое значение модуля [SWS_MemIf_00040]. Затем операция сохранения выполняется асинхронно в главной функции (main function) нижнего уровня. О завершении NvM узнает через callback из Fee/Ea или путем опроса MemIf_GetJobResult SWS Fee с. 48. MemIf_GetStatus сообщает UNINIT, IDLE, BUSY или BUSY_INTERNAL [SWS_MemIf_00064]. Результат задания всегда относится к последнему запросу и различает, среди прочего, прерванные, несогласованные и недействительные блоки [SWS_MemIf_00065]. MemIf_SetMode действует на все модули одновременно [SWS_MemIf_00038].

Задание на запись через MemIf (пример Ea/Eep)NvMMemIfEaEepЗадача BSW (задача OS или циклический вызов)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)Выбрать модуль по DeviceIndexEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (без изменений)Use Case: Выполнение (асинхронное)До окончания GetJobResult возвращаетMEMIF_JOB_PENDINGloopпока задание не завершитсяEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Диаграмма последовательности: синхронный прием через MemIf, асинхронное выполнение в драйвере, завершение через callback или опрос. Источники: SWS Ea с. 41, [SWS_MemIf_00040]

В случае сбоя MemIf сообщает о недопустимых индексах устройств и NULL-указателях как об ошибках разработки [SWS_MemIf_00006]. В этом случае службы возвращают E_NOT_OK, а MemIf_GetJobResult возвращает MEMIF_JOB_FAILED SWS MemIf с. 21. Ошибки времени выполнения памяти распознаются Fee или Ea; NvM считывает их в режиме опроса как MEMIF_JOB_FAILED и отвечает за их устранение ErrorDescription с. 58.

Роль в стеке памяти: маршрутизатор между NvM и Fee/Ea

Memory Abstraction Interface (MemIf) заменяет прежние интерфейсные уровни драйверов для Flash и EEPROM. Он позволяет NVRAM Manager (NvM) обращаться через единый API к нескольким модулям абстракции памяти: эмуляции Flash EEPROM (Fee) и абстракции EEPROM (Ea) SRS MemHwAb с. 5. В сторону верхнего уровня MemIf скрывает, сколько модулей Fee и Ea расположено ниже. Он предоставляет виртуальную сегментацию в едином линейном адресном пространстве SWS MemIf с. 7. Fee и Ea обеспечивают блочную адресацию и «практически неограниченное» число циклов стирания-записи. Поэтому NvM не требует изменений при смене драйвера или микросхемы SRS MemHwAb с. 5.

MemIf сам по себе не содержит логики сохранения. Его API отображается на API модулей абстракции, а функциональное поведение определяется их спецификациями либо спецификациями драйверов памяти SWS MemIf с. 17. Соответственно, MemIf требуются службы модулей абстракции, для Ea — например, Ea_Read, Ea_Cancel, Ea_GetStatus и Ea_GetJobResult [SWS_MemIf_00047]. Опционально он использует Det_ReportError [SWS_MemIf_00048]. Типы MemIf_StatusType, MemIf_JobResultType и MemIf_ModeType, определенные в MemIf.h, образуют общий словарь стека [SWS_MemIf_00064] [SWS_MemIf_00065] [SWS_MemIf_00066]. Так, например, Fls_GetJobResult напрямую возвращает MemIf_JobResultType SWS Fls с. 36.

Иллюстрации в более свежих релизах показывают ниже Ea и Fee дополнительно модули MemAcc и Mem SWS Ea с. 42. Для R20-11, по всей видимости, определяющим является более ранний обзор, в котором Fee опирается на драйвер Flash, а Ea — на драйвер EEPROM SWS Fee с. 6. Для MemIf это различие не имеет значения, поскольку он выполняет перенаправление только до уровня абстракции SWS MemIf с. 17. Вопрос Q-3c74a6029dd0d159 (открытый)

kontext cluster_services Services Layer cluster_abstraktion Memory Hardware Abstraction cluster_treiber Memory Drivers NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / ... (DeviceIndex) Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_* Ea Ea (EEPROM Abstraction) MemIf->Ea Ea_* Lib Herstellerspezifische Bibliothek (statt Fee/Ea + Treiber) MemIf->Lib тот же API, что и у Fee/Ea Det Det (optional) MemIf->Det Det_ReportError Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Flash Driver Fee->Fls Ea->NvM NvM_JobEndNotification / NvM_JobErrorNotification Eep EEPROM Driver Ea->Eep

Контекстная диаграмма: MemIf располагается между NvM и модулями абстракции Fee/Ea; уведомления о завершении поступают в NvM напрямую из Fee/Ea. Источники: SWS Fee с. 6, SRS MemHwAb с. 5, [SWS_MemIf_00047], [SWS_MemIf_00048]

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

Параметр DeviceIndex выбирает модуль абстракции и тем самым устройство памяти. Если сконфигурирован только один модуль, он игнорируется SWS MemIf с. 17. В этом случае MemIf реализуется как набор макросов, например #define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) Fee_Write(BlockNumber, DataPtr). При наличии нескольких модулей вызовы должны распределяться с помощью эффективных механизмов; в качестве одного из решений спецификация называет таблицы указателей на функции, индексируемые через DeviceIndex SWS MemIf с. 17. Если проприетарная библиотека заменяет все необходимые модули Fee и Ea, MemIf состоит только из макросов SRS MemHwAb с. 5.

В R20-11 DeviceIndex имеет тип uint8 [SWS_MemIf_00039] [SWS_MemIf_00041]. В более поздних версиях спецификации он приводится как uint16 SWS MemIf с. 18. Нормативным для этого релиза является uint8.

abbildung start Konfiguration von MemIf q0 Заменяет ли библиотека производителя все модули Fee и Ea? start->q0 lib MemIf состоит только из макросов к API библиотеки q0->lib да q1 Сколько модулей абстракции сконфигурировано? q0->q1 нет ende Функция модуля вызывается, возвращаемое значение пробрасывается дальше lib->ende ein Макросы отображают API MemIf (напр., MemIf_Write -> Fee_Write) q1->ein ровно один mehr Effiziente Verteilung, z. B. Funktionszeigertabelle q1->mehr mehrere ign DeviceIndex игнорируется ein->ign ign->ende idx DeviceIndex выбирает модуль (Fee или Ea) mehr->idx idx->ende

Диаграмма деятельности: количество сконфигурированных модулей абстракции определяет выбор между макроподстановкой и распределением через DeviceIndex. Источники: SWS MemIf с. 17, SRS MemHwAb с. 5

Выполнение задачи: синхронный прием, асинхронное исполнение

Все сервисы MemIf специфицированы как синхронные. Каждый из них вызывает одноименную функцию выбранного модуля и возвращает ее возвращаемое значение, как, например, Read, Write и InvalidateBlock [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044]. Фактическая операция с памятью затем выполняется асинхронно в циклически вызываемой главной функции нижнего уровня. Последовательность Ea демонстрирует для этого цикл по Eep_MainFunction в BSW-задаче SWS Ea с. 41. Согласно спецификации Fee, этот шаблон применим и к остальным асинхронным сервисам SWS Fee с. 48.

О завершении задачи NvM узнает одним из двух способов в зависимости от конфигурации стека. Либо модуль абстракции вызывает функцию обратного вызова, такую как NvM_JobEndNotification или NvM_JobErrorNotification, либо NvM выполняет опрос MemIf_GetJobResult SWS Fee с. 48 EXP ErrorDescription с. 45. Сам MemIf не предоставляет функций обратного вызова; его API состоит из следующих сервисов [SWS_MemIf_00038] [SWS_MemIf_00046].

СервисService-IDвозвращатьсяДействие
MemIf_SetMode0x01–вызывает SetMode всех модулей абстракции [SWS_MemIf_00038]
MemIf_Read0x02Std_ReturnTypeсчитывает Length байт блока, начиная с BlockOffset, в DataBufferPtr [SWS_MemIf_00039]
MemIf_Write0x03Std_ReturnTypeзаписывает блок [SWS_MemIf_00040]
MemIf_Cancel0x04–отменяет текущую задачу [SWS_MemIf_00041]
MemIf_GetStatus0x05MemIf_StatusTypeсостояние модуля [SWS_MemIf_00042]
MemIf_GetJobResult0x06MemIf_JobResultTypeрезультат последней задачи [SWS_MemIf_00043]
MemIf_InvalidateBlock0x07Std_ReturnTypeинвалидирует блок [SWS_MemIf_00044]
MemIf_GetVersionInfo0x08–информация о версии, рев enterable (reentrant) [SWS_MemIf_00045]
MemIf_EraseImmediateBlock0x09Std_ReturnTypeстирает блок [SWS_MemIf_00046]
Задание на запись через MemIf (пример Ea/Eep)NvMMemIfEaEepЗадача BSW (задача OS или циклический вызов)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)Выбрать модуль по DeviceIndexEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (без изменений)Use Case: Выполнение (асинхронное)До окончания GetJobResult возвращаетMEMIF_JOB_PENDINGloopпока задание не завершитсяEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Диаграмма последовательности: задача на запись синхронно принимается через MemIf, асинхронно выполняется в драйвере и завершается с помощью обратного вызова или опроса. Источники: SWS Ea с. 41, SWS Fee с. 48, ErrorDescription с. 60, [SWS_MemIf_00040]

Состояние, результат задачи и рабочий режим

MemIf_GetStatus возвращает состояние выбранного модуля [SWS_MemIf_00042]. Возможны MEMIF_UNINIT, MEMIF_IDLE, MEMIF_BUSY и MEMIF_BUSY_INTERNAL. При MEMIF_BUSY_INTERNAL модуль абстракции занят внутренним администрированием, в то время как драйвер может быть busy или idle [SWS_MemIf_00064]. Спецификация Fee конкретизирует условия и приводит в качестве примера внутреннего администрирования реорганизацию флеш-памяти (сборку мусора) SWS Fee с. 30. У флеш-драйвера состояние разрешается опрашивать еще до инициализации, и тогда оно имеет значение MEMIF_UNINIT SWS Fls с. 35.

status start Start UNINIT MEMIF_UNINIT start->UNINIT IDLE MEMIF_IDLE UNINIT->IDLE Modul initialisiert BUSY MEMIF_BUSY IDLE->BUSY Задание верхнего уровня в обработке BUSYINT MEMIF_BUSY_INTERNAL IDLE->BUSYINT interne Verwaltung (z. B. Garbage Collection) BUSY->IDLE Auftrag beendet BUSYINT->IDLE interne Verwaltung beendet

Диаграмма состояний: жизненный цикл состояния модуля, видимого через MemIf_GetStatus. Источники: [SWS_MemIf_00064], SWS Fee с. 30

MemIf_GetJobResult возвращает результат последней задачи [SWS_MemIf_00043] [SWS_MemIf_00065]. Чтение, запись и стирание разделяют единый результат задачи, поэтому запросить можно только результат последней задачи. При приеме новой задачи он устанавливается в MEMIF_JOB_PENDING SWS Fls с. 36; Fee говорит о последней принятой задаче SWS Fee с. 31. Помимо OK, FAILED и CANCELED, существуют два специфичных для блоков результата. MEMIF_BLOCK_INCONSISTENT означает, что блок поврежден или не найден; MEMIF_BLOCK_INVALID означает, что он помечен как недействительный [SWS_MemIf_00065].

jobergebnis neu Neuer Auftrag angenommen PENDING MEMIF_JOB_PENDING neu->PENDING OK MEMIF_JOB_OK PENDING->OK erfolgreich beendet FAILED MEMIF_JOB_FAILED PENDING->FAILED не успешно CANCELED MEMIF_JOB_CANCELED PENDING->CANCELED abgebrochen INCONS MEMIF_BLOCK_INCONSISTENT PENDING->INCONS Блок поврежден или не найден INVALID MEMIF_BLOCK_INVALID PENDING->INVALID Блок помечен как недействительный OK->neu следующее задание FAILED->neu следующее задание CANCELED->neu следующее задание INCONS->neu следующее задание INVALID->neu следующее задание

Диаграмма состояний: принятая задача находится в состоянии PENDING и завершается ровно одним из конечных результатов. Источники: [SWS_MemIf_00065], SWS Fls с. 36, SWS Fee с. 31

MemIf_SetMode является единственным сервисом, не имеющим DeviceIndex, и вызывает SetMode всех модулей абстракции [SWS_MemIf_00038]. Режимами являются MEMIF_MODE_SLOW и MEMIF_MODE_FAST [SWS_MemIf_00066]. В драйверах это соответствует медленному доступу на чтение или обычному доступу по SPI, с одной стороны, и быстрому доступу на чтение или пакетному режиму SPI (burst), с другой стороны. Eep_SetMode не разрешается вызывать во время выполняющейся операции SWS Eep с. 34. Fls_SetMode при активной проверке отклоняет запрос в состоянии занятости (Busy) SWS Fls с. 42. Интерпретация: поскольку MemIf_SetMode затрагивает все модули, его следует вызывать только тогда, когда все устройства сообщают MEMIF_IDLE. Вопрос Q-d6ee630fca619042 (открытый)

Отмена выполняющихся задач

MemIf_Cancel вызывает функцию Cancel выбранного модуля [SWS_MemIf_00041]. Сама отмена синхронна, но по отношению к аппаратному обеспечению асинхронна: аппаратное обеспечение еще может продолжать работу, когда вызов уже вернул управление SWS Fee с. 45 SWS Ea с. 44. Результатом задачи после этого является MEMIF_JOB_CANCELED [SWS_MemIf_00065], что Fee явно расценивает как сбой SWS Fee с. 31.

Для пути флеш-памяти спецификация драйвера показывает цепочку MemIf_Cancel → Fee_Cancel → Fls_Cancel с последующими уведомлениями об ошибках. Она также требует не вызывать Fls_Cancel во время выполнения Fls_MainFunction. Для этого есть два пути: функции задач NvM и флеш-драйвера синхронизируются, либо задача Fls_MainFunction не прерывается SWS Fls с. 58.

Отмена выполняющегося задания FlashNvMMemIfFeeFlsMemIf_Cancel(DeviceIndex)Fee_Cancel()Fls_Cancel()Fls_Cancel не во времяlaufender Fls_MainFunctionВозвратВозвратВозврат (синхронный)Отмена асинхроннак аппаратному обеспечениюoptFehlerbenachrichtigung konfiguriertFee_JobErrorNotification()NvM_JobErrorNotification()MemIf_GetJobResult(DeviceIndex)Fee_GetJobResult()MEMIF_JOB_CANCELEDMEMIF_JOB_CANCELED

Диаграмма последовательности: отмена проходит синхронно через все уровни, следует уведомление об ошибке, после чего GetJobResult сообщает CANCELED. Источники: SWS Fls с. 58, SWS Fee с. 45, [SWS_MemIf_00041]

Правила вызова, рев enterability (reentrancy) и интеграция в BSW

За исключением MemIf_GetVersionInfo, все сервисы являются не рев enterable (non-reentrant) [SWS_MemIf_00045] [SWS_MemIf_00040]. Параллельные вызовы из нескольких контекстов поэтому должны быть исключены. Поскольку состояние и результат задачи для каждого модуля отражают только последнюю задачу, вызывающая сторона должна выдавать новую задачу только после завершения предыдущей SWS Fls с. 36.

Пример распределения памяти (Memory Mapping) для кластера ICC2 «MEM» приводит MemIf совместно с NvM. Там MemIf_SetMode смоделирован как BswCalledEntity, и MemIf имеет префикс секции MEMIF SWS MemoryMapping с. 50. Руководство по распределению BSW (BSW Distribution Guide) называет MEMIF наряду с FLS и FEE примером «Type I»; область действия можно ограничить одним ядром с локальной областью видимости (scope) с помощью SwAddrMethod EXP BSWDistributionGuide с. 31. Предположительно, в многоядерных системах MemIf тем самым должен работать локально для ядра. Вопрос Q-d998fdc58e0bcddd (открытый)

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

MemIf различает две ошибки разработки. MEMIF_E_PARAM_DEVICE (0x01) обозначает неверный DeviceIndex, MEMIF_E_PARAM_POINTER (0x02) — указатель NULL [SWS_MemIf_00006]. Сообщается о них через опциональный Det_ReportError [SWS_MemIf_00048]. Специфические коды ошибок, согласно таблице трассировки, через API не возвращаются SWS MemIf с. 12.

Если обнаружение ошибок разработки активно и обнаружена ошибка, Read, Write, InvalidateBlock и EraseImmediateBlock возвращают E_NOT_OK [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044] [SWS_MemIf_00046]. MemIf_GetJobResult в этом случае возвращает MEMIF_JOB_FAILED SWS MemIf с. 21. В противном случае значение модуля передается без изменений.

fehlerpruefung aufruf Вызов службы MemIf (DeviceIndex, при необходимости указатель) q1 Entwicklungsfehlererkennung aktiviert? aufruf->q1 q2 Параметры действительны? q1->q2 да weiter Вызвать функцию модуля, выбранного по DeviceIndex q1->weiter нет det Det_ReportError с MEMIF_E_PARAM_DEVICE (0x01) или MEMIF_E_PARAM_POINTER (0x02) q2->det нет q2->weiter да fehl Возврат E_NOT_OK (MemIf_GetJobResult: MEMIF_JOB_FAILED) det->fehl rueck Возвращаемое значение модуля вернуть без изменений weiter->rueck

Диаграмма деятельности: проверка параметров при активном обнаружении ошибок разработки и сквозная передача результата модуля. Источники: [SWS_MemIf_00006], [SWS_MemIf_00048], SWS MemIf с. 18, SWS MemIf с. 21

Ошибки времени выполнения памяти обнаруживает не MemIf, а Fee или Ea; сам MemIf на них не реагирует («N/A»). В режиме опроса NvM считывает ошибку через MemIf_GetJobResult как MEMIF_JOB_FAILED, и устранение лежит на стороне NvM ErrorDescription с. 58 ErrorDescription с. 60. Более поздняя редакция описывает это устранение подробнее. Согласно ей, NvM при операциях записи увеличивает счетчик повторов, прерывает операцию при его превышении и сообщает NVM_E_REQ_FAILED в DEM EXP ErrorDescription с. 45. Для R20-11 эта деталь нормативно здесь не подтверждена.

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

Руководство, сгенерированное ИИ на основе выдержек из спецификаций, предоставленных в промпте. Нормативными являются упоминаемые требования релиза R20-11. Интерпретации обозначены как таковые.

Memory Abstraction Interface (MemIf)

Abstracts underlying Flash and EEPROM memory drivers.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция MemIf_SetMode [SWS_MemIf_00038] 📄 PDF

void MemIf_SetMode (MemIf_ModeType Mode);

Invokes the "Set Mode" functions of all underlying memory abstraction modules.

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

Функция MemIf_SetMode служит для синхронного переключения рабочего режима через интерфейс памяти [SWS_MemIf_00038]. При вызове она перенаправляет запрошенный режим в индивидуальные функции «Set Mode» всех нижележащих модулей абстракции памяти [SWS_MemIf_00038]. В качестве параметра передаётся целевой режим Mode, при этом функция не возвращает значения [SWS_MemIf_00038]. Интерфейс определён с Service ID 0x01 в заголовочном файле MemIf.h [SWS_MemIf_00038].

В отношении параллелизма MemIf_SetMode специфицирована как нереентерабельная (Non Reentrant) [SWS_MemIf_00038]. Интерпретация: вызывающим компонентам, вероятно, запрещено вызывать функцию одновременно или с прерыванием из нескольких задач или подпрограмм обработки прерываний, поэтому параллельный доступ при необходимости должен координироваться внешними механизмами защиты. Вопрос Q-02b14e9cb4b05dc9 (открытый)

В силу синхронной семантики выполнения вызов возвращает управление вызывающему компоненту только после перенаправления запроса в модули абстракции памяти [SWS_MemIf_00038]. Специфические возвращаемые значения для индикации ошибок или отдельные сообщения об ошибках DET либо DEM для этой функции в спецификации элемента не предусмотрены [SWS_MemIf_00038].

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

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

функция MemIf_Read [SWS_MemIf_00039] 📄 PDF

Std_ReturnType MemIf_Read (uint8 DeviceIndex, uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);

Invokes the "Read" function of the underlying memory abstraction module selected by the parameter Device Index.

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

Функция MemIf_Read синхронно перенаправляет запрос на чтение нижележащему модулю абстракции памяти, выбранному с помощью параметра DeviceIndex [SWS_MemIf_00039]. Она объявлена в заголовочном файле MemIf.h и служит для считывания данных логического блока памяти.

Параметры и интерфейс

Вызов MemIf_Read включает следующие входные и выходные параметры [SWS_MemIf_00039]:

  • DeviceIndex: индекс целевого устройства для выбора целевого модуля.
  • BlockNumber: логический номер считываемого блока памяти.
  • BlockOffset: смещение в байтах внутри логического блока, начиная с которого производится чтение.
  • DataBufferPtr: указатель на буфер для сохранения считанных данных.
  • Length: количество считываемых байтов данных.

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

Если обнаружение ошибок разработки (Development Error Detection) активно и ошибка разработки обнаружена, функция возвращает E_NOT_OK [SWS_MemIf_00039]. В противном случае возвращаемое значение вызванной функции чтения нижележащего модуля передаётся дальше как Std_ReturnType [SWS_MemIf_00039].

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

Функция специфицирована как синхронная и нереентерабельная (Non Reentrant) [SWS_MemIf_00039]. Таким образом, вызов, вероятно, типично происходит в контексте задачи (Task); параллельные или вложенные вызовы должны предотвращаться или сериализоваться вызывающей стороной. Вопрос Q-b774bf07a69e28af (открытый)

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

функция MemIf_Write [SWS_MemIf_00040] 📄 PDF

Std_ReturnType MemIf_Write (uint8 DeviceIndex, uint16 BlockNumber, const uint8* DataBufferPtr);

Invokes the "Write" function of the underlying memory abstraction module selected by the parameter Device Index.

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

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

Интерфейсная функция MemIf_Write служит уровнем абстракции и вызывает функцию Write нижележащего модуля абстракции памяти, выбираемого через параметр DeviceIndex [SWS_MemIf_00040]. При синхронном вызове передаются три входных параметра: индекс устройства DeviceIndex для выбора целевого драйвера, логический номер блока BlockNumber, а также указатель DataBufferPtr на буфер с записываемыми данными [SWS_MemIf_00040]. Функция специфицирована под идентификатором сервиса 0x03 и доступна через заголовочный файл MemIf.h [SWS_MemIf_00040].

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

Возвращаемое значение имеет тип Std_ReturnType [SWS_MemIf_00040]. Если обнаружение ошибок разработки (Development Error Detection) для Memory Abstraction Interface активно и зафиксирована ошибка разработки согласно [SWS_MemIf_00022], MemIf_Write возвращает код ошибки E_NOT_OK [SWS_MemIf_00040]. Если ошибки нет, функция без изменений передаёт возвращаемое значение вызванного нижележащего модуля вызывающей стороне [SWS_MemIf_00040].

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

Что касается поведения при параллельном выполнении, MemIf_Write определена как синхронная и нереентерабельная (Non Reentrant) [SWS_MemIf_00040].

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

функция MemIf_Cancel [SWS_MemIf_00041] 📄 PDF

void MemIf_Cancel (uint8 DeviceIndex);

Invokes the "Cancel" function of the underlying memory abstraction module selected by the parameter Device Index.

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

Синхронная функция MemIf_Cancel служит для вызова функции Cancel нижележащего модуля абстракции памяти, выбираемого через параметр Device Index [SWS_MemIf_00041]. Сервис не имеет возвращаемого значения и напрямую перенаправляет запрос на отмену адресуемому экземпляру абстракции [SWS_MemIf_00041].

Для вызова и интеграции действуют следующие технические свойства:

  • Контекст вызова и параллельность: функция определена как нереентерабельная (Non Reentrant) [SWS_MemIf_00041]. Вызывающие компоненты должны гарантировать, что выполнение не происходит параллельно или с прерыванием другими контекстами.
  • Сигнатура и идентификация: интерфейс void MemIf_Cancel (uint8 Device Index) имеет идентификатор сервиса 0x04 и предоставляется через заголовочный файл MemIf.h [SWS_MemIf_00041].
  • Параметры: входной параметр Device Index (тип uint8) выбирает целевой модуль; входные/выходные или возвращаемые параметры отсутствуют [SWS_MemIf_00041].
  • Обработка ошибок: спецификация не описывает для этой функции каких-либо конкретных кодов ошибок, возвращаемых значений или сообщений DET [SWS_MemIf_00041] (интерпретация: проверка на недопустимые индексы устройств, вероятно, возложена на вышестоящую системную архитектуру или нижележащий модуль). Вопрос Q-4a5d989ce611ba89 (открытый)

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

функция MemIf_GetStatus [SWS_MemIf_00042] 📄 PDF

MemIf_StatusType MemIf_GetStatus (uint8 DeviceIndex);

Invokes the "Get Status" function of the underlying memory abstraction module selected by the parameter Device Index.

функция MemIf_GetJobResult [SWS_MemIf_00043] 📄 PDF

MemIf_JobResultType MemIf_GetJobResult (uint8 DeviceIndex);

Invokes the "Get Job Result" function of the underlying memory abstraction module selected by the parameter Device Index. Available v ia Mem If.h

функция MemIf_InvalidateBlock [SWS_MemIf_00044] 📄 PDF

Std_ReturnType MemIf_InvalidateBlock (uint8 DeviceIndex, uint16 BlockNumber);

Invokes the "Invalidate Block" function of the underlying memory abstraction module AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface selected by the parameter Device Index.

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

Синхронная функция MemIf_InvalidateBlock перенаправляет запрос на признание логического блока недействительным в нижележащий модуль абстракции памяти, выбранный через параметр DeviceIndex [SWS_MemIf_00044]. Интерфейс предоставляется через заголовочный файл MemIf.h и имеет Service ID 0x07 [SWS_MemIf_00044].

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

Вызов выполняется синхронно и передаёт следующие входные параметры целевому объекту адресации [SWS_MemIf_00044]:

  • DeviceIndex: числовой индекс базового модуля абстракции памяти [SWS_MemIf_00044].
  • BlockNumber: уникальный идентификатор аннулируемого блока памяти [SWS_MemIf_00044].

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

Функция возвращает значение статуса типа Std_ReturnType [SWS_MemIf_00044]:

  • Если для Memory Abstraction Interface включено обнаружение ошибок разработки (Development Error Detection) и возникает ошибка согласно SWS_MemIf_00022, функция возвращает E_NOT_OK [SWS_MemIf_00044].
  • Если ошибка разработки не обнаружена, интерфейс возвращает результат вызванной функции нижележащего модуля [SWS_MemIf_00044].

Параллелизм

Функция специфицирована как нереентерабельная (Non Reentrant) [SWS_MemIf_00044].

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

функция MemIf_EraseImmediateBlock [SWS_MemIf_00046] 📄 PDF

Std_ReturnType MemIf_EraseImmediateBlock (uint8 DeviceIndex, uint16 BlockNumber);

Invokes the "Erase Immediate Block" function of the underlying memory abstraction module selected by the parameter Device Index.

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

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

Синхронная функция MemIf_EraseImmediateBlock инициирует стирание блока, классифицированного как немедленный, в нижележащем модуле абстракции памяти [SWS_MemIf_00046]. Вызов предоставляется через заголовочный файл MemIf.h и имеет Service ID 0x09 [SWS_MemIf_00046]. В качестве входных параметров служат DeviceIndex для адресации конкретного устройства памяти или модуля абстракции, а также BlockNumber для идентификации целевого блока [SWS_MemIf_00046]. Дополнительные inout- или out-параметры отсутствуют [SWS_MemIf_00046].

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

Функция возвращает значение статуса типа Std_ReturnType [SWS_MemIf_00046]. Если для Memory Abstraction Interface включено обнаружение ошибок разработки и выявляется соответствующая ошибка согласно [SWS_MemIf_00022], вызов возвращает фиксированное возвращаемое значение E_NOT_OK [SWS_MemIf_00046]. Если подобная ошибка не возникает, непосредственный результат вызванной функции нижележащего модуля передаётся вызывающему компоненту [SWS_MemIf_00046].

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

Выполнение MemIf_EraseImmediateBlock происходит синхронно и специфицировано как нереентерабельное (Non Reentrant) [SWS_MemIf_00046]. Интерпретация: поскольку параллельные вызовы интерфейса недопустимы, функция во всей системе, вероятно, должна вызываться только из синхронизированного контекста на уровне задач, чтобы предотвратить несогласованность данных в нижележащих драйверах памяти. Вопрос Q-4fce518bab0115db (открытый)

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

тип MemIf_StatusType [SWS_MemIf_00064] 📄 PDF

Denotes the current status of the underlying abstraction module and device drive. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface

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

Тип перечисления MemIf_StatusType обозначает текущий рабочий статус и статус выполнения нижележащего модуля абстракции памяти, а также соответствующего драйвера устройства согласно [SWS_MemIf_00064]. Этот тип определён в Memory Abstraction Interface и доступен вызывающим компонентам через заголовочный файл MemIf.h [SWS_MemIf_00064].

Перечисление включает четыре различных состояния для отображения эксплуатационной готовности [SWS_MemIf_00064]:

  • MEMIF_UNINIT: нижележащий модуль абстракции или соответствующий драйвер устройства (ещё) не инициализирован [SWS_MemIf_00064].
  • MEMIF_IDLE: модуль абстракции или драйвер устройства готов к работе и в настоящее время не выполняет запросов [SWS_MemIf_00064].
  • MEMIF_BUSY: нижележащий модуль или драйвер устройства в данный момент обрабатывает операцию [SWS_MemIf_00064].
  • MEMIF_BUSY_INTERNAL: модуль абстракции выполняет внутренние операции управления, в то время как драйвер может быть свободен или занят [SWS_MemIf_00064].

Вызывающие уровни используют этот статус, чтобы перед выдачей запросов синхронно определять, готовы ли уровни памяти к работе или выполняются внутренние процессы управления [SWS_MemIf_00064]. Поскольку MemIf_StatusType представляет собой чистое определение типа данных, функциональные аспекты, такие как сообщения DET или DEM, правила реентерабельности или контексты вызова, в элементе спецификации отдельно не указаны.

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

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

тип MemIf_JobResultType [SWS_MemIf_00065] 📄 PDF

Denotes the result of the last job.

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

Тип перечисления MemIf_JobResultType описывает результат последнего обработанного запроса к интерфейсу памяти и предоставляется через заголовочный файл MemIf.h [SWS_MemIf_00065].

Перечисление определяет состояния выполнения, а также специфические состояния ошибок и блоков [SWS_MemIf_00065]:

  • MEMIF_JOB_OK: запрошенное задание успешно завершено [SWS_MemIf_00065].
  • MEMIF_JOB_PENDING: задание ещё не завершено [SWS_MemIf_00065]. Интерпретация: это указывает на то, что задания обрабатываются асинхронно и вызывающий компонент определяет завершение через это промежуточное состояние. Вопрос Q-31078cf25506334e (открытый)
  • MEMIF_JOB_FAILED: задание завершено неуспешно [SWS_MemIf_00065].
  • MEMIF_JOB_CANCELED: задание было отменено [SWS_MemIf_00065].
  • MEMIF_BLOCK_INCONSISTENT: запрошенный блок несогласован, возможно содержит повреждённые данные или не был найден [SWS_MemIf_00065].
  • MEMIF_BLOCK_INVALID: запрошенный блок помечен как недействительный, поэтому требуемая операция не может быть выполнена [SWS_MemIf_00065].

При анализе результата задания тип служит для дифференциации общих ошибок выполнения (MEMIF_JOB_FAILED) и проблем, связанных с блоками (MEMIF_BLOCK_INCONSISTENT, MEMIF_BLOCK_INVALID) [SWS_MemIf_00065].

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

тип MemIf_ModeType [SWS_MemIf_00066] 📄 PDF

Denotes the operation mode of the underlying abstraction mod ules and device drivers.

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

Тип перечисления MemIf_ModeType определяет рабочий режим нижележащих модулей абстракции памяти и драйверов устройств [SWS_MemIf_00066]. Он предоставляется через заголовочный файл MemIf.h и служит для управления скоростью и поведением при доступе к памяти [SWS_MemIf_00066].

Диапазон значений согласно [SWS_MemIf_00066] включает два состояния:

  • MEMIF_MODE_SLOW: нижележащие модули абстракции и драйверы устройств работают в медленном режиме (Slow Mode) [SWS_MemIf_00066].
  • MEMIF_MODE_FAST: нижележащие модули абстракции и драйверы устройств работают в быстром режиме (Fast Mode) [SWS_MemIf_00066].

В отношении обработки ошибок, реентерабельности или специфических контекстов вызова спецификация типа не содержит отдельных положений; передача и анализ режима выполняются синхронно через соответствующие интерфейсы интерфейса памяти или нижележащих драйверов [SWS_MemIf_00066].

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

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

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

Record
AUTOSAR/AP/record/CP_MOD_MemIf
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_MemIf@rel:R20-11#54d03be9
Content hash
54d03be9
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_MemoryAbstractionInterface.pdf#nameddest=SWS_MemIf_00038

Карта тем

Подробный вид

Выберите элемент в оглавлении.

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

MemIf_GetStatus функция

Invokes the "Get Status" function of the underlying memory abstraction module selected by the parameter Device Index.

MemIf_StatusType MemIf_GetStatus (uint8 DeviceIndex);
MemIf_GetVersionInfo функция

Returns version information.

void MemIf_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);

Сервисы

MemIf_Cancel функция

Invokes the "Cancel" function of the underlying memory abstraction module selected by the parameter Device Index.

void MemIf_Cancel (uint8 DeviceIndex);

Invokes the "Erase Immediate Block" function of the underlying memory abstraction module selected by the parameter Device Index.

Std_ReturnType MemIf_EraseImmediateBlock (uint8 DeviceIndex, uint16 BlockNumber);
MemIf_GetJobResult функция

Invokes the "Get Job Result" function of the underlying memory abstraction module selected by the parameter Device Index. Available v ia Mem If.h

MemIf_JobResultType MemIf_GetJobResult (uint8 DeviceIndex);
MemIf_InvalidateBlock функция

Invokes the "Invalidate Block" function of the underlying memory abstraction module AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface selected by the parameter Device Index.

Std_ReturnType MemIf_InvalidateBlock (uint8 DeviceIndex, uint16 BlockNumber);
MemIf_Read функция

Invokes the "Read" function of the underlying memory abstraction module selected by the parameter Device Index.

Std_ReturnType MemIf_Read (uint8 DeviceIndex, uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);
MemIf_SetMode функция

Invokes the "Set Mode" functions of all underlying memory abstraction modules.

void MemIf_SetMode (MemIf_ModeType Mode);
MemIf_Write функция

Invokes the "Write" function of the underlying memory abstraction module selected by the parameter Device Index.

Std_ReturnType MemIf_Write (uint8 DeviceIndex, uint16 BlockNumber, const uint8* DataBufferPtr);

Типы

Denotes the result of the last job.

Denotes the operation mode of the underlying abstraction mod ules and device drivers.

Denotes the current status of the underlying abstraction module and device drive. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_MemoryAbstractionInterface