DEENESPTFRRUARHIKOZHNL

Flash EEPROM Emulation (Fee)

ModulFee (Flash EEPROM Emulation)
BSW-Modul-ID21
Standard-Header#include "Fee.h"
SWS-SpezifikationAUTOSAR_SWS_FlashEEPROMEmulation.pdf
ClusterMemory Services

모듈 가이드AI 생성

플래시 메모리에서 논리 블록을 갖는 EEPROM을 에뮬레이트하고 비동기 읽기 및 쓰기 작업을 처리합니다.
AI 생성 미검증 모델: claude-opus-5-5 · 노력: high · 온도: 제어 불가 · 프롬프트: 82b558e5a038 출처 열린 질문 (6)
인과 앵커: R20-11 R20-11부터 유효 이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

플래시 메모리에서 논리 블록을 갖는 EEPROM을 에뮬레이트하고 비동기 읽기 및 쓰기 작업을 처리합니다.

Fee는 에뮬레이트된 EEPROM의 논리 블록을 플래시 메모리에 매핑하고, NVRAM Manager가 MemIf를 통해 요청하는 작업을 처리합니다. 읽기, 쓰기 및 삭제 작업은 수락만 된 후 Fee_MainFunction에서 비동기적으로 처리됩니다 [SWS_Fee_00097]. 진행 상황과 결과는 Fee_GetStatus 및 Fee_GetJobResult에 표시됩니다. Fee_Init 이후 모듈은 처음에 내부 관리에 바쁠 수 있지만(MEMIF_BUSY_INTERNAL), 이미 작업을 수락합니다 SWS Fee 42쪽. 쓰기 작업은 항상 전체 블록에 영향을 미칩니다.

Fee는 에뮬레이트된 EEPROM의 논리 블록을 플래시 메모리에 매핑합니다. BlockNumber은 동시에 블록의 시작 주소를 나타냅니다 [SWS_Fee_00087]. 호출은 DeviceIndex를 통해 적절한 서비스를 선택하는 Memory Abstraction Interface를 거쳐 NVRAM Manager로부터 전달됩니다 SWS MemIf 18쪽. 그 아래에서는 플래시 드라이버 Fls가 작동합니다. Fee는 NvM_JobEndNotification 및 NvM_JobErrorNotification를 통해 NVRAM Manager로 직접 피드백을 제공합니다 [SWS_Fee_00098], [SWS_Fee_00099].

fee_kontext NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / MemIf_Cancel / MemIf_SetMode Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_Read / Fee_Write / Fee_Cancel / Fee_GetStatus / Fee_GetJobResult Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Fls (Flash-Treiber) Fee->Fls Fls_Read / Fls_Write / Fls_Erase / Fls_Cancel / Fls_SetMode / Fls_BlankCheck Det DET Fee->Det Det_ReportError (optional) Fls->Fee Fee_JobEndNotification / Fee_JobErrorNotification EcuM EcuM EcuM->Fee Fee_Init SchM SchM (BSW Scheduler) SchM->Fee Fee_MainFunction (zyklisch)

컨텍스트 다이어그램: MemIf와 Fls 사이에 위치하며, EcuM에 의해 초기화되고, SchM에 의해 주기적으로 트리거되며, NvM으로 직접 피드백을 보내는 Fee. 출처: [SWS_Fee_00085], [SWS_Fee_00097], [SWS_Fee_00105].

EcuM은 선택된 구성 세트를 사용하여 Fee_Init을 호출합니다. R20-11은 이 서비스를 비동기로 나열합니다 [SWS_Fee_00085]. 이후 상태는 MEMIF_BUSY_INTERNAL가 되지만, 작업은 이미 수락됩니다. Fee_MainFunction의 반복된 호출만이 내부 관리를 완료하고 MEMIF_IDLE로 이어집니다 SWS Fee 42쪽. Fee_GetStatus은 모듈 상태를, Fee_GetJobResult은 마지막으로 수락된 작업의 결과를 보여줍니다 [SWS_Fee_00090], [SWS_Fee_00091].

fee_modulstatus start UNINIT MEMIF_UNINIT start->UNINIT BUSY_INTERNAL MEMIF_BUSY_INTERNAL UNINIT->BUSY_INTERNAL Fee_Init BUSY_INTERNAL->BUSY_INTERNAL Fee_MainFunction (관리 실행 중) IDLE MEMIF_IDLE BUSY_INTERNAL->IDLE Fee_MainFunction (Verwaltung beendet) BUSY MEMIF_BUSY BUSY_INTERNAL->BUSY Fee_Read / Fee_Write angenommen IDLE->BUSY Fee_Read / Fee_Write angenommen BUSY->IDLE Fee_Cancel BUSY->IDLE Auftrag beendet (Annahme)

상태 다이어그램: MEMIF_UNINIT에서 MEMIF_BUSY_INTERNAL을 거쳐 MEMIF_IDLE 및 MEMIF_BUSY로의 모듈 상태. 정상적인 작업 종료 후 복귀는 가정입니다. 출처: [SWS_Fee_00090], SWS Fee 28쪽.

읽기, 쓰기, 무효화 및 삭제 작업은 E_OK을 통해 수락되었음만 보고하며, Fee_MainFunction에서 비동기적으로 처리됩니다 [SWS_Fee_00097]. Fee_Read은 블록의 임의 세그먼트를 읽고, Fee_Write는 항상 오프셋 0으로 전체 블록을 읽습니다 SWS Fee 28쪽. 쓰기 중에는 블록이 내부적으로 'corrupted'로 간주됩니다. 이 표시는 Fee_InvalidateBlock에 의한 무효화와 구별되어야 합니다 SWS Fee 21쪽.

Fee_Cancel은 R20-11에서 동기식이며 플래시 드라이버를 통해 보류 중인 작업을 취소합니다 [SWS_Fee_00089]. 보류 중인 작업이 없으면 FEE_E_INVALID_CANCEL를 보고합니다 [SWS_Fee_91002]. 플래시 오류는 드라이버가 감지합니다. Fee는 구성에 따라 두 가지 방식으로 이를 보고합니다: 조회를 위한 MEMIF_JOB_FAILED 또는 NvM_JobErrorNotification를 통해서입니다. 복구는 NVRAM Manager가 담당합니다 ErrorDescription 40쪽. 초기화 누락이나 유효하지 않은 블록 번호와 같은 오작동은 Fee가 개발 오류로 보고합니다 [SWS_Fee_00010].

NV 메모리 스택에서의 역할: 에뮬레이트된 EEPROM으로서의 플래시 메모리

Flash EEPROM Emulation(Fee)은 상위 계층에 논리 블록을 제공하고 이를 플래시 메모리에 매핑합니다. 이때 BlockNumber은 동시에 메모리 내 블록의 시작 주소를 나타냅니다 [SWS_Fee_00087], [SWS_Fee_00088]. NVRAM Manager는 Fee를 직접 호출하지 않고 Memory Abstraction Interface를 통해 호출합니다. MemIf_Read 및 MemIf_Write는 DeviceIndex를 통해 선택된 추상화 모듈의 함수를 호출하고 그 반환값을 전달합니다 SWS MemIf 18쪽, SWS MemIf 19쪽. 하위 방향으로 Fee는 플래시 드라이버 Fls에 의존합니다. 그곳에서 Fls_AddressType 및 Fls_LengthType를 가져오고, MemIf로부터 상태, 결과 및 모드 타입을 가져옵니다 [SWS_Fee_00084].

피드백은 MemIf를 거치지 않고 전달됩니다. MemIf 자체는 콜백을 제공하지 않으며, 그 아래 추상화 모듈을 위한 콜백 루틴은 NVRAM Manager가 제공합니다 SWS MemIf 24쪽. Fee는 이를 위해 NvM_JobEndNotification 및 NvM_JobErrorNotification를 호출합니다 [SWS_Fee_00098], [SWS_Fee_00099]. 반대로 드라이버는 작업 종료를 Fee_JobEndNotification 및 Fee_JobErrorNotification을 통해 Fee에 보고합니다 [SWS_Fee_00095], [SWS_Fee_00096]. Fee는 EcuM에 의해 초기화되고 Basic Software Scheduler에 의해 주기적으로 트리거됩니다 SWS Fee 42쪽.

fee_kontext NvM NvM (NVRAM Manager) MemIf MemIf (Memory Abstraction Interface) NvM->MemIf MemIf_Read / MemIf_Write / MemIf_Cancel / MemIf_SetMode Fee Fee (Flash EEPROM Emulation) MemIf->Fee Fee_Read / Fee_Write / Fee_Cancel / Fee_GetStatus / Fee_GetJobResult Fee->NvM NvM_JobEndNotification / NvM_JobErrorNotification Fls Fls (Flash-Treiber) Fee->Fls Fls_Read / Fls_Write / Fls_Erase / Fls_Cancel / Fls_SetMode / Fls_BlankCheck Det DET Fee->Det Det_ReportError (optional) Fls->Fee Fee_JobEndNotification / Fee_JobErrorNotification EcuM EcuM EcuM->Fee Fee_Init SchM SchM (BSW Scheduler) SchM->Fee Fee_MainFunction (zyklisch)

컨텍스트 다이어그램: Fee는 MemIf와 Fls 사이에 위치합니다. EcuM에 의해 초기화되고, SchM에 의해 주기적으로 트리거되며, 작업 종료를 NvM에 직접 보고합니다. 출처: [SWS_Fee_00085], [SWS_Fee_00097], [SWS_Fee_00098], [SWS_Fee_00104], [SWS_Fee_00105], SWS MemIf 18쪽.

R20-11은 필요한 드라이버 서비스로 특히 다음 함수들을 명시합니다 [SWS_Fee_00105]:

  • Fls_Read, Fls_Write, Fls_Erase 및 Fls_Compare,
  • Fls_Cancel, Fls_GetStatus, Fls_GetJobResult 및 Fls_SetMode,
  • Det_ReportRuntimeError.

선택적으로 Det_ReportError 및 Fls_BlankCheck이 추가됩니다 [SWS_Fee_00104]. 동일한 요구사항의 이후 버전에서는 대신 MemAcc_BlankCheck을 나열합니다 SWS Fee 40쪽. R20-11에 대해 규범적인 것은 Fls 변형으로 유지됩니다.

시작: Fee_Init부터 수락 준비 상태까지

EcuM은 선택된 구성 세트에 대한 포인터와 함께 Fee_Init을 호출합니다 [SWS_Fee_00085]. Fee_ConfigType 타입은 구현별 요소를 갖는 구조체입니다 [SWS_Fee_00188]. 주목할 점은 R20-11이 Fee_Init를 비동기로 명시한다는 것입니다 [SWS_Fee_00085]. 변경 이력에 따르면 초기화가 Fee_Init 내에 완료될 필요는 없으며, 상태 머신도 이에 맞추어 조정되었습니다 SWS Fee 4쪽.

명세서의 시퀀스 다이어그램은 동작 순서를 보여줍니다 SWS Fee 42쪽:

  1. Fee_Init 이후 모듈 상태는 MEMIF_BUSY_INTERNAL입니다.
  2. 이 상태에서도 이미 작업을 수락할 수 있습니다.
  3. 스케줄러는 내부 관리가 완료될 때까지 Fee_MainFunction을 계속 호출합니다.

이후 버전에서는 Fee_MainFunction이 상태를 MEMIF_BUSY_INTERNAL에서 MEMIF_IDLE로 설정하도록 명시합니다. 이때 관리는 한 번 이상의 호출이 걸릴 수 있습니다 SWS Fee 38쪽. 다이어그램의 이전 버전에서는 EcuM에 의한 동기식 호출만 보여줍니다 SWS Fee 38쪽.

Hochlauf von FeeEcuMFeeSchMFee_Init(ConfigPtr)Modulstatus := MEMIF_BUSY_INTERNALFee_Init()작업은 여기서부터 이미 수락됨loop내부 관리가 여전히 필요함Fee_MainFunction()interne VerwaltungsoperationStatus bleibt MEMIF_BUSY_INTERNALFee_MainFunction()Fee_MainFunction()Verwaltung beendetModulstatus := MEMIF_IDLEFee_MainFunction()

시퀀스 다이어그램: Fee_Init은 모듈을 MEMIF_BUSY_INTERNAL로 전환합니다. Fee_MainFunction의 반복된 호출만이 내부 관리를 완료하고 MEMIF_IDLE로 이끕니다. 출처: [SWS_Fee_00085], [SWS_Fee_00097], SWS Fee 42쪽.

Fee_MainFunction은 요청된 읽기, 쓰기 및 삭제 작업과 내부 관리 작업을 처리합니다 [SWS_Fee_00097]. 스케줄된 함수로서 Basic Software Scheduler에 의해 직접 호출됩니다. 매개변수와 반환값이 모두 없으며 재진입이 불가능합니다 SWS Fee 40쪽.

제어 변수로서의 모듈 상태 및 작업 결과

상위 계층은 두 가지 동기 조회를 통해 호출을 제어합니다. Fee_GetStatus은 네 가지 값 중 하나를 반환합니다 [SWS_Fee_00090]:

  • MEMIF_UNINIT: 모듈이 초기화되지 않았습니다.
  • MEMIF_IDLE: 모듈이 유휴 상태입니다.
  • MEMIF_BUSY: 상위 계층의 작업이 처리 중입니다.
  • MEMIF_BUSY_INTERNAL: 내부 관리 작업이 실행 중입니다.

명세는 내부 관리 작업의 예로 사용된 플래시 메모리의 재구성(가비지 컬렉션)을 언급합니다 SWS Fee 30쪽. 새 작업은 MEMIF_IDLE과 MEMIF_BUSY_INTERNAL 모두에서 수락되며 MEMIF_BUSY으로 이어집니다 SWS Fee 28쪽. 정상적인 작업 종료 후에는 상태가 다시 MEMIF_IDLE로 떨어질 것으로 보입니다. 여기서 MEMIF_IDLE으로의 복귀가 명시적으로 입증된 것은 취소의 경우뿐입니다 SWS Fee 29쪽. 질문 Q-beae785a1ba1cbec (열림)

fee_modulstatus start UNINIT MEMIF_UNINIT start->UNINIT BUSY_INTERNAL MEMIF_BUSY_INTERNAL UNINIT->BUSY_INTERNAL Fee_Init BUSY_INTERNAL->BUSY_INTERNAL Fee_MainFunction (관리 실행 중) IDLE MEMIF_IDLE BUSY_INTERNAL->IDLE Fee_MainFunction (Verwaltung beendet) BUSY MEMIF_BUSY BUSY_INTERNAL->BUSY Fee_Read / Fee_Write angenommen IDLE->BUSY Fee_Read / Fee_Write angenommen BUSY->IDLE Fee_Cancel BUSY->IDLE Auftrag beendet (Annahme)

상태 다이어그램: MEMIF_UNINIT에서 MEMIF_BUSY_INTERNAL을 거쳐 MEMIF_IDLE 및 MEMIF_BUSY로 이어지는 모듈 상태의 수명 주기. 정상적인 작업 종료 시의 전환은 가정으로 표시되어 있습니다. 출처: [SWS_Fee_00090], SWS Fee 42쪽, SWS Fee 28쪽, SWS Fee 29쪽.

Fee_GetJobResult은 마지막으로 수락된 작업을 참조합니다 [SWS_Fee_00091], SWS Fee 31쪽. 이는 여섯 가지 결과를 구분합니다:

  • MEMIF_JOB_OK: 작업이 성공적으로 완료되었습니다.
  • MEMIF_JOB_PENDING: 작업이 대기 중이거나 아직 실행 중입니다.
  • MEMIF_JOB_CANCELED: 작업이 취소되었습니다.
  • MEMIF_JOB_FAILED: 작업이 실패했습니다.
  • MEMIF_BLOCK_INCONSISTENT: 블록에 손상된 데이터가 포함되어 있을 수 있습니다.
  • MEMIF_BLOCK_INVALID: 블록이 무효화되었으며, 읽기가 불가능합니다.

따라서 상태는 모듈을 나타내고 결과는 개별 작업을 나타내며, 둘은 별도로 쿼리해야 합니다 [SWS_Fee_00090].

읽기, 쓰기 및 블록 관리 작업

작업 서비스는 비동기적으로 작동합니다: E_OK은 작업이 수락되었음만을 의미합니다 [SWS_Fee_00087], [SWS_Fee_00088]. Fee_Read은 블록 시작 주소와 BlockOffset로부터 읽기 주소를 계산합니다. 오프셋과 길이는 해당 타입 범위의 어떤 값도 취할 수 있습니다. 이를 통해 블록의 임의 위치에서 원하는 만큼의 바이트를 읽을 수 있습니다 SWS Fee 26쪽. 플래시 드라이버에 Fls_BlankCheck이 구성되어 있는 경우, Fee_Read은 이를 사용하여 해당 영역을 읽을 수 있는지 사전에 검사합니다. 이를 통해 예를 들어 삭제되었지만 프로그래밍되지 않은 셀이 ECC 오류를 트리거하는 것을 방지합니다 [SWS_Fee_00187].

반면 Fee_Write은 항상 전체 블록을 쓰며, 오프셋은 0으로 고정됩니다 SWS Fee 28쪽. 이는 삭제 및 쓰기 작업이 항상 가상 64K 경계에서 시작해야 한다는 상위 요구사항에서 기인합니다: 블록은 전체가 작성되거나 전혀 작성되지 않습니다 RS MemHwAb 24쪽. 수락 시 Fee는 상태를 MEMIF_BUSY으로, 결과를 MEMIF_JOB_PENDING로 설정하고 E_OK를 반환합니다. Fee_Read에 대해서도 동일한 수락 조건이 적용됩니다 SWS Fee 26쪽.

중단된 쓰기 작업을 감지할 수 있도록 Fee는 각 블록에 대해 내부 정확성 정보를 유지합니다 SWS Fee 21쪽. 쓰기 작업이 시작될 때 블록은 'corrupted'로 표시되고, 성공적으로 종료된 후 다시 'not corrupted'로 표시됩니다. 이 정보는 상위 계층이 Fee_InvalidateBlock로 설정하는 유효성과 엄격히 구분되어야 합니다.

비휘발성 메모리 스택을 통한 쓰기 요청NvMMemIfFeeSchMFlsUse Case: Annahme (synchron)MemIf_Write(DeviceIndex, BlockNumber, DataBufferPtr)Fee_Write(BlockNumber, DataBufferPtr)Offset fest 0 (ganzer Block)Status := MEMIF_BUSYErgebnis := MEMIF_JOB_PENDINGE_OKE_OKUse Case: Abarbeitung (asynchron)Fee_MainFunction()Block als „corrupted“ markierenFls_Write(…) (Annahme)Fee_JobEndNotification()Block als „not corrupted“ markierenErgebnis := MEMIF_JOB_OKoptBenachrichtigung konfiguriertNvM_JobEndNotification()

시퀀스 다이어그램: 쓰기 작업은 동기적으로 수락되지만, Fee_MainFunction 및 드라이버 피드백을 통해 비동기적으로 완료됩니다. 이때 블록은 먼저 'corrupted'로 표시되고 마지막에 다시 'not corrupted'로 표시됩니다. 출처: [SWS_Fee_00088], [SWS_Fee_00095], [SWS_Fee_00098], SWS Fee 28쪽, SWS Fee 21쪽, SWS Fee 37쪽.

Fee_InvalidateBlock은 논리 블록을 유효하지 않은 것으로 선언합니다 [SWS_Fee_00092]. 이를 위해 드라이버의 삭제 함수를 호출하거나 및/또는 자체적으로 비휘발성으로 저장되어야 하는 내부 관리 정보를 수정합니다 SWS Fee 32쪽. 상위 계층이 나중에 이러한 블록을 읽으면 Fee_MainFunction은 결과를 MEMIF_BLOCK_INVALID로 설정합니다. 구성된 경우 상위 계층의 오류 알림도 호출합니다 SWS Fee 38쪽.

Fee_EraseImmediateBlock [SWS_Fee_00094]은 진단 또는 유사한 시스템 서비스를 위한 것입니다. 필요에 따라 Immediate 데이터 영역을 사전에 삭제합니다. 물리적으로 삭제할지 여부는 구현에서 결정합니다 SWS Fee 35쪽. Fee_InvalidateBlock 및 Fee_EraseImmediateBlock의 경우 R20-11은 반환값 E_NOT_OK를 DET가 활성화된 경우에만 명시적으로 제공합니다 [SWS_Fee_00092], [SWS_Fee_00094].

피드백, 취소 및 모드 변경

플래시 드라이버는 Fee_JobEndNotification을 통해 드라이버 작업의 성공적인 종료를 보고합니다 [SWS_Fee_00095]. 그러면 Fee는 필요한 블록 관리를 수행한 후, 구성된 경우 상위 계층의 작업 종료 알림을 호출합니다. 여전히 MEMIF_JOB_PENDING 상태인 결과는 MEMIF_JOB_OK으로 설정합니다 SWS Fee 37쪽. 메모리 스택의 구조에 따라 콜백은 인터럽트 레벨에서 실행되어 상위 여러 계층으로 전파될 수 있습니다. 따라서 실행 시간이 짧게 유지되어야 하며, 인터럽트 레벨에서의 호출 허용 여부는 시스템 설계에서 결정합니다 SWS Fee 36쪽.

Fee_Cancel은 플래시 드라이버의 취소 함수를 호출합니다 [SWS_Fee_00089]. 상위 계층은 MemIf_Cancel를 통해 이 서비스에 접근합니다 SWS MemIf 20쪽. 취소는 MEMIF_BUSY 상태에서만 효력이 발생합니다: Fee는 드라이버 취소를 호출하고, 내부 변수를 초기화하며, MEMIF_IDLE로 복귀합니다. DET가 활성화된 경우 Fee는 모듈이 초기화되었는지 사전에 확인합니다 SWS Fee 29쪽.

Fee_Cancel에서는 릴리스 간 차이가 있다. 언급된 이후 버전에서는 해당 서비스를 비동기로 분류하는 반면, R20-11에서는 동기로 분류한다 [SWS_Fee_00089]. R20-11에서는 동기 분류가 기준이 된다.

fee_cancel start aufruf Fee_Cancel() aufgerufen start->aufruf d_det DET 활성 및 상태가 MEMIF_UNINIT인가? aufruf->d_det e_uninit FEE_E_UNINIT melden d_det->e_uninit 예 d_busy 작업 대기 중 (상태 MEMIF_BUSY)인가? d_det->d_busy 아니요 ende e_uninit->ende Abbruch (Annahme) fls 플래시 드라이버의 취소 함수 호출 d_busy->fls 예 e_cancel FEE_E_INVALID_CANCEL melden d_busy->e_cancel 아니요 reset 내부 변수 리셋, 상태 := MEMIF_IDLE fls->reset reset->ende e_cancel->ende

활동 다이어그램: Fee_Cancel은 DET 검사 및 모듈 상태에 따라 분기한다. 보류 중인(pending) 작업만 취소되며, 그렇지 않은 경우 FEE_E_INVALID_CANCEL이 보고된다. 출처: [SWS_Fee_00089], [SWS_Fee_91002], [SWS_Fee_00010], SWS Fee 29쪽.

Fee_SetMode은(는) 하위 플래시 드라이버의 동작 모드를 전환한다 [SWS_Fee_00086]. 해당 다이어그램은 NvM → MemIf_SetMode → Fee_SetMode → Fls_SetMode의 호출 체인을 보여준다 SWS Fee 39쪽. Fee_GetVersionInfo은(는) 유일한 재진입 가능한(reentrant) Fee 서비스이다 [SWS_Fee_00093]. DET가 활성화된 경우, 이 서비스는 전달된 포인터를 NULL에 대해 검사한다 SWS Fee 34쪽.

구성 및 통합

Fee는 Fee_Init에 전달되는 Fee_ConfigType을(를) 통해 구성을 수신한다 [SWS_Fee_00085], [SWS_Fee_00188]. 이전 명세서 버전의 include 구조는 다음과 같은 분할을 보여준다 SWS Fee 11쪽:

  • Fee_Cfg.h은(는) MemIf_Types.h 및 Fls.h을(를) 포함하며, 선택적으로 NvM_Cbk.h도 포함한다.
  • Fee_Lcfg.c 및 Fee_PBcfg.c은(는) 구성 데이터를 포함한다.
  • 스케줄러는 SchM_Fee.h을(를) 통해 연결되며, DET는 선택적으로 Det.h을(를) 통해 연결된다.

R20-11의 경우 이 그림은 참고용으로만 사용된다. Fee가 공급업체별 라이브러리로 구현된 경우, 시퀀스 다이어그램은 드라이버 호출이 아니라 EcuM 및 MemIf와의 관계에 대해서만 구속력을 갖는다 SWS Fee 42쪽.

오류가 발생한 경우의 동작

Fee는 개발 오류로 5가지 코드를 정의한다 [SWS_Fee_00010]:

  • FEE_E_UNINIT (0x01): 초기화 전에 서비스가 호출됨.
  • FEE_E_INVALID_BLOCK_NO (0x02): 유효하지 않은 블록 번호.
  • FEE_E_INVALID_BLOCK_OFS (0x03): 유효하지 않은 블록 오프셋.
  • FEE_E_PARAM_POINTER (0x04): 유효하지 않은 데이터 포인터.
  • FEE_E_INVALID_BLOCK_LEN (0x05): 유효하지 않은 길이 지정.

R20-11에는 두 가지 코드가 추가된다 [SWS_Fee_91002]. FEE_E_BUSY (0x06)은(는) 사용자 작업이 처리되는 동안의 호출에 적용된다. FEE_E_INVALID_CANCEL (0x08)은(는) 보류 중인 작업이 없는 Fee_Cancel에 적용된다. 따라서 MEMIF_BUSY 상태에서 요청된 새 작업은 거부되고 E_NOT_OK(으)로 응답될 것으로 보인다. 질문 Q-92062834653929da (열림) 관련 규칙은 여기에서 불완전하게만 제공된다 SWS Fee 28쪽.

플래시 메모리의 오류는 플래시 드라이버가 감지하며, Fee가 이에 어떻게 반응하는지는 구현에 따라 다르다 ErrorDescription 40쪽. 보고는 구성에 따라 두 가지 방식 중 하나로 수행된다. MemIf가 Fee_GetJobResult을(를) 쿼리하여 MEMIF_JOB_FAILED을(를) 수신하거나, Fee가 NvM_JobErrorNotification을(를) 능동적으로 호출한다. 복구는 NVRAM Manager가 담당한다. 상위 계층은 Fee_GetStatus의 MEMIF_UNINIT을(를) 통해 초기화되지 않은 모듈을 인식한다 ErrorDescription 53쪽, [SWS_Fee_00090].

플래시 오류 보고FlsFeeMemIfNvMFee_JobErrorNotification() (Annahme)implementierungsspezifische FehlerbehandlungErgebnis := MEMIF_JOB_FAILEDaltCallback konfiguriertNvM_JobErrorNotification()Abfrage per PollingFee_GetJobResult()MEMIF_JOB_FAILEDNVRAM Manager에 의한 복구

시퀀스 다이어그램: 드라이버 오류는 NvM 콜백을 통하거나 Fee_GetJobResult 폴링을 통해 선택적으로 상위 계층에 도달한다. 출처: [SWS_Fee_00096], [SWS_Fee_00099], [SWS_Fee_00091], ErrorDescription 40쪽.

데이터 일관성과 관련하여 R22-11의 다이어그램은 다음 정보 체인을 설명한다 ErrorDescription 64쪽:

  1. Fee는 읽은 데이터의 일관성을 검사하고 오류를 NVRAM Manager로 전달한다.
  2. NVRAM Manager는 DEM에 NVM_E_INTEGRITY_FAILED을(를) 보고한다.
  3. NVRAM Manager는 구성된 복구 절차(다시 읽기, 리던던트 블록 또는 ROM 블록)를 시작한다.
  4. 이들이 실패하면 결과 NVM_REQ_INTEGRITY_FAILED을(를) 설정한다.

Fee 측에서는 이것이 결과 MEMIF_BLOCK_INCONSISTENT에 해당할 것으로 추정된다 [SWS_Fee_00091]. 질문 Q-a1846c349d831e17 (열림)

fee_konsistenz Fee Fee Fee->Fee (1) 읽은 데이터의 일관성 검사 NvM NvM (NVRAM Manager) Fee->NvM (2) Fehlerstatus weiterleiten NvM->NvM (4) Wiederherstellung: read retry, redundanter Block, ROM-Block Dem DEM NvM->Dem (3) NVM_E_INTEGRITY_FAILED Ergebnis NvM의 작업 결과 NvM->Ergebnis (5)/(6) Wiederherstellung gescheitert: NVM_REQ_INTEGRITY_FAILED

콜라보레이션 다이어그램: 일관성 오류는 Fee에서 NvM으로 전달된다. NvM은 이를 DEM에 보고하고, 복구를 시도하며, 실패 시 NvM 결과를 설정한다(R22-11 기준). 출처: ErrorDescription 64쪽.

더 자세한 증거

수락 조건, 콜백 동작 및 메인 함수를 포함한 세부 규칙은 일부 SWS Fee 38쪽과(와) 같은 이후 명세서 버전에서 가져온 것이다. R20-11과 다른 부분은 위에 언급되어 있다. 주요 근거:

Fee(classic, R20-11) 명세서 발췌본을 기반으로 AI가 생성한 가이드라인. 링크된 요구사항이 기준이 된다. 다른 릴리스의 문서 내용은 별도로 표시되며, 가설은 해석으로 표시된다.

Flash EEPROM Emulation (Fee)

Provides emulation of EEPROM-like data blocks on Flash memory devices.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

함수 Fee_Init [SWS_Fee_00085] 📄 PDF

void Fee_Init (const Fee_ConfigType* ConfigPtr);

Service to initialize the FEE module.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: bf4a0ee4e182 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Fee_Init은 Flash EEPROM Emulation 모듈(FEE)을 초기화하기 위한 핵심 서비스 역할을 합니다 [SWS_Fee_00085]. 호출은 서비스 ID 0x00과 함께 Fee.h에 선언된 인터페이스를 통해 수행됩니다 [SWS_Fee_00085]. 유일한 입력 매개변수로 ConfigPtr가 전달되며, 이는 const Fee_ConfigType* 타입의 선택된 구성 데이터 세트에 대한 포인터 역할을 합니다 [SWS_Fee_00085]. 추가적인 입출력 매개변수 또는 순수 출력 매개변수는 정의되어 있지 않으며, 함수는 반환값을 제공하지 않습니다(void) [SWS_Fee_00085].

기본적인 초기화 함수임에도 불구하고, 사양서에서 실행 시맨틱은 비동기식(Asynchronous)으로 명시적으로 분류되어 있습니다 [SWS_Fee_00085]. 해석: 함수가 비동기적으로 동작하므로 Fee_Init의 호출은 모듈 초기화를 단지 트리거할 뿐이며, 시간이 많이 소요되는 초기화 단계는 백그라운드에서 논블로킹 방식으로 완료될 것으로 추정됩니다 [SWS_Fee_00085]. 질문 Q-7d91ac2e51869606 (열림)

동시성 및 호출 컨텍스트와 관련하여, 사양서에는 Fee_Init이 재진입 불가(Non Reentrant)로 규정되어 있습니다 [SWS_Fee_00085]. 따라서 이 함수는 어떤 경우에도 서로 다른 컨텍스트에서 병렬로 또는 중첩되어 호출되어서는 안 됩니다 [SWS_Fee_00085].

이 사용 지침은 AI에 의해 작성되었으며, AUTOSAR Classic Release R20-11 사양서만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Fee_SetMode [SWS_Fee_00086] 📄 PDF

void Fee_SetMode (MemIf_ModeType Mode);

Function to switch the mode of the underlying Flash Driver

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 840a1fe0d62e 출처 열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 호출 컨텍스트

함수 Fee_SetMode은(는) 기반 플래시 드라이버([SWS_Fee_00086])의 작동 모드를 전환하는 역할을 합니다. 이 함수는 서비스 ID 0x01을(를) 가진 헤더 파일 Fee.h을(를) 통해 제공됩니다([SWS_Fee_00086]). 이 서비스는 유일한 입력 매개변수로 플래시 드라이버의 원하는 작동 모드를 결정하는 Mode(MemIf_ModeType 타입)을(를) 기대합니다([SWS_Fee_00086]). 출력 매개변수나 반환값(void)은 전달되지 않습니다([SWS_Fee_00086]).

비동기 시맨틱 및 동시성

인터페이스는 비동기로 명시되어 있습니다([SWS_Fee_00086]). 호출 후 함수 값이 반환되지 않으므로, 플래시 하드웨어의 실제 전환 과정은 백그라운드에서 지연되어 실행될 것으로 보입니다. 질문 Q-9dbc267f51e150af (열림) 호출 컨텍스트와 관련하여 Fee_SetMode은(는) 재진입 불가능(Non Reentrant)으로 분류되어 있습니다([SWS_Fee_00086]). 따라서 호출자는 서로 다른 스레드 또는 태스크에서 함수가 동시에 호출되거나 중단하며 호출되지 않도록 보장해야 합니다.

오류 처리 및 상호 작용

본 사양 발췌문에는 Fee_SetMode에 대한 특정 오류 코드, DET 오류 메시지 또는 DEM 이벤트가 정의되어 있지 않습니다([SWS_Fee_00086]). 마찬가지로 다른 요구사항과의 직접적인 관계도 명시되어 있지 않습니다. 해석: 유효하지 않은 모드 값에 대한 검사는 호출자에 대한 명시적인 오류 반환 없이 드라이버 내부 또는 Fee 모듈에서 처리될 것으로 보입니다. 질문 (열림)

이 텍스트는 AI에 의해 작성되었으며, 전적으로 AUTOSAR 릴리스 R20-11 사양을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Fee_Read [SWS_Fee_00087] 📄 PDF

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

Service to initiate a read job.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 51320bacc37c 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

함수 Fee_Read은 Flash EEPROM Emulation 모듈에서 비동기 읽기 요청을 시작하는 데 사용되며 헤더 파일 Fee.h을 통해 선언됩니다 [SWS_Fee_00087]. 이 함수는 서비스 ID 0x02을 가지며 다음 전달 매개변수를 받습니다 [SWS_Fee_00087]:

  • Block Number: 플래시 메모리 내 시작 주소를 동시에 나타내는 논리 블록의 번호입니다.
  • Block Offset: 해당 블록 내의 읽기 오프셋입니다.
  • Length: 블록에서 읽을 바이트 수입니다.
  • Data Buffer Ptr: 읽어온 데이터를 저장하기 위한 대상 버퍼에 대한 포인터입니다.

함수는 반환값으로 Std_ReturnType을 반환합니다. E_OK은 요청된 읽기 요청이 모듈에 의해 수락되었음을 나타내고, E_NOT_OK는 요청이 거부되었음을 나타냅니다 [SWS_Fee_00087].

동시성 및 제약사항

Fee_Read의 호출은 재진입 불가(Non Reentrant) 및 비동기식(Asynchronous)으로 지정되어 있습니다 [SWS_Fee_00087].

플래시 드라이버와의 상호작용

플래시 드라이버에 함수 Fls_BlankCheck이 구성되어 있는 경우, Fee_Read은 이 함수를 호출해야 합니다 [SWS_Fee_00187]. 이는 삭제되었으나 아직 프로그래밍되지 않은 플래시 셀로 인해 ECC 오류 등이 발생하는 일 없이 메모리 영역을 읽을 수 있는지 사전에 검사하기 위한 것입니다 [SWS_Fee_00187].

이 사용 지침은 AUTOSAR CP R20-11 사양을 기반으로 자동으로 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Fee_Write [SWS_Fee_00088] 📄 PDF

Std_ReturnType Fee_Write (uint16 BlockNumber, const uint8* DataBufferPtr);

Service to initiate a write job.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 46c33a39dfc2 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

함수 Fee_Write은 [SWS_Fee_00088]에 따라 Flash EEPROM Emulation 모듈에서 쓰기 요청을 시작하는 서비스 역할을 합니다. 선언은 헤더 Fee.h를 통해 제공됩니다. 호출은 비동기식으로 이루어집니다. 즉, 함수는 쓰기 프로세스를 트리거하기만 하며 물리적 쓰기 프로세스가 완료될 때까지 블로킹되지 않습니다.

쓰기 데이터의 전달을 위해 두 개의 매개변수가 정의되어 있습니다 [SWS_Fee_00088]:

  • BlockNumber(uint16): 논리 블록 번호를 나타내며 동시에 EEPROM 내 이 블록의 시작 주소를 정의합니다.
  • DataBufferPtr(const uint8*): 기록할 페이로드를 포함하는 데이터 버퍼에 대한 포인터입니다.

반환값 및 동시성

Std_ReturnType 타입의 반환값은 모듈이 쓰기 요청을 수락할 수 있었는지 여부를 즉시 알립니다 [SWS_Fee_00088]:

  • E_OK: 요청된 작업이 모듈에 의해 수락되었습니다.
  • E_NOT_OK: 작업이 모듈에 의해 수락되지 않았습니다.

동시성과 관련하여 Fee_Write은 재진입 불가(Non Reentrant)로 명시되어 있습니다 [SWS_Fee_00088]. 따라서 호출자는 서로 다른 컨텍스트에서 이 함수가 동시에 호출되지 않도록 보장해야 합니다. 함수의 서비스 ID는 0x03입니다 [SWS_Fee_00088]. 해석: 실제 데이터의 물리적 전송은 E_OK가 반환된 후 백그라운드에서 후속 모듈 주기를 통해 비동기적으로 처리될 것으로 추정됩니다. 질문 Q-8bedddcf2371f6bf (열림)

이 텍스트는 AI에 의해 생성되었으며 가이드 역할을 합니다. 참조된 AUTOSAR 사양이 표준입니다.

함수 Fee_Cancel [SWS_Fee_00089] 📄 PDF

void Fee_Cancel (void);

Service to call the cancel function of the underlying flash driver.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: e038d068e179 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Fee_Cancel은 취소 요청을 하위 플래시 드라이버로 전달하기 위한 모듈 Fee의 동기식 서비스입니다 [SWS_Fee_00089]. 이 서비스는 헤더 Fee.h을 통해 선언되며 숫자 서비스 ID 0x04를 갖습니다 [SWS_Fee_00089].

사용법 및 호출 컨텍스트

인터페이스의 시그니처는 void Fee_Cancel (void)입니다 [SWS_Fee_00089]. 호출에 대해서는 사양에 따라 다음 매개변수 및 실행 특성이 적용됩니다:

  • 매개변수: 이 함수는 전달 매개변수를 요구하지 않으며, 입력, 입출력 또는 출력 매개변수가 존재하지 않습니다 [SWS_Fee_00089].
  • 반환값: 호출자에게 아무런 반환값도 반환되지 않습니다 [SWS_Fee_00089].
  • 동기성: 함수 호출의 처리는 동기식(Synchronous)으로 규정되어 있습니다 [SWS_Fee_00089].

동시성 및 제약사항

동시성 동작과 관련하여 Fee_Cancel은 재진입 불가(Non Reentrant)로 지정되어 있습니다 [SWS_Fee_00089]. 따라서 호출 인스턴스는 서로 다른 태스크 또는 인터럽트 컨텍스트에서 함수가 병렬로 또는 중첩되어 호출되지 않도록 보장해야 합니다.

상호 작용 및 오류 처리

Fee_Cancel의 핵심 역할은 하위 플래시 드라이버의 취소 함수를 호출하는 것입니다 [SWS_Fee_00089]. 이 함수에 대해 페이로드에 정의된 특정 오류 코드, 반환값 또는 오류 메시지는 없습니다. 오류 처리가 기술되어 있지 않으므로 오류 발생 시의 동작은 호출된 플래시 드라이버의 구현에 따라 달라질 것으로 추정됩니다. 질문 Q-bb066b6c05a2eb12 (열림)

이 사용 지침은 자동으로 생성되었으며 AUTOSAR 릴리스 R20-11의 사양 내용만을 기반으로 합니다.

함수 Fee_GetStatus [SWS_Fee_00090] 📄 PDF

MemIf_StatusType Fee_GetStatus (void);

Service to return the status. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

함수 Fee_GetJobResult [SWS_Fee_00091] 📄 PDF

MemIf_JobResultType Fee_GetJobResult (void);

Service to query the result of the last accepted job issued by the upper layer software.

함수 Fee_InvalidateBlock [SWS_Fee_00092] 📄 PDF

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);

Service to invalidate a logical block.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 93ce420cf23c 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Fee_InvalidateBlock은(는) 플래시 메모리 내의 논리 블록을 무효화하는 서비스 역할을 합니다 [SWS_Fee_00092]. 헤더 Fee.h을(를) 통해 제공되며 서비스 ID 0x07을(를) 갖습니다 [SWS_Fee_00092].

사용법 및 매개변수

호출은 비동기로 수행되므로 실제 무효화는 백그라운드 작업으로 트리거됩니다 [SWS_Fee_00092]:

  • Block Number (uint16, in): 논리 블록 번호를 나타내며, 이는 동시에 플래시 메모리 내 블록의 시작 주소를 결정합니다 [SWS_Fee_00092].
  • 반환값 (Std_ReturnType): 무효화 요청이 모듈에 의해 성공적으로 수락되었으면 E_OK을(를) 반환합니다[SWS_Fee_00092].

오류 처리

모듈이 요청을 수락할 수 없었던 경우 E_NOT_OK이(가) 반환됩니다. 그러나 사양에 따르면 이 오류 반환은 명시적으로 DET가 활성화된 구성(only if DET is enabled)으로 제한됩니다[SWS_Fee_00092]. 해석: DET가 비활성화된 경우, 사양에서 이 오류 값의 반환을 DET 활성화와 연결하고 있으므로 요청 거부가 E_NOT_OK을(를) 통해 호출자에게 전달되지 않을 것으로 보입니다. 질문 Q-2e54187ddb69e481 (열림)

동시성 및 제약 조건

인터페이스는 재진입 불가능(Non Reentrant)으로 선언되어 있습니다 [SWS_Fee_00092]. 따라서 호출자는 이전 함수 호출이 활성 상태인 동안 Fee_InvalidateBlock의 병렬 또는 중단 호출이 발생하지 않도록 보장해야 합니다 [SWS_Fee_00092].

이 텍스트는 AUTOSAR R20-11 사양을 기반으로 AI에 의해 생성되었습니다.

함수 Fee_EraseImmediateBlock [SWS_Fee_00094] 📄 PDF

Std_ReturnType Fee_EraseImmediateBlock (uint16 BlockNumber);

Service to erase a logical block.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: c9619585e034 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 매개변수

함수 Fee_EraseImmediateBlock은(는) 논리 블록을 지우기 위한 비동기 서비스를 제공하며 헤더 파일 Fee.h을(를) 통해 선언됩니다 [SWS_Fee_00094]. 이 함수는 16진수 서비스 ID 0x09을(를) 갖습니다 [SWS_Fee_00094]. 유일한 입력 매개변수는 uint16 타입의 Block Number이며, 이는 논리 블록의 번호를 지정하고 동시에 EEPROM 내의 시작 주소를 나타냅니다 [SWS_Fee_00094].

반환값 및 오류 처리

반환값으로 인터페이스는 상태 Std_ReturnType을(를) 제공합니다 [SWS_Fee_00094]. 값 E_OK은(는) 모듈이 요청된 지우기 작업을 성공적으로 수락했음을 확인합니다 [SWS_Fee_00094]. 작업이 모듈에 의해 수락되지 않은 경우 함수는 E_NOT_OK을(를) 반환합니다. 그러나 사양에 따르면 이 반환값은 DET 오류 모니터링이 활성화된 경우에만 발생합니다 [SWS_Fee_00094].

동시성 및 제약사항

동시성 및 호출 조건과 관련하여 Fee_EraseImmediateBlock은(는) 재진입 불가능(Non Reentrant)으로 분류되며 비동기식으로 작동합니다 [SWS_Fee_00094]. 따라서 호출 모듈은 모듈이 여전히 처리를 진행하는 동안 동일한 인터페이스에 대한 추가 호출이 발생하지 않도록 보장해야 합니다.

AUTOSAR 사양에 기반한 컨텍스트별 설명.

함수 Fee_JobEndNotification [SWS_Fee_00095] 📄 PDF

void Fee_JobEndNotification (void);

Service to report to this module the successful end of an asynchronous operation. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 527f9c248660 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Fee_JobEndNotification은 비동기 작업의 성공적인 완료를 모듈 Fee에 알리는 데 사용됩니다([SWS_Fee_00095]).

사용 및 시그니처와 관련하여 다음 규정이 적용됩니다:

  • 시그니처 및 매개변수: 이 함수는 void Fee_JobEndNotification (void); 시그니처를 갖습니다. 입력, 입출력 또는 출력 매개변수를 요구하지 않으며 반환값을 제공하지 않습니다([SWS_Fee_00095]).
  • 헤더: 선언은 Fee.h을 통해 제공됩니다([SWS_Fee_00095]).
  • 서비스 ID: 함수는 서비스 ID 0x10을 통해 정의됩니다([SWS_Fee_00095]).
  • 동기성: 호출 자체는 동기식으로 지정되어 있습니다([SWS_Fee_00095]).
  • 동시성: 루틴은 재진입 불가(Non Reentrant)로 분류되어 있습니다([SWS_Fee_00095]).

상호작용 및 호출 컨텍스트: 일반적으로 이 콜백은 비동기 쓰기 또는 삭제 작업의 종료를 알리기 위해 하위 모듈(예: 플래시 드라이버)에 의해 호출될 것으로 추정됩니다. 질문 Q-8a3ccdba2024001f (열림) Non Reentrant 특성으로 인해 호출자는 경쟁 호출이 발생하지 않도록 보장해야 합니다([SWS_Fee_00095]).

이 텍스트는 R20-11용 AUTOSAR 사양을 기반으로 AI에 의해 생성되었습니다.

함수 Fee_JobErrorNotification [SWS_Fee_00096] 📄 PDF

void Fee_JobErrorNotification (void);

Service to report to this module the failure of an asynchronous operation.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a8e92b7001f6 출처 열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Fee_JobErrorNotification은(는) 비동기 작업의 실패를 Fee 모듈에 알리기 위한 알림 서비스 역할을 합니다 [SWS_Fee_00096]. 인터페이스는 시그니처 void Fee_JobErrorNotification (void)을(를) 가지며 헤더 Fee.h을(를) 통해 사용할 수 있습니다 [SWS_Fee_00096]. 식별자 0x11을(를) 가진 서비스에는 입력, 입출력 또는 출력 매개변수가 전달되지 않습니다 [SWS_Fee_00096]. 마찬가지로 호출 시 호출자에게 반환값이 반환되지 않습니다 [SWS_Fee_00096].

호출의 실행 시맨틱은 동기식(Synchronous)으로 명시되어 있습니다 [SWS_Fee_00096]. 런타임 동작에는 함수가 재진입 불가능(Non Reentrant)이라는 핵심 제약 사항이 적용됩니다 [SWS_Fee_00096]. 해석: 호출자(하위 드라이버 모듈일 것으로 추정됨)는 알림이 동시적으로 발생하거나 인터럽트 컨텍스트에서 병렬로 트리거되지 않도록 보장해야 합니다. 질문 Q-7d4c9618bf385721 (열림)

오류 처리와 관련하여 매개변수가 없는 인터페이스를 통해서는 특정 오류 코드가 전송되지 않으며, 이 호출에 대해 모듈별 DET 또는 DEM 메시지가 문서화되어 있지 않습니다 [SWS_Fee_00096]. Fee 모듈은 보고된 오류 사례를 활성 비동기 작업에 내부적으로 할당하고 이에 따라 상태를 조정할 것으로 보입니다. 질문 Q-1fa43444195edb62 (열림)

이 텍스트는 AUTOSAR R20-11 사양을 기반으로 AI에 의해 생성되었습니다.

함수 Fee_MainFunction [SWS_Fee_00097] 📄 PDF

void Fee_MainFunction (void);

Service to handle the requested read / write / erase jobs and the internal management operations.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 341cf633fe8b 출처 열린 질문 (3)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Fee_MainFunction은(는) [SWS_Fee_00097]에 따라 요청된 읽기, 쓰기 및 지우기 작업을 중앙에서 처리하고 모듈의 내부 관리 작업을 실행하는 데 사용됩니다. 이 함수는 시그니처 void Fee_MainFunction (void); 및 서비스 ID 0x12(으)로 명시되어 있습니다 [SWS_Fee_00097].

인터페이스 및 사용과 관련하여 함수는 전달 매개변수를 처리하지 않으며 반환값을 가지지 않습니다 [SWS_Fee_00097]. 헤더 SchM_Fee.h을(를) 통해 제공된다는 점에서 볼 때, 호출은 기본 소프트웨어의 스케줄 관리(Schedule Management)에 의해 주기적으로 수행될 것으로 추정할 수 있습니다. 질문 Q-5ef9bcc5f438cb89 (열림) 이 설명은 이전에 비동기식으로 전달된 작업들이 이러한 주기적 사이클 내에서 순차적으로 처리될 것임을 시사합니다.

오류 시나리오, 재진입성 및 특정 호출 조건에 대해 사양에는 별도의 식별자나 오류 코드가 포함되어 있지 않습니다 [SWS_Fee_00097]. 해석: 모듈 상태를 위한 중앙 주기 제어 함수로서 Fee_MainFunction은(는) 재진입이 불가능할 것으로 보이므로, 여러 태스크로부터의 동시 호출은 피해야 합니다. 질문 (열림)

이 텍스트는 AUTOSAR 사양 R20-11을 기반으로 AI에 의해 생성되었습니다.

함수 NvM_JobEndNotification [SWS_Fee_00098] 📄 PDF

void NvM_JobEndNotification (void);

-

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 4ab59e2b5ce3 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 시그니처

함수 NvM_JobEndNotification은(는) Flash EEPROM Emulation(Fee) 사양에서 서비스로 정의되어 있으며 헤더 파일 Nvm.h을(를) 통해 제공됩니다([SWS_Fee_00098]). 구문 void NvM_JobEndNotification (void);에 따라 함수는 입력 및 출력 매개변수를 요구하지 않으며 반환값을 제공하지 않습니다([SWS_Fee_00098]). 실행 동작에는 동기 시맨틱이 정의되어 있습니다(Sync/Async: true)([SWS_Fee_00098]).

동시성 및 제약사항

재진입성과 관련하여 이 함수는 Don't care(으)로 분류됩니다([SWS_Fee_00098]). 사양에는 호출 컨텍스트와 관련된 특정 제한 사항이 명시되어 있지 않습니다. 이 요소에 대해 DET 또는 DEM 메시지를 통한 별도의 오류 처리는 명시되어 있지 않습니다([SWS_Fee_00098]).

상호작용 및 기능적 분류

이 함수는 Flash EEPROM Emulation 사양의 일부이지만 설명 필드에는 추가 세부정보가 포함되어 있지 않습니다([SWS_Fee_00098]). 해석: 명칭 및 Nvm.h에서의 선언으로 볼 때, 이 함수는 Fee 모듈이 비동기적으로 처리된 작업의 정상적인 완료를 NvM 모듈에 신호하는 콜백 인터페이스 역할을 할 것으로 보입니다. 질문 Q-ee00bece2e28a0e4 (열림)

이 사용 지침은 AUTOSAR Release R20-11 사양을 기반으로 자동 생성되었습니다.

함수 NvM_JobErrorNotification [SWS_Fee_00099] 📄 PDF

void NvM_JobErrorNotification (void);

-

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 8c7c531abb5f 출처 열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 호출 컨텍스트

함수 NvM_JobErrorNotification은(는) [SWS_Fee_00099]에 따라 동기 인터페이스(Sync/ Async true)(으)로 정의됩니다. 선언은 헤더 파일 Nvm.h을(를) 통해 제공됩니다([SWS_Fee_00099]). 시그니처는 void NvM_JobErrorNotification (void)이며, 이에 따라 입력, 입출력 또는 출력 매개변수를 허용하지 않고 반환값을 제공하지 않습니다([SWS_Fee_00099]). 식별자와 Fee 모듈에 대한 할당에 비추어 볼 때, 이 콜백 함수는 플래시 EEPROM 에뮬레이션 드라이버에서 비동기 작업 처리 중 오류가 발생했을 때 NVRAM 관리에 알리는 역할을 할 것으로 보입니다. 질문 Q-4d70f8d384e04832 (열림)

오류 처리 및 동시성

[SWS_Fee_00099]에는 특정 오류 코드, DET 메시지 또는 DEM 이벤트가 나열되어 있지 않습니다. 상태 또는 오류 매개변수가 전달되지 않으므로, 상세한 오류 분석은 내부 모듈 상태나 드라이버의 후속 쿼리를 기반으로 할 것으로 추정됩니다. 질문 Q-c45e72b67236c432 (열림) 동시성과 관련하여 [SWS_Fee_00099]은 재진입성에 대해 Don't care 기준을 명시하고 있으며, 이에 따라 요구사항 측면에서 재진입성에 대한 제한적 규정이 공식화되어 있지 않습니다.

이 텍스트는 사양을 기반으로 AI에 의해 생성되었습니다.

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

Record
AUTOSAR/AP/record/CP_MOD_Fee
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Fee@rel:R20-11#e0fc59dc
Content hash
e0fc59dc
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_FlashEEPROMEmulation.pdf#nameddest=SWS_Fee_00085

초기화 및 상태

Service to return the status. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

MemIf_StatusType Fee_GetStatus (void);

Service to return the version information of the FEE module.

void Fee_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);
Fee_Init 함수

Service to initialize the FEE module.

void Fee_Init (const Fee_ConfigType* ConfigPtr);

서비스

Fee_Cancel 함수

Service to call the cancel function of the underlying flash driver.

void Fee_Cancel (void);

Service to erase a logical block.

Std_ReturnType Fee_EraseImmediateBlock (uint16 BlockNumber);

Service to query the result of the last accepted job issued by the upper layer software.

MemIf_JobResultType Fee_GetJobResult (void);

Service to invalidate a logical block.

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);

Service to report to this module the successful end of an asynchronous operation. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_FlashEEPROMEmulation

void Fee_JobEndNotification (void);

Service to report to this module the failure of an asynchronous operation.

void Fee_JobErrorNotification (void);
Fee_Read 함수

Service to initiate a read job.

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

Function to switch the mode of the underlying Flash Driver

void Fee_SetMode (MemIf_ModeType Mode);
Fee_Write 함수

Service to initiate a write job.

Std_ReturnType Fee_Write (uint16 BlockNumber, const uint8* DataBufferPtr);

-

void NvM_JobEndNotification (void);

-

void NvM_JobErrorNotification (void);

주기적

Service to handle the requested read / write / erase jobs and the internal management operations.

void Fee_MainFunction (void);

타입

Configuration data structure of the Fee module.