DEENESPTFRRUARHIKOZHNL

Memory Abstraction Interface (MemIf)

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

Guia do móduloGERADO POR IA

Encaminha pedidos de memória do gestor de NVRAM via índice de dispositivo para a emulação de EEPROM em Flash ou para a abstração de EEPROM.
GERADO POR IA não revisado Modelo: claude-opus-5-5 · Esforço: high · Temperatura: não controlável · Prompt: 423eb9cf4c9b Procedência Perguntas em aberto (5)
Âncora causal: R20-11 Válido a partir de R20-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Encaminha pedidos de memória do gestor de NVRAM via índice de dispositivo para a emulação de EEPROM em Flash ou para a abstração de EEPROM.

A MemIf encaminha os pedidos de memória do NVRAM Manager para módulos Fee ou Ea e oculta o número destes por detrás de uma API uniforme SWS MemIf p. 7. O parâmetro DeviceIndex seleciona o módulo; se apenas estiver configurado um, este é ignorado e a MemIf é implementada como conjunto de macros SWS MemIf p. 17. Os serviços aceitam pedidos de forma síncrona e transmitem o valor de retorno, enquanto a operação de memória é executada assincronamente por baixo. O estado e o resultado são fornecidos por MemIf_GetStatus e MemIf_GetJobResult. Com a deteção de erros de desenvolvimento ativa, chamadas com erro fornecem E_NOT_OK ou MEMIF_JOB_FAILED.

A Memory Abstraction Interface substitui as anteriores camadas de interface de drivers para Flash e EEPROM. Permite ao NVRAM Manager aceder a múltiplos módulos de abstração através de uma API uniforme: a Flash EEPROM Emulation (Fee) e a EEPROM Abstraction (Ea) SRS MemHwAb p. 5. A MemIf oculta o número destes módulos e oferece uma segmentação virtual num espaço de endereçamento linear SWS MemIf p. 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 mesma API que 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

Diagrama de contexto: a MemIf efetua a mediação entre o NvM e a Fee/Ea; as notificações de conclusão seguem diretamente da Fee/Ea para o NvM. Fontes: SWS Fee p. 6, [SWS_MemIf_00047]

A MemIf não possui lógica de armazenamento própria. O parâmetro DeviceIndex seleciona o módulo; se apenas estiver configurado um, este é ignorado e a MemIf é implementada como conjunto de macros. No caso de múltiplos módulos, a distribuição ocorre, por exemplo, através de tabelas de ponteiros de funções SWS MemIf p. 17. Na R20-11, DeviceIndex é do tipo uint8 [SWS_MemIf_00039]; versões posteriores utilizam uint16.

Os serviços aceitam pedidos de forma síncrona e transmitem o valor de retorno do módulo [SWS_MemIf_00040]. A operação de memória é executada a seguir de forma assíncrona na função principal da camada inferior. O NvM toma conhecimento da conclusão através de callback da Fee/Ea ou por polling de MemIf_GetJobResult SWS Fee p. 48. MemIf_GetStatus notifica UNINIT, IDLE, BUSY ou BUSY_INTERNAL [SWS_MemIf_00064]. O resultado do job refere-se sempre ao último pedido e distingue, entre outros, blocos cancelados, inconsistentes e inválidos [SWS_MemIf_00065]. MemIf_SetMode atua em todos os módulos em simultâneo [SWS_MemIf_00038].

Solicitação de escrita via MemIf (exemplo Ea/Eep)NvMMemIfEaEepTarefa BSW (tarefa de OS ou chamada cíclica)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)Selecionar módulo via DeviceIndexEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (inalterado)Use Case: Execução (assíncrona)Até o final, GetJobResult forneceMEMIF_JOB_PENDINGloopaté que a solicitação seja concluídaEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Diagrama de sequência: aceitação síncrona através da MemIf, execução assíncrona no driver, conclusão por callback ou polling. Fontes: SWS Ea p. 41, [SWS_MemIf_00040]

Em caso de erro, a MemIf notifica índices de dispositivo inválidos e ponteiros NULL como erros de desenvolvimento [SWS_MemIf_00006]. Os serviços fornecem então E_NOT_OK, e MemIf_GetJobResult fornece MEMIF_JOB_FAILED SWS MemIf p. 21. Os erros de tempo de execução da memória são detetados pela Fee ou Ea; o NvM lê-os em modo de polling como MEMIF_JOB_FAILED e é responsável pela sua correção ErrorDescription p. 58.

Papel na pilha de memória: distribuidor entre NvM e Fee/Ea

A Memory Abstraction Interface (MemIf) substitui as anteriores camadas de interface de drivers para Flash e EEPROM. Permite ao NVRAM Manager (NvM) aceder a múltiplos módulos de abstração de memória através de uma única API: a Flash EEPROM Emulation (Fee) e a EEPROM Abstraction (Ea) SRS MemHwAb p. 5. Para as camadas superiores, a MemIf oculta quantos módulos Fee e Ea se encontram por baixo. Oferece uma segmentação virtual num espaço de endereçamento linear uniforme SWS MemIf p. 7. A Fee e a Ea fornecem o endereçamento baseado em blocos e um número «virtualmente ilimitado» de ciclos de apagamento e escrita. Por isso, não é necessário alterar o NvM quando os drivers ou o componente mudam SRS MemHwAb p. 5.

A MemIf em si não contém qualquer lógica de armazenamento. A sua API deve ser mapeada na API dos módulos de abstração, e o comportamento funcional é definido pelas especificações destes ou pelas dos drivers de memória SWS MemIf p. 17. Do mesmo modo, a MemIf necessita dos serviços dos módulos de abstração, para a Ea por exemplo Ea_Read, Ea_Cancel, Ea_GetStatus e Ea_GetJobResult [SWS_MemIf_00047]. Opcionalmente, utiliza Det_ReportError [SWS_MemIf_00048]. Os tipos MemIf_StatusType, MemIf_JobResultType e MemIf_ModeType definidos em MemIf.h formam o vocabulário comum da pilha [SWS_MemIf_00064] [SWS_MemIf_00065] [SWS_MemIf_00066]. Deste modo, por exemplo, Fls_GetJobResult fornece diretamente MemIf_JobResultType SWS Fls p. 36.

As ilustrações de releases mais recentes mostram adicionalmente, abaixo de Ea e Fee, os módulos MemAcc e Mem SWS Ea p. 42. Para a R20-11, presume-se que a visão geral mais antiga seja a determinante, na qual a Fee assenta sobre o driver Flash e a Ea sobre o driver EEPROM SWS Fee p. 6. Para a MemIf, a diferença é irrelevante, uma vez que apenas encaminha até ao nível de abstração SWS MemIf p. 17. Pergunta Q-3c74a6029dd0d159 (aberta)

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 mesma API que 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

Diagrama de contexto: a MemIf localiza-se entre o NvM e os módulos de abstração Fee/Ea; as notificações de conclusão chegam ao NvM diretamente a partir da Fee/Ea. Fontes: SWS Fee p. 6, SRS MemHwAb p. 5, [SWS_MemIf_00047], [SWS_MemIf_00048].

Seleção de dispositivo através de DeviceIndex: macros ou tabela de distribuição

O parâmetro DeviceIndex seleciona o módulo de abstração e, consequentemente, o componente de memória. Se apenas estiver configurado um módulo, este é ignorado SWS MemIf p. 17. Neste caso, a MemIf deve ser implementada como um conjunto de macros, por exemplo #define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) Fee_Write(BlockNumber, DataPtr). No caso de múltiplos módulos, as chamadas devem ser distribuídas através de mecanismos eficientes; a especificação menciona como uma solução tabelas de ponteiros de funções indexadas através de DeviceIndex SWS MemIf p. 17. Se uma biblioteca específica do fabricante substituir todos os módulos Fee e Ea necessários, a MemIf consiste apenas em macros SRS MemHwAb p. 5.

Na R20-11, DeviceIndex é do tipo uint8 [SWS_MemIf_00039] [SWS_MemIf_00041]. Versões posteriores da especificação indicam-no como uint16 SWS MemIf p. 18. A referência normativa para esta release é uint8.

abbildung start Konfiguration von MemIf q0 Uma biblioteca do fabricante substitui todos os módulos Fee e Ea? start->q0 lib MemIf consiste apenas em macros para a API da biblioteca q0->lib sim q1 Quantos módulos de abstração estão configurados? q0->q1 não ende A função do módulo é chamada, o valor de retorno é repassado lib->ende ein Macros mapeiam a API do MemIf (p. ex., MemIf_Write -> Fee_Write) q1->ein exatamente um mehr Effiziente Verteilung, z. B. Funktionszeigertabelle q1->mehr mehrere ign DeviceIndex é ignorado ein->ign ign->ende idx DeviceIndex seleciona o módulo (Fee ou Ea) mehr->idx idx->ende

Diagrama de atividades: o número de módulos de abstração configurados decide entre mapeamento por macro e distribuição por DeviceIndex. Fontes: SWS MemIf p. 17, SRS MemHwAb p. 5

Fluxo de pedidos: aceitação síncrona, execução assíncrona

Todos os serviços da MemIf estão especificados como síncronos. Cada um chama a função homónima do módulo selecionado e retorna o respetivo valor de retorno, como por exemplo Read, Write e InvalidateBlock [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044]. A operação de memória propriamente dita decorre depois de forma assíncrona na função principal da camada inferior chamada ciclicamente. Para o efeito, a sequência Ea mostra um ciclo sobre Eep_MainFunction na tarefa BSW SWS Ea p. 41. De acordo com a especificação da Fee, este padrão também se aplica aos restantes serviços assíncronos SWS Fee p. 48.

O NvM toma conhecimento do fim do pedido através de uma de duas vias, consoante a configuração da pilha. Ou o módulo de abstração chama um callback como NvM_JobEndNotification ou NvM_JobErrorNotification, ou o NvM efetua o polling de MemIf_GetJobResult SWS Fee p. 48 EXP ErrorDescription p. 45. A própria MemIf não disponibiliza qualquer função de callback; a sua API é composta pelos seguintes serviços [SWS_MemIf_00038] [SWS_MemIf_00046].

ServiçoID de serviçoretornarEfeito
MemIf_SetMode0x01–chama o SetMode de todos os módulos de abstração [SWS_MemIf_00038]
MemIf_Read0x02Std_ReturnTypelê Length bytes do bloco a partir de BlockOffset para DataBufferPtr [SWS_MemIf_00039]
MemIf_Write0x03Std_ReturnTypeescreve um bloco [SWS_MemIf_00040]
MemIf_Cancel0x04–cancela o pedido em curso [SWS_MemIf_00041]
MemIf_GetStatus0x05MemIf_StatusTypeestado do módulo [SWS_MemIf_00042]
MemIf_GetJobResult0x06MemIf_JobResultTypeResultado da última tarefa [SWS_MemIf_00043]
MemIf_InvalidateBlock0x07Std_ReturnTypeinvalida um bloco [SWS_MemIf_00044]
MemIf_GetVersionInfo0x08–Informação de versão, reentrante [SWS_MemIf_00045]
MemIf_EraseImmediateBlock0x09Std_ReturnTypeapaga um bloco [SWS_MemIf_00046]
Solicitação de escrita via MemIf (exemplo Ea/Eep)NvMMemIfEaEepTarefa BSW (tarefa de OS ou chamada cíclica)Use Case: Auftragsannahme (synchron)MemIf_Write(DeviceIndex,BlockNumber, DataBufferPtr)Selecionar módulo via DeviceIndexEa_Write(BlockNumber, DataBufferPtr)Eep_Write(EepromAddress,DataBufferPtr, Length)Std_ReturnTypeStd_ReturnTypeStd_ReturnType (inalterado)Use Case: Execução (assíncrona)Até o final, GetJobResult forneceMEMIF_JOB_PENDINGloopaté que a solicitação seja concluídaEep_MainFunction()altBenachrichtigung konfiguriertEa_JobEndNotification()NvM_JobEndNotification()Polling-BetriebMemIf_GetJobResult(DeviceIndex)Ea_GetJobResult()MEMIF_JOB_OKMEMIF_JOB_OK

Diagrama de sequência: uma tarefa de escrita é aceita de forma síncrona através de MemIf, executada de forma assíncrona no driver e concluída via callback ou polling. Fontes: SWS Ea p. 41, SWS Fee p. 48, ErrorDescription p. 60, [SWS_MemIf_00040]

Estado, resultado de job e modo de operação

MemIf_GetStatus fornece o estado do módulo selecionado [SWS_MemIf_00042]. São possíveis MEMIF_UNINIT, MEMIF_IDLE, MEMIF_BUSY e MEMIF_BUSY_INTERNAL. Em MEMIF_BUSY_INTERNAL, o módulo de abstração está ocupado com gerenciamento interno, enquanto o driver pode estar busy ou idle [SWS_MemIf_00064]. A especificação do Fee concretiza as condições e cita como exemplo de gerenciamento interno a reorganização da flash (garbage collection) SWS Fee p. 30. No driver de flash, o estado já pode ser consultado antes da inicialização e é então MEMIF_UNINIT SWS Fls p. 35.

status start Start UNINIT MEMIF_UNINIT start->UNINIT IDLE MEMIF_IDLE UNINIT->IDLE Modul initialisiert BUSY MEMIF_BUSY IDLE->BUSY Solicitação da camada superior em processamento BUSYINT MEMIF_BUSY_INTERNAL IDLE->BUSYINT interne Verwaltung (z. B. Garbage Collection) BUSY->IDLE Auftrag beendet BUSYINT->IDLE interne Verwaltung beendet

Diagrama de estados: ciclo de vida do estado do módulo visível via MemIf_GetStatus. Fontes: [SWS_MemIf_00064], SWS Fee p. 30

MemIf_GetJobResult fornece o resultado da última tarefa [SWS_MemIf_00043] [SWS_MemIf_00065]. Leitura, escrita e apagamento compartilham um único resultado de job, de modo que apenas o da última tarefa pode ser consultado. Com a aceitação de uma nova tarefa, ele é definido como MEMIF_JOB_PENDING SWS Fls p. 36; o Fee fala da última tarefa aceita SWS Fee p. 31. Além de OK, FAILED e CANCELED, existem dois resultados relacionados a blocos. MEMIF_BLOCK_INCONSISTENT significa que o bloco está corrompido ou não foi encontrado; MEMIF_BLOCK_INVALID significa que ele está marcado como inválido [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 sem sucesso CANCELED MEMIF_JOB_CANCELED PENDING->CANCELED abgebrochen INCONS MEMIF_BLOCK_INCONSISTENT PENDING->INCONS Bloco corrompido ou não encontrado INVALID MEMIF_BLOCK_INVALID PENDING->INVALID Bloco marcado como inválido OK->neu próxima solicitação FAILED->neu próxima solicitação CANCELED->neu próxima solicitação INCONS->neu próxima solicitação INVALID->neu próxima solicitação

Diagrama de estados: uma tarefa aceita permanece em PENDING e termina em exatamente um dos resultados finais. Fontes: [SWS_MemIf_00065], SWS Fls p. 36, SWS Fee p. 31

MemIf_SetMode é o único serviço que não possui DeviceIndex e chama SetMode de todos os módulos de abstração [SWS_MemIf_00038]. Os modos são MEMIF_MODE_SLOW e MEMIF_MODE_FAST [SWS_MemIf_00066]. Nos drivers, isso representa acesso de leitura lento ou acesso SPI normal, por um lado, e acesso de leitura rápido ou burst SPI, por outro. Eep_SetMode não deve ser chamado durante uma operação em andamento SWS Eep p. 34. Fls_SetMode rejeita uma solicitação no estado busy quando a verificação está ativa SWS Fls p. 42. Interpretação: como MemIf_SetMode atinge todos os módulos, ele só deve ser chamado quando todos os dispositivos reportarem MEMIF_IDLE. Pergunta Q-d6ee630fca619042 (aberta)

Cancelamento de tarefas em andamento

MemIf_Cancel chama a função Cancel do módulo selecionado [SWS_MemIf_00041]. O cancelamento em si é síncrono, mas assíncrono em relação ao hardware: o hardware ainda pode continuar em execução quando a chamada já tiver retornado SWS Fee p. 45 SWS Ea p. 44. O resultado do job passa a ser MEMIF_JOB_CANCELED [SWS_MemIf_00065], o que o Fee considera expressamente como uma falha SWS Fee p. 31.

Para o caminho da flash, a especificação do driver mostra a cadeia MemIf_Cancel → Fee_Cancel → Fls_Cancel com notificações de erro subsequentes. Ela também exige que Fls_Cancel não seja chamado durante uma Fls_MainFunction em andamento. Existem dois caminhos para isso: as funções de job do NvM e do driver de flash são sincronizadas, ou a task da Fls_MainFunction não é interrompida SWS Fls p. 58.

Cancelamento de uma tarefa flash em andamentoNvMMemIfFeeFlsMemIf_Cancel(DeviceIndex)Fee_Cancel()Fls_Cancel()Fls_Cancel não durantelaufender Fls_MainFunctionRetornoRetornoRetorno (síncrono)Cancelamento é assíncronopara o hardwareoptFehlerbenachrichtigung konfiguriertFee_JobErrorNotification()NvM_JobErrorNotification()MemIf_GetJobResult(DeviceIndex)Fee_GetJobResult()MEMIF_JOB_CANCELEDMEMIF_JOB_CANCELED

Diagrama de sequência: o cancelamento é executado de forma síncrona através de todas as camadas, a notificação de erro segue e, em seguida, GetJobResult reporta CANCELED. Fontes: SWS Fls p. 58, SWS Fee p. 45, [SWS_MemIf_00041]

Regras de chamada, reentrância e incorporação no BSW

Com exceção de MemIf_GetVersionInfo, todos os serviços não são reentrantes [SWS_MemIf_00045] [SWS_MemIf_00040]. Chamadas paralelas a partir de múltiplos contextos devem, portanto, ser excluídas. Como o estado e o resultado do job por módulo refletem apenas a última tarefa, o chamador só deve emitir uma nova tarefa após a conclusão da anterior SWS Fls p. 36.

O exemplo de mapeamento de memória de um cluster ICC2 «MEM» apresenta o MemIf juntamente com o NvM. Lá, MemIf_SetMode é modelado como BswCalledEntity, e o MemIf possui o prefixo de seção MEMIF SWS MemoryMapping p. 50. O BSW Distribution Guide cita MEMIF ao lado de FLS e FEE como exemplo de «Type I»; o escopo de aplicação pode ser limitado a um único núcleo via SwAddrMethod com escopo local EXP BSWDistributionGuide p. 31. Supõe-se que, em sistemas multinúcleo, o MemIf deva, portanto, ser operado localmente no núcleo. Pergunta Q-d998fdc58e0bcddd (aberta)

Comportamento em caso de erro

O MemIf reconhece dois erros de desenvolvimento. MEMIF_E_PARAM_DEVICE (0x01) representa um DeviceIndex incorreto, MEMIF_E_PARAM_POINTER (0x02) representa um ponteiro NULL [SWS_MemIf_00006]. Eles são reportados através do Det_ReportError opcional [SWS_MemIf_00048]. Códigos de erro específicos não são retornados através da API de acordo com a tabela de rastreamento SWS MemIf p. 12.

Se a detecção de erros de desenvolvimento estiver ativa e um erro for detectado, Read, Write, InvalidateBlock e EraseImmediateBlock retornam E_NOT_OK [SWS_MemIf_00039] [SWS_MemIf_00040] [SWS_MemIf_00044] [SWS_MemIf_00046]. MemIf_GetJobResult retorna MEMIF_JOB_FAILED SWS MemIf p. 21 nesse caso. Caso contrário, o valor do módulo é repassado inalterado.

fehlerpruefung aufruf Chamada de um serviço MemIf (DeviceIndex, eventualmente ponteiro) q1 Entwicklungsfehlererkennung aktiviert? aufruf->q1 q2 Parâmetros válidos? q1->q2 sim weiter Chamar função do módulo selecionado via DeviceIndex q1->weiter não det Det_ReportError com MEMIF_E_PARAM_DEVICE (0x01) ou MEMIF_E_PARAM_POINTER (0x02) q2->det não q2->weiter sim fehl Retorno E_NOT_OK (MemIf_GetJobResult: MEMIF_JOB_FAILED) det->fehl rueck Retornar valor de retorno do módulo inalterado weiter->rueck

Diagrama de atividades: verificação de parâmetros com detecção de erros de desenvolvimento ativa e repasse do resultado do módulo. Fontes: [SWS_MemIf_00006], [SWS_MemIf_00048], SWS MemIf p. 18, SWS MemIf p. 21

Erros de tempo de execução da memória não são detectados pelo MemIf, mas sim pelo Fee ou Ea; o próprio MemIf não reage a eles («N/A»). No modo de polling, o NvM lê o erro através de MemIf_GetJobResult como MEMIF_JOB_FAILED, e a recuperação cabe ao NvM ErrorDescription p. 58 ErrorDescription p. 60. Uma versão mais recente descreve essa recuperação mais detalhadamente. Segundo ela, em tarefas de escrita, o NvM incrementa um contador de repetições, cancela após exceder o limite e reporta NVM_E_REQ_FAILED ao DEM EXP ErrorDescription p. 45. Para a R20-11, esse detalhe não está normativamente comprovado aqui.

Evidências mais detalhadas

Guia gerado por IA com base nos trechos de especificação fornecidos no prompt. Normativos são os requisitos referenciados do Release R20-11. Interpretações estão identificadas como tais.

Memory Abstraction Interface (MemIf)

Abstracts underlying Flash and EEPROM memory drivers.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

função MemIf_SetMode [SWS_MemIf_00038] 📄 PDF

void MemIf_SetMode (MemIf_ModeType Mode);

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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e9d6121ccdfc Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função MemIf_SetMode serve para a comutação síncrona do modo de operação através da interface de memória [SWS_MemIf_00038]. Ao ser chamada, ela encaminha o modo solicitado para as funções individuais de "Set Mode" de todos os módulos de abstração de memória subjacentes [SWS_MemIf_00038]. Como parâmetro, é passado o modo de destino Mode, enquanto a função não fornece nenhum valor de retorno [SWS_MemIf_00038]. A interface está definida com o ID de serviço 0x01 no cabeçalho MemIf.h [SWS_MemIf_00038].

Em relação à concorrência, MemIf_SetMode está especificada como não reentrante (Non Reentrant) [SWS_MemIf_00038]. Interpretação: Presume-se que os chamadores não possam chamar a função simultaneamente ou com interrupção a partir de múltiplas tarefas ou rotinas de serviço de interrupção, razão pela qual um acesso concorrente, caso necessário, deve ser coordenado por mecanismos externos de proteção. Pergunta Q-02b14e9cb4b05dc9 (aberta)

Devido à semântica de execução síncrona, a chamada só retorna ao chamador após o encaminhamento da solicitação aos módulos de abstração de memória [SWS_MemIf_00038]. Valores de retorno específicos para indicação de erros ou mensagens de erro DET ou DEM separadas não estão previstos para esta função na especificação do elemento [SWS_MemIf_00038].

Esta nota de uso foi gerada automaticamente e baseia-se exclusivamente nas informações da especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 9f6882978f36 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função MemIf_Read encaminha uma solicitação de leitura de forma síncrona para o módulo de abstração de memória subjacente selecionado através do parâmetro DeviceIndex [SWS_MemIf_00039]. Ela está declarada no cabeçalho MemIf.h e serve para a leitura de dados de um bloco de memória lógico.

Parâmetros e interface

A chamada de MemIf_Read inclui os seguintes parâmetros de entrada e saída [SWS_MemIf_00039]:

  • DeviceIndex: Índice do dispositivo de destino para a seleção do módulo de destino.
  • BlockNumber: Número de bloco lógico do bloco de memória a ser lido.
  • BlockOffset: Deslocamento em bytes (offset) dentro do bloco lógico a partir do qual a leitura é realizada.
  • DataBufferPtr: Ponteiro para o buffer de armazenamento dos dados lidos.
  • Length: Quantidade de bytes de dados a serem lidos.

Tratamento de erros e valores de retorno

Se a detecção de erros de desenvolvimento (Development Error Detection) estiver ativa e um erro de desenvolvimento for detectado, a função retorna E_NOT_OK [SWS_MemIf_00039]. Caso contrário, o valor de retorno da função de leitura chamada do módulo subjacente é repassado como Std_ReturnType [SWS_MemIf_00039].

Simultaneidade e restrições

A função é especificada como síncrona e não reentrante (Non Reentrant) [SWS_MemIf_00039]. Portanto, uma chamada deve ocorrer tipicamente no contexto de tarefa; chamadas paralelas ou aninhadas devem ser evitadas ou serializadas pelo chamador. Pergunta Q-b774bf07a69e28af (aberta)

Esta nota de uso foi gerada por uma IA e baseia-se na especificação AUTOSAR R20-11.

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 88682d2af3e3 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A função de interface MemIf_Write atua como camada de abstração e chama a função Write do módulo de abstração de memória subjacente, o qual é selecionado através do parâmetro DeviceIndex [SWS_MemIf_00040]. Na chamada síncrona, são transmitidos três parâmetros de entrada: o índice do dispositivo DeviceIndex para a seleção do driver de destino, o número de bloco lógico BlockNumber bem como o ponteiro DataBufferPtr para o buffer com os dados a serem gravados [SWS_MemIf_00040]. A função está especificada sob o service ID 0x03 e disponível através do arquivo de cabeçalho MemIf.h [SWS_MemIf_00040].

Tratamento de erros e valores de retorno

O valor de retorno é do tipo Std_ReturnType [SWS_MemIf_00040]. Se a detecção de erros de desenvolvimento (Development Error Detection) para a Memory Abstraction Interface estiver ativa e um erro de desenvolvimento for detectado de acordo com [SWS_MemIf_00022], MemIf_Write retorna o código de erro E_NOT_OK [SWS_MemIf_00040]. Se não houver erro, a função encaminha o valor de retorno do módulo subjacente chamado inalterado para o chamador [SWS_MemIf_00040].

Simultaneidade e condições marginais

Em relação ao comportamento de concorrência, MemIf_Write é definida como síncrona e não reentrante (Non Reentrant) [SWS_MemIf_00040].

Esta nota de utilização foi gerada por uma IA com base na especificação AUTOSAR Classic R20-11.

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: fa67da25152e Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona MemIf_Cancel serve para chamar a função cancel do módulo de abstração de memória subjacente que é selecionado através do parâmetro Device Index [SWS_MemIf_00041]. O serviço não possui valor de retorno e encaminha a ordem de cancelamento diretamente para a instância de abstração endereçada [SWS_MemIf_00041].

Para a chamada e a integração, aplicam-se as seguintes propriedades técnicas:

  • Contexto de chamada e concorrência: A função é definida como não reentrante (Non Reentrant) [SWS_MemIf_00041]. Os chamadores devem garantir que a execução não ocorra de forma concorrente ou interruptiva por outros contextos.
  • Assinatura e identificação: A interface void MemIf_Cancel (uint8 Device Index) possui o service ID 0x04 e é disponibilizada através do arquivo de cabeçalho MemIf.h [SWS_MemIf_00041].
  • Parâmetros: O parâmetro de entrada Device Index (tipo uint8) seleciona o módulo de destino; parâmetros de entrada/saída ou de retorno não estão presentes [SWS_MemIf_00041].
  • Tratamento de erros: A especificação não descreve códigos de erro específicos, valores de retorno ou mensagens DET para esta função [SWS_MemIf_00041] (interpretação: uma verificação de índices de dispositivo inválidos provavelmente fica a cargo da arquitetura do sistema de nível superior ou do módulo subjacente). Pergunta Q-4a5d989ce611ba89 (aberta)

Esta nota de uso foi criada por uma IA com base na especificação AUTOSAR R20-11.

função 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.

função 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

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 65e4894eca9b Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona MemIf_InvalidateBlock encaminha a ordem de invalidação de um bloco lógico para o módulo de abstração de memória subjacente selecionado através do parâmetro DeviceIndex [SWS_MemIf_00044]. A interface é disponibilizada através do cabeçalho MemIf.h e possui o ID de serviço 0x07 [SWS_MemIf_00044].

Utilização e parâmetros

A chamada ocorre de forma síncrona e passa os seguintes parâmetros de entrada para o destino de endereçamento [SWS_MemIf_00044]:

  • DeviceIndex: Índice numérico do módulo de abstração de memória subjacente [SWS_MemIf_00044].
  • BlockNumber: Identificador unívoco do bloco de memória a ser invalidado [SWS_MemIf_00044].

Tratamento de erros e valores de retorno

A função retorna um valor de status do tipo Std_ReturnType [SWS_MemIf_00044]:

  • Se a detecção de erros de desenvolvimento (Development Error Detection) estiver ativada para a Memory Abstraction Interface e ocorrer um erro conforme SWS_MemIf_00022, a função retorna E_NOT_OK [SWS_MemIf_00044].
  • Se nenhum erro de desenvolvimento for constatado, a interface retorna o resultado da função chamada do módulo subjacente [SWS_MemIf_00044].

simultaneidade

A função está especificada como não reentrante (Non Reentrant) [SWS_MemIf_00044].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Classic Release R20-11.

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e3fb9cffcdad Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função síncrona MemIf_EraseImmediateBlock solicita o apagamento de um bloco classificado como imediato no módulo de abstração de memória subordinado [SWS_MemIf_00046]. A chamada é disponibilizada através do cabeçalho MemIf.h e possui o ID de serviço 0x09 [SWS_MemIf_00046]. Como parâmetros de entrada servem DeviceIndex para o endereçamento do dispositivo de memória ou módulo de abstração específico e BlockNumber para a identificação do bloco de destino [SWS_MemIf_00046]. Não existem parâmetros inout ou out adicionais [SWS_MemIf_00046].

Valores de retorno e tratamento de erros

A função retorna um valor de status do tipo Std_ReturnType [SWS_MemIf_00046]. Se a detecção de erros de desenvolvimento estiver ativada para a Memory Abstraction Interface e for constatado um erro correspondente conforme [SWS_MemIf_00022], a chamada fornece o valor de retorno fixo E_NOT_OK [SWS_MemIf_00046]. Se não ocorrer tal erro, o resultado imediato da função chamada do módulo subordinado é repassado ao chamador [SWS_MemIf_00046].

Simultaneidade e restrições

A execução de MemIf_EraseImmediateBlock ocorre de forma síncrona e está especificada como não reentrante (Non Reentrant) [SWS_MemIf_00046]. Interpretação: Como chamadas paralelas à interface são inadmissíveis, a função no sistema global deve presumivelmente ser chamada apenas a partir de um contexto sincronizado em nível de tarefa, a fim de evitar inconsistências de dados nos drivers de memória subordinados. Pergunta Q-4fce518bab0115db (aberta)

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR CP R20-11.

tipo 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a0c9a4a73b28 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração MemIf_StatusType identifica o status operacional e de execução atual do módulo de abstração de memória subordinado, bem como do driver de dispositivo correspondente, conforme [SWS_MemIf_00064]. Este tipo está definido na Memory Abstraction Interface e fica disponível para os chamadores através do arquivo de cabeçalho MemIf.h [SWS_MemIf_00064].

A enumeração abrange quatro estados distintos para o mapeamento da prontidão operacional [SWS_MemIf_00064]:

  • MEMIF_UNINIT: O módulo de abstração subordinado ou o respectivo driver de dispositivo (ainda) não está inicializado [SWS_MemIf_00064].
  • MEMIF_IDLE: O módulo de abstração ou o driver de dispositivo está pronto para operação e atualmente não executa ordens [SWS_MemIf_00064].
  • MEMIF_BUSY: O módulo subordinado ou o driver de dispositivo processa atualmente uma operação [SWS_MemIf_00064].
  • MEMIF_BUSY_INTERNAL: O módulo de abstração executa operações de gerenciamento internas, enquanto o driver pode estar livre ou ocupado [SWS_MemIf_00064].

As camadas chamadoras utilizam este status para constatar sincronamente, antes da atribuição de ordens, se as camadas de memória estão prontas para operação ou se processos internos de gerenciamento estão em andamento [SWS_MemIf_00064]. Como MemIf_StatusType representa uma definição puramente de tipo de dados, aspectos funcionais como mensagens DET ou DEM, regras de reentrância ou contextos de chamada não são indicados separadamente no elemento de especificação.

Este texto foi gerado por uma IA com base na especificação AUTOSAR.

Guia do implementador em breve (complexidade I1)

tipo MemIf_JobResultType [SWS_MemIf_00065] 📄 PDF

Denotes the result of the last job.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 975aee2541ba Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração MemIf_JobResultType descreve o resultado da última ordem processada para a interface de memória e é disponibilizado através do arquivo de cabeçalho MemIf.h [SWS_MemIf_00065].

A enumeração define estados para a execução, bem como estados específicos de erro e de bloco [SWS_MemIf_00065]:

  • MEMIF_JOB_OK: A ordem solicitada foi finalizada com sucesso [SWS_MemIf_00065].
  • MEMIF_JOB_PENDING: A ordem ainda não foi concluída [SWS_MemIf_00065]. Interpretação: Isto indica que as ordens são processadas de forma assíncrona e o chamador determina a conclusão através deste estado intermediário. Pergunta Q-31078cf25506334e (aberta)
  • MEMIF_JOB_FAILED: A ordem não foi concluída com sucesso [SWS_MemIf_00065].
  • MEMIF_JOB_CANCELED: A ordem foi cancelada [SWS_MemIf_00065].
  • MEMIF_BLOCK_INCONSISTENT: O bloco solicitado está inconsistente, contém possivelmente dados corrompidos ou não foi encontrado [SWS_MemIf_00065].
  • MEMIF_BLOCK_INVALID: O bloco solicitado foi marcado como inválido, de modo que a operação desejada não pode ser executada [SWS_MemIf_00065].

Na avaliação do resultado da ordem, o tipo serve para a diferenciação entre erros gerais de execução (MEMIF_JOB_FAILED) e problemas relacionados ao bloco (MEMIF_BLOCK_INCONSISTENT, MEMIF_BLOCK_INVALID) [SWS_MemIf_00065].

Este texto foi gerado por uma IA e serve para fins de orientação.

tipo MemIf_ModeType [SWS_MemIf_00066] 📄 PDF

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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 00926ceab163 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração MemIf_ModeType define o modo de operação dos módulos de abstração de memória subordinados e drivers de dispositivo [SWS_MemIf_00066]. Ele é disponibilizado através do arquivo de cabeçalho MemIf.h e serve para o controle da velocidade e do comportamento operacional dos acessos à memória [SWS_MemIf_00066].

A faixa de valores abrange dois estados conforme [SWS_MemIf_00066]:

  • MEMIF_MODE_SLOW: Os módulos de abstração e drivers de dispositivo subordinados operam no modo lento (Slow Mode) [SWS_MemIf_00066].
  • MEMIF_MODE_FAST: Os módulos de abstração e drivers de dispositivo subordinados operam no modo rápido (Fast Mode) [SWS_MemIf_00066].

Em relação ao tratamento de erros, à reentrância ou a contextos de chamada específicos, a especificação do tipo não contém determinações à parte; a passagem e a avaliação do modo ocorrem sincronamente através das interfaces correspondentes da interface de memória ou dos drivers subordinados [SWS_MemIf_00066].

Este texto foi gerado por uma IA e serve para orientação técnica.

Guia do implementador em breve (complexidade 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#f73a5167
Content hash
f73a5167
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_MemoryAbstractionInterface.pdf#nameddest=SWS_MemIf_00038

Inicialização e estado

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

MemIf_StatusType MemIf_GetStatus (uint8 DeviceIndex);

Returns version information.

void MemIf_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);

Serviços

MemIf_Cancel função

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);

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);

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 função

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 função

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

void MemIf_SetMode (MemIf_ModeType Mode);
MemIf_Write função

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);

Tipos

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