DEENESPTFRRUARHIKOZHNL

AUTOSAR Classic Memory Services

Die Memory Services verwalten nicht-flüchtige Datenblöcke (NvM), abstrahieren Flash- und EEPROM-Technologien (MemIf, Fee, Ea) und gewährleisten Datenkonsistenz und Datensicherheit über ECU-Abschaltzyklen hinweg.

Карта тем

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

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

BndM

BndM_Init функция

Initializes or reinitializes this module.

void BndM_Init(const BndM_ConfigType* ConfigPtr);

This callback function is called when a FLS job has been finished with positive result.

void BndM_JobEndNotification(void);

This callback function is called when a FLS job has been canceled or finished with negative result.

void BndM_JobErrorNotification(void);
BndM_MainFunction функция

Schedule function for the background processing.

void BndM_MainFunction(void);
BndM_WriteCancel функция

Cancels the writing

void BndM_WriteCancel(void);

Unique identification of an bulk nv block. The BndM_BlockId is assigned by the BndM.

The elements of this structure data type is the C-structured representation of the configured ImplementationDataPrototype.

This type of the external data structure shall contain the post build initialization data for the BndM.

Result of the asynchronous job finish notifications

Ea

Ea_Cancel функция

Cancels the ongoing asynchronous operation.

void Ea_Cancel (void);
Ea_EraseImmediateBlock функция

Erases the block Block Number.

Std_ReturnType Ea_EraseImmediateBlock (uint16 BlockNumber);
Ea_GetJobResult функция

Service to return the Job Result.

MemIf_JobResultType Ea_GetJobResult (void);
Ea_GetStatus функция

Service to return the Status.

MemIf_StatusType Ea_GetStatus (void);
Ea_GetVersionInfo функция

Service to get the version information of this module.

void Ea_GetVersionInfo (Std_VersionInfoType* VersionInfoPtr);
Ea_Init функция

Initializes the EEPROM abstraction module.

void Ea_Init (const Ea_ConfigType* ConfigPtr);
Ea_InvalidateBlock функция

Invalidates the block Block Number.

Std_ReturnType Ea_InvalidateBlock (uint16 BlockNumber);
Ea_JobEndNotification функция

Service to report to this module the successful end of an asynchronous operation.

void Ea_JobEndNotification (void);

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

void Ea_JobErrorNotification (void);
Ea_MainFunction функция

Service to handle the requested jobs and the internal management operations.

void Ea_MainFunction (void);
Ea_Read функция

Reads Length bytes of block Blocknumber at offset Block Offset into the buffer Data Buffer Ptr.

Std_ReturnType Ea_Read (uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);
Ea_SetMode функция

Function to switch the mode of the underlying EEPROM Driver

void Ea_SetMode (MemIf_ModeType Mode);
Ea_Write функция

Writes the contents of the Data Buffer Ptr to the block Block Number.

Std_ReturnType Ea_Write (uint16 BlockNumber, const uint8* DataBufferPtr);
NvM_JobEndNotification функция

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

void NvM_JobEndNotification (void);

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

void NvM_JobErrorNotification (void);

Configuration data structure of the Ea module.

Eep

Eep_Cancel функция

Cancels a running job.

void Eep_Cancel(void);
Eep_Compare функция

Compares a data block in EEPROM with an EEPROM block in the memory.

Std_ReturnType Eep_Compare(Eep_AddressType EepromAddress, const uint8* DataBufferPtr, Eep_LengthType Length);
Eep_Erase функция

Service for erasing EEPROM sections.

Std_ReturnType Eep_Erase(Eep_AddressType EepromAddress, Eep_LengthType Length);
Eep_GetJobResult функция

This service returns the result of the last job.

MemIf_JobResultType Eep_GetJobResult(void);
Eep_GetStatus функция

Returns the EEPROM status.

MemIf_StatusType Eep_GetStatus(void);
Eep_GetVersionInfo функция

Service to get the version information of this module.

void Eep_GetVersionInfo(Std_VersionInfoType* versioninfo);
Eep_Init функция

Service for EEPROM initialization.

void Eep_Init(const Eep_ConfigType* ConfigPtr);
Eep_JobEndNotification функция

This callback function provided by the module user is called when a job has been completed with a positive result.

void Eep_JobEndNotification(void);

This callback function provided by the module user is called when a job has been canceled or finished with negative result.

void Eep_JobErrorNotification(void);
Eep_MainFunction функция

Service to perform the processing of the EEPROM jobs (read/write/erase/compare) .

void Eep_MainFunction(void);
Eep_Read функция

Reads from EEPROM.

Std_ReturnType Eep_Read(Eep_AddressType EepromAddress, uint8* DataBufferPtr, Eep_LengthType Length);
Eep_SetMode функция

Sets the mode.

void Eep_SetMode(MemIf_ModeType Mode);
Eep_Write функция

Writes to EEPROM.

Std_ReturnType Eep_Write(Eep_AddressType EepromAddress, const uint8* DataBufferPtr, Eep_LengthType Length);

Used as address offset from the configured EEPROM base address to access a certain EEPROM memory area.

This is the type of the external data structure containing the initialization data for the EEPROM driver.

Specifies the number of bytes to read/write/erase/compare.

Fee

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);
Fee_GetJobResult функция

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

MemIf_JobResultType Fee_GetJobResult (void);
Fee_GetStatus функция

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

MemIf_StatusType Fee_GetStatus (void);
Fee_GetVersionInfo функция

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_InvalidateBlock функция

Service to invalidate a logical block.

Std_ReturnType Fee_InvalidateBlock (uint16 BlockNumber);
Fee_JobEndNotification функция

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_MainFunction функция

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

void Fee_MainFunction (void);
Fee_Read функция

Service to initiate a read job.

Std_ReturnType Fee_Read (uint16 BlockNumber, uint16 BlockOffset, uint8* DataBufferPtr, uint16 Length);
Fee_SetMode функция

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

Configuration data structure of the Fee module.

Fls

This callback function is called when a job has been completed with a positive result.

void Fee_JobEndNotification(void);

This callback function is called when a job has been canceled or finished with negative result.

void Fee_JobErrorNotification(void);
Fls_BlankCheck функция

The function Fls_BlankCheck shall verify, whether a given memory area has been erased but not (yet) programmed. The function shall limit the maximum number of checked flash cells per main function cycle to the configured value FlsMaxReadNormalMode or FlsMaxReadFastMode respectively.

Std_ReturnType Fls_BlankCheck(Fls_AddressType TargetAddress, Fls_LengthType Length);
Fls_Cancel функция

Cancels an ongoing job.

void Fls_Cancel(void);
Fls_Compare функция

Compares the contents of an area of flash memory with that of an application data buffer.

Std_ReturnType Fls_Compare(Fls_AddressType SourceAddress, const uint8* TargetAddressPtr, Fls_LengthType Length);
Fls_Erase функция

Erases flash sector(s).

Std_ReturnType Fls_Erase(Fls_AddressType TargetAddress, Fls_LengthType Length);
Fls_GetJobResult функция

Returns the result of the last job.

MemIf_JobResultType Fls_GetJobResult(void);
Fls_GetStatus функция

Returns the driver state.

MemIf_StatusType Fls_GetStatus(void);
Fls_GetVersionInfo функция

Returns the version information of this module.

void Fls_GetVersionInfo(Std_VersionInfoType* VersioninfoPtr);
Fls_Init функция

Initializes the Flash Driver.

void Fls_Init(const Fls_ConfigType* ConfigPtr);
Fls_MainFunction функция

Performs the processing of jobs.

void Fls_MainFunction(void);
Fls_Read функция

Reads from flash memory.

Std_ReturnType Fls_Read(Fls_AddressType SourceAddress, uint8* TargetAddressPtr, Fls_LengthType Length);
Fls_SetMode функция

Sets the flash driver's operation mode.

void Fls_SetMode(MemIf_ModeType Mode);
Fls_Write функция

Writes one or more complete flash pages.

Std_ReturnType Fls_Write(Fls_AddressType TargetAddress, const uint8* SourceAddressPtr, Fls_LengthType Length);

Used as address offset from the configured flash base address to access a certain flash memory area.

A pointer to such a structure is provided to the flash driver initialization routine for configuration of the driver and flash memory hardware.

Specifies the number of bytes to read/write/erase/compare.

FlsTst

FlsTst_Abort функция

Service for aborting the Flash Test.

void FlsTst_Abort(void);
FlsTst_DeInit функция

Service for Flash Test De - Initialization.

void FlsTst_DeInit(void);
FlsTst_GetVersionInfo функция

Service returns the version information of this module.

void FlsTst_GetVersionInfo(Std_VersionInfoType* versioninfo);
FlsTst_Init функция

Service for Flash Test initialization.

void FlsTst_Init(const FlsTst_ConfigType* ConfigPtr);
FlsTst_MainFunction функция

Service for executing the Flash Test in background mode.

void FlsTst_MainFunction(void);
FlsTst_Resume функция

Service for continuing the Flash Test at the point it was suspended.

void FlsTst_Resume(void);
FlsTst_StartFgnd функция

Service for executing foreground Flash Test.

Std_ReturnType FlsTst_StartFgnd(FlsTst_BlockIdFgndType FgndBlockId);
FlsTst_Suspend функция

Service for suspending current operation of the Flash Test, until Fls Tst_ Resume is called.

void FlsTst_Suspend(void);

The function Fls Tst_ Test Completed shall be called every time when a complete test cycle had been tested.

void FlsTst_TestCompletedNotification(void);
FlsTst_TestEcc функция

Service executes a test of ECC hardware. This is only applicable in case the hardware provices such functionality.

Std_ReturnType FlsTst_TestEcc(void);

Service returns error detais monitored from the Flash module.

FlsTst_ErrorDetailsType FlsTst_GetErrorDetails(void);

Service returns the current Flash Test exection state.

FlsTst_StateType FlsTst_GetCurrentState(void);

Service returns the Background Flash Test result.

FlsTst_TestResultBgndType FlsTst_GetTestResultBgnd(void);

Service returns the Foreground Flash Test result.

FlsTst_TestResultFgndType FlsTst_GetTestResultFgnd(void);

Service returns the Flash Test result in background mode.

FlsTst_TestSignatureBgndType FlsTst_GetTestSignatureBgnd(void);

Service returns the Flash Test result in foreground mode.

FlsTst_TestSignatureFgndType FlsTst_GetTestSignatureFgnd(void);

This type specifies the identification (ID) for a Flash block to be tested in foreground mode, which is configured in the configuration structure.

This type of external data structure shall contain the initialization data for the Flash Test.

This type shall specify implementation specific error information monitored in the Flash test module.

This is a state value returned by the API service Fls Tst_ Get Current State().

Return type of API service Fls Tst_ Get Test Result Bgnd().

Return type of API service Fls Tst_ Get Result Fgnd().

Type for test signature in background mode.

Type for test signature in foreground mode

Mem

Mem_BlankCheck функция

Triggers a job to check the erased state of the page which is referenced by targetAddress. The result of this service can be retrieved using the Mem_GetJobResult API. If the checked page is blank, the result of the job is MEM_JOB_OK. Otherwise, if the page is not blank, the result is MEM_INCONSISTENT.

Std_ReturnType Mem_BlankCheck(Mem_InstanceIdType instanceId, Mem_AddressType targetAddress, Mem_LengthType length);
Mem_DeInit функция

De-initialize module. If there is still an access job pending, it is immediately terminated (using hardware cancel operation) and the Mem driver module state is set to unitialized. Therefore, Mem must be re-initialized before it will accept any new job requests after this service is processed.

void Mem_DeInit(void);
Mem_Erase функция

Triggers an erase job of the given sector/sector batch defined by targetAddress and length. The result of this service can be retrieved using the Mem_GetJobResult API. If the erase operation was successful, the result of the job is MEM_JOB_OK. If the erase operation failed, e.g. due to a hardware issue, the result of the job is MEM_JOB_FAILED.

Std_ReturnType Mem_Erase(Mem_InstanceIdType instanceId, Mem_AddressType targetAddress, Mem_LengthType length);
Mem_GetJobResult функция

Service to return results of the most recent job.

Mem_JobResultType Mem_GetJobResult(Mem_InstanceIdType instanceId);
Mem_GetVersionInfo функция

Service to return the version information of the Mem module.

void Mem_GetVersionInfo(Std_VersionInfoType* versionInfoPtr);
Mem_HwSpecificService функция

Triggers a hardware specific memory driver job. dataPtr can be used to pass and return data to/ from this service. This service is just a dispatcher to the hardware specific service implementation referenced by hwServiceId. The result of this service can be retrieved using the Mem_GetJobResult API. If the hardware specific operation was successful, the result of the job is MEM_JOB_OK. If the hardware specific operation failed, the result of the job is MEM_JOB_ FAILED. Tags: atp.Status=draft

Std_ReturnType Mem_HwSpecificService(Mem_InstanceIdType instanceId, Mem_HwServiceIdType hwServiceId, Mem_DataType* dataPtr, Mem_LengthType* lengthPtr);
Mem_Init функция

Initialization function - initializes all variables and sets the module state to initialized.

void Mem_Init(const Mem_ConfigType* configPtr);
Mem_MainFunction функция

Service to handle the requested jobs and the internal management operations.

void Mem_MainFunction(void);
Mem_PropagateError функция

This service can be used to report an access error in case the Mem driver cannot provide the access error information - typically for ECC faults. It is called by the system ECC handler to propagate an ECC error to the memory upper layers..

void Mem_PropagateError(Mem_InstanceIdType instanceId);
Mem_Read функция

Triggers a read job to copy the from the source address into the referenced destination data buffer. The result of this service can be retrieved using the Mem_GetJobResult API. If the read operation was successful, the result of the job is MEM_JOB_OK. If the read operation failed, the result of the job is either MEM_JOB_FAILED in case of a general error or MEM_ECC_ CORRECTED/MEM_ECC_UNCORRECTED in case of a correctable/uncorrectable ECC error.

Std_ReturnType Mem_Read(Mem_InstanceIdType instanceId, Mem_AddressType sourceAddress, Mem_DataType* destinationDataPtr, Mem_LengthType length);
Mem_Resume функция

Resume suspended memory operation using hardware mechanism. Tags: atp.Status=draft

void Mem_Resume(Mem_InstanceIdType instanceId);
Mem_Suspend функция

Suspend active memory operation using hardware mechanism. Tags: atp.Status=draft

void Mem_Suspend(Mem_InstanceIdType instanceId);
Mem_Write функция

Triggers a write job to store the passed data to the provided address area with given address and length. The result of this service can be retrieved using the Mem_GetJobResult API. If the write operation was successful, the job result is MEM_JOB_OK. If there was an issue writing the data, the result is MEM_FAILED.

Std_ReturnType Mem_Write(Mem_InstanceIdType instanceId, Mem_AddressType targetAddress, const Mem_DataType* sourceDataPtr, Mem_LengthType length);

Physical memory device address type

Postbuild configuration structure type

Read data user buffer type

Hardware specific service request identifier type

Job end notification function called by Mem in case the job processing is configured for job end notification.

Asynchronous job result type

Physical memory device length type

MemAcc

MemAcc application job end notification callback. The function name is configurable. Tags: atp.Status=draft

void <AddressAreaJobEndNotification>(MemAcc_AddressAreaIdType addressAreaId, MemAcc_JobResultType jobResult);

Address area lock application callback. The function name is configurable. Tags: atp.Status=draft

void <ApplicationLockNotification>(void);
MemAcc_ActivateMem функция

Dynamic activation and initialization of a Mem driver referenced by hwId and headerAddress.

Std_ReturnType MemAcc_ActivateMem(MemAcc_AddressType headerAddress, MemAcc_HwIdType hwId);
MemAcc_BlankCheck функция

Checks if the passed address space is blank, i.e. erased and writeable. The result of this service can be retrieved using the MemAcc_GetJobResult API. If the address area defined by targetAddress and length is blank, the result is MEMACC_MEM_OK, otherwise the result is MEMACC_MEM_INCONSISTENT.

Std_ReturnType MemAcc_BlankCheck(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType targetAddress, MemAcc_LengthType length);
MemAcc_Cancel функция

Triggers a cancel operation of the pending job for the address area referenced by the address AreaId. Cancelling affects only jobs in pending state. For any other states, the request will be ignored.

void MemAcc_Cancel(MemAcc_AddressAreaIdType addressAreaId);
MemAcc_Compare функция

Triggers a job to compare the passed data to the memory content of the provided address area. The job terminates, if all bytes matched or a difference was detected. The result of this service can be retrieved using the MemAcc_GetJobResult() API. If the compare operation determined a mismatch, the result code is MEMACC_MEM_INCONSISTENT. Tags: atp.Status=draft

Std_ReturnType MemAcc_Compare(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType sourceAddress, const MemAcc_DataType* dataPtr, MemAcc_LengthType length);
MemAcc_DeactivateMem функция

Dynamic deactivation of a Mem driver referenced by hwId and headerAddress.

Std_ReturnType MemAcc_DeactivateMem(MemAcc_HwIdType hwId, MemAcc_AddressType headerAddress);
MemAcc_DeInit функция

Deinitialize module. If there are still access jobs pending, they are immediately terminated and the module state is set to unitialized. Therefore, MemAcc must be re-initialized before it will accept any new job requests after this service is processed.

void MemAcc_DeInit(void);
MemAcc_Erase функция

Triggers an erase job of the given area. Triggers an erase job of the given area defined by targetAddress and length. The result of this service can be retrieved using the Mem_GetJobResult API. If the erase operation was successful, the result of the job is MEM_JOB_OK. If the erase operation failed, e.g. due to a hardware issue, the result of the job is MEM_JOB_FAILED.

Std_ReturnType MemAcc_Erase(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType targetAddress, MemAcc_LengthType length);
MemAcc_GetJobInfo функция

Returns detailed information of the current memory job like memory device ID, job type, job processing state or job result, address area as well as address and length.

void MemAcc_GetJobInfo(MemAcc_AddressAreaIdType addressAreaId, MemAcc_JobInfoType* jobInfoPtr);
MemAcc_GetJobResult функция

Returns the consolidated job result of the address area referenced by addressAreaId.

MemAcc_JobResultType MemAcc_GetJobResult(MemAcc_AddressAreaIdType addressAreaId);
MemAcc_GetJobStatus функция

Returns the status of the MemAcc job referenced by addressAreaId.

MemAcc_JobStatusType MemAcc_GetJobStatus(MemAcc_AddressAreaIdType addressAreaId);
MemAcc_GetMemoryInfo функция

This service function retrieves the physical memory device information of a specific address area. It can be used by an upper layer to get all necessary information to align the start address and trim the length for erase/write jobs.

Std_ReturnType MemAcc_GetMemoryInfo(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType address, MemAcc_MemoryInfoType* memoryInfoPtr);

Returns the accumulated number of bytes that have already been processed in the current job.

MemAcc_LengthType MemAcc_GetProcessedLength(MemAcc_AddressAreaIdType addressAreaId);
MemAcc_GetVersionInfo функция

Service to return the version information of the MemAcc module.

void MemAcc_GetVersionInfo(Std_VersionInfoType* versionInfoPtr);

Triggers a hardware specific job request referenced by hwServiceId. Service specific data can be passed/retrieved by dataPtr. The result of this service can be retrieved using the MemAcc_GetJobResult API. If the hardware specific operation was successful, the result of the job is MEMACC_MEM_OK. If the hardware specific operation failed, the result of the job is MEMACC_MEM_FAILED.

Std_ReturnType MemAcc_HwSpecificService(MemAcc_AddressAreaIdType addressAreaId, MemAcc_HwIdType hwId, MemAcc_MemHwServiceIdType hwServiceId, MemAcc_DataType* dataPtr, MemAcc_LengthType* lengthPtr);
MemAcc_Init функция

Initialization function - initializes all variables and sets the module state to initialized.

void MemAcc_Init(const MemAcc_ConfigType* configPtr);
MemAcc_MainFunction функция

Service to handle the requested jobs and the internal management operations. Depending on the configuration MemAcc will call the Mem driver main functions.

void MemAcc_MainFunction(void);
MemAcc_Read функция

Triggers a read job to copy data from the source address into the referenced destination data buffer. The result of this service can be retrieved using the MemAcc_GetJobResult API. If the read operation was successful, the result of the job is MEMACC_MEM_OK. If the read operation failed, the result of the job is either MEMACC_MEM_FAILED in case of a general error or MEMACC_MEM_ECC_CORRECTED/MEMACC_MEM_ECC_UNCORRECTED in case of a correctable/uncorrectable ECC error.

Std_ReturnType MemAcc_Read(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType sourceAddress, MemAcc_DataType* destinationDataPtr, MemAcc_LengthType length);
MemAcc_ReleaseLock функция

Release access lock of provided address area. Tags: atp.Status=draft

Std_ReturnType MemAcc_ReleaseLock(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType address, MemAcc_LengthType length);
MemAcc_RequestLock функция

Request lock of an address area for exclusive access. Once the lock is granted, the referenced lock notification function is called by MemAcc.

Std_ReturnType MemAcc_RequestLock(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType address, MemAcc_AddressType length, void* lockNotificationFctPtr);
MemAcc_Write функция

Triggers a write job to store the passed data to the provided address area with given address and length. The result of this service can be retrieved using the MemAcc_GetJobResult API. If the write operation was successful, the job result is MEMACC_MEM_OK. If there was an issue writing the data, the result is MEMACC_MEM_FAILED.

Std_ReturnType MemAcc_Write(MemAcc_AddressAreaIdType addressAreaId, MemAcc_AddressType targetAddress, const MemAcc_DataType* sourceDataPtr, MemAcc_LengthType length);

Unique address area ID type.

Logical memory address type.

Type of the function pointer to register an application callback to be notified once the address area lock was successfully acquired.

Postbuild configuration structure type.

General data type.

Type for the unique numeric identifiers of all Mem hardware instances used for hardware specific requests.

This structure contains information the current processing state of the MemAcc module.

Asynchronous job result type.

Asynchronous job status type.

Type for asynchronous jobs.

Job length type.

Physical memory device address type

This structure contains elements for accessing the Mem driver service functions and consistency information. Tags: atp.Status=draft

Function pointer for the Mem_BlankCheck service for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

Memory driver configuration structure type

General data type

Function pointer for the Mem_DeInit service for the invocation of the Mem driver API via function pointer interface.

Function pointer for the Mem_Erase service for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

Function pointer for the Mem_JobResultType service for the invocation of the Mem driver API via function pointer interface.

Index type for Mem driver hardware specific service table.

Function pointer for the Mem_HwSpecificService function for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

Function pointer for the Mem_Init service for the invocation of the Mem driver API via function pointer interface.

Memory driver instance ID type

Asynchronous job result type

Physical memory device length type

Function pointer for the Mem_MainFunction service for the invocation of the Mem driver API via function pointer interface.

This structure contains information of Mem device characteristics. It can be accessed via the MemAcc_GetMemoryInfo() service. Tags: atp.Status=draft

Function pointer for the Mem_PropagateError service for the invocation of the Mem driver API via function pointer interface.

Function pointer for the Mem_Read service for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

Function pointer for the Mem_Resume service for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

Function pointer for the Mem_Suspend service for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

Function pointer for the Mem_Write service for the invocation of the Mem driver API via function pointer interface. Tags: atp.Status=draft

MemIf

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_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_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

NvM

NvM_CancelJobs функция

Service to cancel all jobs pending for a NV block.

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

Service to cancel a running Nv M_ Write All request.

void NvM_CancelWriteAll (void);
NvM_EraseNvBlock функция

Service to erase a NV block.

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

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

void NvM_FirstInitAll (void);
NvM_GetDataIndex функция

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

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

Service to read the block dependent error/ status information.

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);
NvM_GetVersionInfo функция

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

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

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

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

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

Service to invalidate a NV block.

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

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

void NvM_JobEndNotification (void);

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

void NvM_JobErrorNotification (void);
NvM_MainFunction функция

Service for performing the processing of the Nv M jobs.

void NvM_MainFunction (void);

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

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);
NvM_ReadAll функция

Initiates a multi block read request.

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

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

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

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

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

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

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

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

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

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

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);
NvM_SetBlockLockStatus функция

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

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

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

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

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

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

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

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

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

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

Initiates a multi block validation request.

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

Initiates a multi block write request.

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

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

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

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

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

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

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

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

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

Configuration data structure of the Nv M module.

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

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

Type NvM_RequestResultType.

RamTst

RamTst_Allow функция

Service for continuing the RAM Test after calling 'Ram Tst_ Stop.

void RamTst_Allow(void);

Service changes the current number of tested cells.

void RamTst_ChangeNumberOfTestedCells(RamTst_NumberOfTestedCellsType NewNumberOfTestedCells);
RamTst_DeInit функция

Service for RAM Test deinitialization.

void RamTst_DeInit(void);

The function Ram Tst_ Error shall be called every time when a RAM failure has been detected by the selected test algorithm in the background.

void RamTst_ErrorNotification(void);
RamTst_GetVersionInfo функция

Service returns the version information of this module.

void RamTst_GetVersionInfo(Std_VersionInfoType* versioninfo);
RamTst_Init функция

Service for RAM Test initialization.

void RamTst_Init(const RamTst_ConfigType* ConfigPtr);
RamTst_MainFunction функция

Scheduled function for executing the RAM Test in the background.

void RamTst_MainFunction(void);
RamTst_Resume функция

Service for allowing to continue the background RAM Test at the point is was suspended.

void RamTst_Resume(void);
RamTst_RunFullTest функция

Service for executing the full RAM Test in the foreground.

void RamTst_RunFullTest(void);
RamTst_RunPartialTest функция

Service for testing one RAM block in the foreground.

void RamTst_RunPartialTest(RamTst_NumberOfBlocksType BlockId);
RamTst_SelectAlgParams функция

Service used to set the test algorithm and its parameter set.

void RamTst_SelectAlgParams(RamTst_AlgParamsIdType NewAlgParamsId);
RamTst_Stop функция

Service for stopping the RAM Test.

void RamTst_Stop(void);
RamTst_Suspend функция

Service for suspending current operation of background RAM Test, until RESUME is called.

void RamTst_Suspend(void);

The function Ram Tst_ Test Completed shall be called every time when all RAM blocks of the current test configuration have been tested in the background.

void RamTst_TestCompletedNotification(void);

Service returns the current RAM Test algorithm.

RamTst_AlgorithmType RamTst_GetTestAlgorithm(void);

Service returns the ID of the current RAM Test algorithm parameter set.

RamTst_AlgParamsIdType RamTst_GetAlgParams(void);

Service returns the current RAM Test execution status.

RamTst_ExecutionStatusType RamTst_GetExecutionStatus(void);

Service returns the current number of tested cells per main - function cycle.

RamTst_NumberOfTestedCellsType RamTst_GetNumberOfTestedCells(void);

Service returns the current RAM Test result.

RamTst_TestResultType RamTst_GetTestResult(void);

Service returns the current RAM Test result for the specified block.

RamTst_TestResultType RamTst_GetTestResultPerBlock(RamTst_NumberOfBlocksType BlockID);

This is a value returned by the API service Ram Tst_ Get Test Algorithm().

Data type used to identify a set of configuration parameters for a test algorithm.

Configuration data structure of the Ram Tst module.

This is a status value returned by the API service Ram Tst_ Get Execution Status().

Data type used to identify or count RAM blocks given in the test configuration parameters.

Data type of number of tested RAM cells

This is a status value returned by the API service Ram Tst_ Get Test Result().

Руководство по кластеруСОЗДАНО ИИ

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

Сохраняет энергонезависимые данные и управляет ими аппаратно-независимым образом через структурированные блоки NVRAM и абстрагирующие драйверы.

Модульный кластер 'Memory Services' реализует аппаратно-независимое хранение и обеспечение целостности энергонезависимых данных приложений через NVRAM Manager, а также модули аппаратной абстракции MemIf, Fee и Ea ([SWS_NvM_00447], [SWS_MemIf_00039]). Асинхронные операции чтения и записи обрабатываются через циклические MainFunctions и выполняются пакетно во время запуска блока управления (NvM_ReadAll), а также при завершении работы (NvM_WriteAll) ModemanagementGuide с. 54. При аппаратных сбоях задействуются многоуровневые механизмы повторов, избыточности и восстановления из ROM с автоматическим формированием отчетов в DEM ([SWS_NvM_00470]).

Кластер 'Memory Services' обеспечивает персистентное хранение и управление энергонезависимыми данными в стеке AUTOSAR Classic BSW. Он включает в себя NVRAM Manager ([SWS_NvM_00447]) на сервисном уровне, а также Memory Abstraction Interface ([SWS_MemIf_00039]) с модулями Flash EEPROM Emulation ([SWS_Fee_00085]) и EEPROM Abstraction ([SWS_Ea_00083]) на уровне аппаратной абстракции AUTOSAR SWS NVRAMManager с. 10.

MemoryServices cluster_app Applikation & BSW-Nutzer cluster_services Services Layer cluster_abstraction Memory Hardware Abstraction Layer cluster_mcal Microcontroller Abstraction Layer (MCAL) SWC Software-Komponenten (SW-C) NvM NVRAM Manager (NvM) SWC->NvM NvM_WriteBlock / ReadBlock DEM Diagnostic Event Manager (DEM) DEM->NvM NvM_GetErrorStatus / ReadBlock MemIf Memory Abstraction Interface (MemIf) NvM->MemIf MemIf_Write / Read / Cancel Fee Flash EEPROM Emulation (Fee) MemIf->Fee Fee_Write / Read (Device 0) Ea EEPROM Abstraction (Ea) MemIf->Ea Ea_Write / Read (Device 1) Fls Flash Driver (Fls) Fee->Fls Fls_Write / Read Eep EEPROM Driver (Eep) Ea->Eep Eep_Write / Read

Архитектурная диаграмма: послойная структура и взаимосвязи модулей в кластере Memory Services. Источники: [SWS_MemIf_00039], AUTOSAR SWS NVRAMManager с. 10

Обмен данными происходит через синхронные управляющие API и асинхронные задания на запись и чтение. Данные передаются либо неявно через постоянные блоки RAM, либо явно через модульные зеркала RAM ([SWS_NvM_00455], [SWS_NvM_00514]) NVDataHandling с. 12. Циклическая обработка поставленных в очередь заданий выполняется через периодически вызываемые основные функции BSW (NvM_MainFunction, Fee_MainFunction), в то время как MemIf делегирует вызовы нижележащим драйверам без сохранения состояния ([SWS_MemIf_00040]) AUTOSAR CP SWS FlashEEPROMEmulation с. 42.

В рабочем цикле BswM координирует многоблочные действия: при запуске системы NvM_ReadAll считывает персистентные данные из энергонезависимой памяти в RAM ([SWS_NvM_00460]), в то время как при завершении работы NvM_WriteAll сохраняет измененные данные ([SWS_NvM_00461]) ModemanagementGuide с. 54. Ошибочные обращения на чтение или запись перехватываются с помощью повторных попыток, а также избыточных копий или резервных значений из ROM; о постоянных сбоях система сообщает в DEM ([SWS_NvM_00470], [SWS_NvM_00279]) ErrorDescription с. 62.

Системная архитектура & роль кластера модулей

Модульный кластер служб памяти (Memory Services) платформы AUTOSAR Classic Platform обеспечивает стандартизированное, аппаратно-независимое управление и персистентность данных приложений и базового программного обеспечения в энергонезависимой памяти. Кластер делится по вертикали на два уровня архитектуры базового ПО AUTOSAR: NVRAM Manager ([SWS_NvM_00447]) на сервисном уровне (Services Layer), а также Memory Abstraction Interface ([SWS_MemIf_00039]) с расположенными ниже модулями абстракции Flash EEPROM Emulation ([SWS_Fee_00085]) и EEPROM Abstraction ([SWS_Ea_00083]) на уровне аппаратной абстракции памяти (Memory Hardware Abstraction Layer) AUTOSAR SWS NVRAMManager с. 10.

NVRAM Manager (NvM) образует центральную точку входа для программных компонентов (SW-C) и BSW-модулей, таких как модуль Diagnostic Event Manager (Dem) SWS DiagnosticEventManager с. 238. Он управляет логическими блоками памяти, которые состоят из NV-блоков в энергонезависимой памяти, RAM-блоков в энергозависимой памяти и опциональных ROM-блоков для данных инициализации ([SWS_NvM_00137], [SWS_NvM_00128]). В зависимости от требований поддерживаются типы управления блоками native (NVM_BLOCK_NATIVE), redundant (NVM_BLOCK_REDUNDANT) или dataset (NVM_BLOCK_DATASET) AUTOSAR CP RS MemoryServices с. 10.

Модули Fee и Ea инкапсулируют особенности соответствующих физических носителей данных (Flash или EEPROM) и сопоставляют логические номера блоков и смещения адресов с линейными адресными пространствами соответствующих MCAL-драйверов (Fls и Eep соответственно) ([SWS_Fee_00087], [SWS_Ea_00086]) AUTOSAR SWS EEPROMAbstraction с. 23. При этом модуль MemIf служит исключительно уровнем маршрутизации, который на основе параметра DeviceIndex перенаправляет обращения к целевому модулю без содержания собственных буферных структур ([SWS_MemIf_00040]).

MemoryServices cluster_app Applikation & BSW-Nutzer cluster_services Services Layer cluster_abstraction Memory Hardware Abstraction Layer cluster_mcal Microcontroller Abstraction Layer (MCAL) SWC Software-Komponenten (SW-C) NvM NVRAM Manager (NvM) SWC->NvM NvM_WriteBlock / ReadBlock DEM Diagnostic Event Manager (DEM) DEM->NvM NvM_GetErrorStatus / ReadBlock MemIf Memory Abstraction Interface (MemIf) NvM->MemIf MemIf_Write / Read / Cancel Fee Flash EEPROM Emulation (Fee) MemIf->Fee Fee_Write / Read (Device 0) Ea EEPROM Abstraction (Ea) MemIf->Ea Ea_Write / Read (Device 1) Fls Flash Driver (Fls) Fee->Fls Fls_Write / Read Eep EEPROM Driver (Eep) Ea->Eep Eep_Write / Read

Архитектурная диаграмма: послойная структура и взаимосвязи модулей в кластере Memory Services. Источники: [SWS_MemIf_00039], AUTOSAR SWS NVRAMManager с. 10

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

Взаимодействие между модулями происходит по строго стандартизированным синхронным и асинхронным путям. Если пользователь инициирует операцию записи через NvM_WriteBlock, запрос сначала регистрируется в административном блоке NvM ([SWS_NvM_00455]). При синхронном вызове перенаправление в MemIf происходит через MemIf_Write ([SWS_MemIf_00040]), который передает вызов в Fee_Write или Ea_Write ([SWS_Fee_00088], [SWS_Ea_00087]) AUTOSAR SWS NVRAMManager с. 160.

В отношении хранения данных и синхронизации между приложением и NVRAM Manager существуют две основные концепции: неявная синхронизация через постоянные блоки RAM (NvMRamBlockDataAddress) и явная синхронизация через буферы на основе зеркал (NvMBlockUseSyncMechanism) NVDataHandling с. 12. При явной синхронизации NvM копирует полезные данные через сконфигурированные callback-процедуры NvMWriteRamBlockToNvCallback или NvMReadRamBlockFromNvCallback между RAM приложения и внутренним зеркалом RAM ([SWS_NvM_00514], [SWS_NvM_00515]) EXP NVDataHandling с. 30.

При использовании блоков типа Dataset (NVM_BLOCK_DATASET) вызывающая сторона предварительно выбирает желаемый индекс набора данных через NvM_SetDataIndex ([SWS_NvM_00448]). После этого модули абстракции вычисляют точное смещение адреса для MCAL-драйвера на основе логического номера блока и индекса ([SWS_NvM_00123]) AUTOSAR SWS Flash EEPROM Emulation с. 21. Запросы на отмену передаются через MemIf_Cancel напрямую в подмодули Fee_Cancel или Ea_Cancel ([SWS_MemIf_00041], [SWS_Fee_00089]).

Асинхронный запрос на запись в кластере Memory ServicesNvM UserNvMMemIfFee / EaBSW TaskNvM_WriteBlock(BlockId, DataPtr)Auftrag in Queue registrierenСтатус на NVM_REQ_PENDINGE_OKUse Case: Zyklische Bearbeitung in MainFunctionNvM_MainFunction()MemIf_Write(DeviceIndex, BlockNum, DataPtr)Fee_Write / Ea_Write(...)E_OKE_OKВозвратUse Case: Abschluss & BenachrichtigungNvM_MainFunction()Job-Ergebnis auswerten (MEMIF_JOB_OK)Blockstatus aktualisierenSingleBlockCallback(BlockId, NVM_REQ_OK)ВозвратNvM_GetErrorStatus(BlockId, &RequestResult)NVM_REQ_OK

Диаграмма последовательности: асинхронное задание на запись с callback-оповещением и поллингом. Источники: [SWS_NvM_00455], AUTOSAR SWS NVRAMManager с. 160

Синхронизация, реентерабельность и контексты задач

Большинство API управления и статуса кластера, включая NvM_GetErrorStatus ([SWS_NvM_00451]), NvM_SetBlockProtection ([SWS_NvM_00450]) и MemIf_GetVersionInfo ([SWS_MemIf_00045]), реализованы синхронными и могут обрабатываться непосредственно в контексте задачи вызывающей стороны AUTOSAR SWS NVRAMManager с. 157. Напротив, функции передачи данных (NvM_ReadBlock, NvM_WriteBlock, Ea_Write) спроектированы асинхронными и нереентерабельными ([SWS_MemIf_00040], [SWS_Ea_00087]).

Циклическое продвижение текущих заданий возложено на основные функции NvM_MainFunction и Fee_MainFunction, периодически вызываемые Schedule Manager (SchM) или задачей BSW AUTOSAR CP SWS FlashEEPROMEmulation с. 42. При асинхронных сообщениях от MCAL-драйвера уведомление Fee_JobEndNotification или Fee_JobErrorNotification может происходить непосредственно на уровне прерываний ([SWS_Fee_00095]). Оно устанавливает статус в MEMIF_JOB_OK или вызывает сконфигурированные процедуры оповещения ([SWS_Fee_00142], [SWS_Fee_00194]) SWS FlashEEPROMEmulation с. 37.

Интерпретация: чтобы исключить состояния гонки (race conditions) между вызывающими сторонами API на уровне задач и пошаговой дальнейшей обработкой в MainFunctions, внутренние очереди и административные атрибуты, вероятно, защищены эксклюзивными областями, в то время как MemIf действует как уровень перенаправления без сохранения состояния AUTOSAR SWS NVRAMManager с. 160. Вопрос Q-a50c3362a14b9e6d (открытый)

Типичные жизненные циклы и режимы работы

Жизненный цикл кластера тесно оркеструется Basic Software Mode Manager (BswM) и ECU State Manager (EcuM). Во время запуска блока управления (Startup Phase) вслед за драйверами сначала синхронно инициализируются модули абстракции через Fee_Init и Ea_Init соответственно ([SWS_Fee_00085], [SWS_Ea_00083]), а затем NVRAM Manager через NvM_Init ([SWS_NvM_00447]) AUTOSAR SWS NVRAMManager с. 156.

Вслед за инициализацией BswM запускает многоблочную операцию чтения NvM_ReadAll, чтобы восстановить из энергонезависимой памяти все блоки RAM, помеченные как персистентные ([SWS_NvM_00460]) ModemanagementGuide с. 54. О ходе выполнения и конечном результате NvM сообщает обратно в BswM через callback-функцию BswM_NvM_CurrentJobMode ([SWS_NvM_00745], [SWS_NvM_00888]). Состояния отдельных блоков сигнализируются через BswM_NvM_CurrentBlockMode ([SWS_NvM_00746], [SWS_NvM_00890]) ModemanagementGuide с. 28.

В фазе завершения работы (Shutdown) система инициирует через NvM_WriteAll персистентную обратную запись всех измененных блоков RAM в NV-память ([SWS_NvM_00461]). Чтобы оптимизировать количество циклов записи во Flash, с помощью NvM_SetRamBlockStatus можно целенаправленно отметить, был ли блок модифицирован ([SWS_NvM_00453]) EXP NVDataHandling с. 18. Текущий процесс записи при преждевременных событиях пробуждения можно отменить через NvM_CancelWriteAll ([SWS_NvM_00238]) AUTOSAR SWS NVRAMManager с. 161.

Обработка ошибок, трассировка DET и деградация

Кластер обладает многоуровневой концепцией обнаружения ошибок и деградации. Ошибки, возникающие на уровне драйверов и абстракции, опрашиваются через возвращаемый статус MEMIF_JOB_FAILED с помощью MemIf_GetJobResult или передаются через NvM_JobErrorNotification ([SWS_Fee_00091], [SWS_Ea_00095]) ErrorDescription с. 49.

При возникновении ошибок чтения NvM обращается к сконфигурированным механизмам восстановления: сначала предпринимаются повторные попытки (Read Retries) ([SWS_NvM_00390]). Если они завершаются неудачно, для избыточных блоков (NVM_BLOCK_REDUNDANT) считывается избыточная копия ([SWS_NvM_00171], [SWS_NvM_00531]). Если при этом обнаруживается потеря избыточности, NvM устанавливает результат задания в NVM_REQ_REDUNDANCY_FAILED и сообщает о производственной ошибке NVM_E_LOSS_OF_REDUNDANCY в DEM ([SWS_NvM_00470], [SWS_NvM_00546]) ErrorDescription с. 62.

Если восстановление с помощью стандартных значений ROM проходит успешно, NvM сообщает результат NVM_REQ_RESTORED_FROM_ROM ([SWS_NvM_00470]). Если все меры восстановления терпят неудачу, в DEM передается NVM_E_REQ_FAILED ([SWS_NvM_00279], [SWS_NvM_00288]), а результат опроса устанавливается в NVM_REQ_NOT_OK ([SWS_NvM_00451]). При ошибках записи NvM управляет повторными попытками записи (NvMMaxNumOfWriteRetries), прежде чем запрос будет отменен ([SWS_NvM_00168], [SWS_NvM_00213]) ErrorDescription с. 56.

В этом руководстве обобщены ключевая архитектура, взаимодействие модулей и механизмы обработки ошибок кластера Memory Services. Все сведения основаны на нормативных спецификациях AUTOSAR Classic Platform.

Module im Cluster

Bulk NvData Manager (BndM)

AUTOSAR Classic Memory Services-Modul Bulk NvData Manager (BndM, Spezifikation: AUTOSAR_CP_SWS_BulkNvDataManager.pdf, AUTOSAR_SWS_BulkNvDataManager.pdf).

BSW ID 23 8 APIs (5 Funktionen, 3 Typen) #include "BndM.h"

EEPROM Abstraction (Ea)

Provides uniform access to external and internal EEPROM devices.

BSW ID 40 16 APIs (15 Funktionen, 1 Typen) #include "Ea.h"

EEPROM Driver (Eep)

AUTOSAR Classic Memory Drivers-Modul EEPROM Driver (Eep, Spezifikation: AUTOSAR_CP_SWS_EEPROMDriver.pdf, AUTOSAR_SWS_EEPROMDriver.pdf, AUTOSAR_SWS_EEPROM_Driver.pdf).

BSW ID 90 16 APIs (13 Funktionen, 3 Typen) #include "Eep.h"

Flash EEPROM Emulation (Fee)

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

BSW ID 21 16 APIs (15 Funktionen, 1 Typen) #include "Fee.h"

Flash Driver (Fls)

AUTOSAR Classic Memory Drivers-Modul Flash Driver (Fls, Spezifikation: AUTOSAR_CP_SWS_FlashDriver.pdf, AUTOSAR_SWS_FlashDriver.pdf).

BSW ID 92 17 APIs (14 Funktionen, 3 Typen) #include "Fls.h"

Flash Test (FlsTst)

AUTOSAR Classic Memory Drivers-Modul Flash Test (FlsTst, Spezifikation: AUTOSAR_CP_SWS_FlashTest.pdf, AUTOSAR_SWS_FlashTest.pdf).

BSW ID 104 16 APIs (16 Funktionen, 0 Typen) #include "FlsTst.h"

Memory Driver (Mem)

AUTOSAR Classic Memory Drivers-Modul Memory Driver (Mem, Spezifikation: AUTOSAR_CP_SWS_MemoryDriver.pdf, AUTOSAR_SWS_MemoryDriver.pdf).

BSW ID 91 20 APIs (13 Funktionen, 7 Typen) #include "Mem.h"

Memory Access (MemAcc)

AUTOSAR Classic Memory HW Abstraction-Modul Memory Access (MemAcc, Spezifikation: AUTOSAR_CP_SWS_MemoryAccess.pdf, AUTOSAR_SWS_MemoryAccess.pdf).

BSW ID 41 39 APIs (22 Funktionen, 17 Typen) #include "MemAcc.h"

Memory Abstraction Interface (MemIf)

Abstracts underlying Flash and EEPROM memory drivers.

BSW ID 22 12 APIs (9 Funktionen, 3 Typen) #include "MemIf.h"

NVRAM Manager (NvM)

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

BSW ID 20 36 APIs (30 Funktionen, 6 Typen) #include "NvM.h"

RAM Test (RamTst)

AUTOSAR Classic Memory Drivers-Modul RAM Test (RamTst, Spezifikation: AUTOSAR_CP_SWS_RAMTest.pdf, AUTOSAR_SWS_RAMTest.pdf, AUTOSAR_SWS_RAM_Test.pdf).

BSW ID 93 20 APIs (20 Funktionen, 0 Typen) #include "RamTst.h"