Automotive
Industry
AUTOSAR Memory Stack
“If horses had controlled investment
decisions, there would have been no auto
industry.”
— Warren Buffett
01
Introduction
The way I drive, the way I handle a car, is an
expression of my inner feelings.
Lewis Hamilton
Need of memory stack
● Memory stack provides access to Non-volatile memory
● Kinds of stored information
○ Seat Position
○ A/C Temperature
○ Radio Preferences
● Information are stored in Blocks
● A Block is an array of bytes
● Each application defines the blocks it needs
○ Length
○ Protection
02
Memory Types
The fact is I don’t drive just to get from A to B. I enjoy
feeling the car’s reactions, becoming part of it.
Enzo Ferrari
Memory Types
● RAM
● ROM
● Non-Volatile Memory
○ EEPROM
○ FLASH
● Difference between EEPROM and FLASH
○ Erasing access
○ Speed
○ Cost
○ Lifetime
Main functionalities
● Scheduling of accesses to any NV block for data saving/loading
● Access to blocks through BlockId , with optional queuing and priority management
● NV data safety through:
○ CRC checking
○ Redundancy management
○ Default data recovery
● Automatic multi-block loading/saving for ECU startup/shutdown modes
● NV Jobs priority management
● Explicit NV block invalidation services
Main functionalities
● Write operation ● Read/Restore operation
Application request
Application update RAM
read/restore
Memory stack copy data from
Application request write
NV/ROM to RAM
Memory stack copy data from Application read data from
RAM to NV RAM
03
Structure
I love fast cars… and to go too fast in them.
Lara Flynn Boyle
Structure of memory stack
Memory stack modules roles
● EEP module
● It is responsible for abstraction of MC registers used to control on-chip EEPROM peripheral
● It provides services for reading , writing, erasing to/from EEPROM
● It also provides a service for comparing data
● The EEPROM driver shall not buffer data
Memory stack modules roles
● FLS module
● It is responsible for abstraction of MC registers used to control on-chip FLASH peripheral
● It provides services for reading , writing, erasing to/from FLASH
● It also provides a service for comparing data
● The EEPROM driver shall not buffer data
Memory stack modules roles
● EA module
● It is responsible of providing an abstraction of internal/external EEPROM devices
● It provides the upper layers with a virtual addressing scheme
● It provides “virtually” unlimited number of erase cycles
Memory stack modules roles
● FEE module
● It is responsible of providing an abstraction of internal/external FLASH devices
● It provides the upper layers with a virtual addressing scheme
● It provides “virtually” unlimited number of erase cycles
Memory stack modules roles
● MEMIF module
● It allows the NVRAM manager to access several memory abstraction modules ( FEE
or EA modules)
Memory stack modules roles
● NVM module
● Scheduling of accesses to any NV block for data saving/loading
● Access to blocks through BlockId , with optional queuing and priority management
● Nv data safety through
○ CRC checking
○ Redundancy management
○ Default data recovery
● Automatic multi-block loading/saving for ECU startup/shutdown modes
● Explicit NV block invalidation services
Memory stack main Concepts
● NV blocks
○ The NV block is a basic storage object in NV memory
○ The NV block consist of
■ Optional NV block header (Static block ID)
■ Data
■ Optional CRC
Memory stack main Concepts
● Different types of NV block management
○ Native NV block
○ Redundant NV block
○ Dataset NV block
● Related configuration parameters :
○ NVM_BLOCK_MANAGEMENT_TYPE
○ NVM_NV_BLOCK_NUM
○ NVM_DATASET_SELECTION_BITS
Memory stack main Concepts
● ROM blocks
○ The ROM block is a basic storage object in ROM
○ It provides default data in case of an empty or damaged NV BLOCK
○ The ROM block consists of
■ Constant data
○ Related configuration parameters :
■ NVN_ROM_BLOCK_DATA_ADDRESS
Memory stack main Concepts
● RAM blocks
○ The RAM block is a basic storage object in RAM
○ Used to allow applications to write and read freely
○ It consists of
■ Optional NV block header (Static block ID)
■ Data
■ Optional CRC
Memory stack main Concepts
● CRC calculations
○ CRC shall be recalculated and updated in the RAM block upon each write request from application
○ During read operation
■ CRC bytes are read from NV
■ CRC is calculated over the data read from NV
■ The read value and the calculated value are compared
○ Related configuration parameters :
■ NVM_BLOCK_USE_CRC
■ NVM_BLOCK_CRC_TYPE
■ NVM_CRC_NUM_OF_BYTES
Memory stack main Concepts
● Priority management
○ The memory stack supports a priority based job processing (in case of multiple write/read
requests from application)
○ Two queues exists in memory stack
■ one for immediate write jobs
■ another for all other jobs
○ A write with immediate priority shall preempt the running job
○ The preempted job shall be resumed/restarted by the memory stack
Memory stack main Concepts
● Polling and Callbacks
○ The memory stack can use either polling or callback to get the status of current
write/read job requested from application
○ Mixed configuration can be used along the memory stack
○ The applications also can use polling or callback
○ Related configuration parameters
■ NVM_POLLING_MODE
■ EA/FEE_POLLING_MODE
■ EEP/FLS_USE_INTERRUPTS
■ NVM_SINGLE_BLOCK_CALLBACK
Memory stack main Concepts
● Write verification
○ When a Ram block is written to NV memory the NV block shall be immediately read back and
compared with the original content in RAM block
○ Write verification shall be performed in steps so that the number of bytes read specified by a
configuration parameter
■ NVM_WRITE_VERIFICATION_DATA_SIZE
○ If write verification failed then write retires shall be performed by a configuration parameter
■ NVM_MAX_NUM_OF_WRITE_RETRIES
Memory stack main Concepts
● Protection of NV block
○ Memory stack provides functionality of protecting the NV block from being overwritten
○ Related configuration parameters :
■ NVM_BLOCK_WRITE_PROT
■ NVM_WRITE_BLOCK_ONCE
○ Application could use “Nvm_SetBlockProtection” API to activate/deactivate block protection
during runtime
Memory stack main Concepts
● Write all blocks / Read all blocks
○ Nvm_WriteAll() writes data to all NV blocks witty attributes
■ Block is selected for WriteAll (by configuration)
■ Block has a permanent RAM block
○ Nvm_ReadAll() reads data from al NV Blocks with attributes
■ Block is selected for ReadAll (by configuration)
■ Block has a permanent RAM block
○ Nvm_WriteAll() and Nvm_ReadAll() are called in shutdown and startup respectively
Memory stack main Concepts
● Write operation
○ Test block protection
○ Calculate CRC (if configured)
○ Copy data from RAM to NV
Memory stack main Concepts
● Write sequence diagram - Callbacks
Memory stack main Concepts
● Read operation
○ Copy from NV to RAM
○ CRC calculation and comparison
■ Match
■ Mismatch
○ Reading redundant blocks
○ Loading default values
Memory stack main Concepts
● Read sequence diagram - Callbacks
THANK YOU!
DOES ANYONE HAVE ANY QUESTIONS?
www.imtschool.com
www.facebook.com/imaketechnologyschool/