Read Jobs While Processing a Writing Job
MICROSAR Standard Fee:
The Fee splits the hole available flash memory into two logical sectors. Starting with the first logical sector, every new version of data (instance of a block) will be stored to the next free page until the logical sector is filled. This is called the walking concept. Additional blocks are organized in chunks. A chunk is a container for a configurable number of instances of the same block.
In case you want to write a block, the Fee has to proceed as follows:
- Determine the newer logical sector.
- Determine if a chunk of this block is already available in this sector (if not, change to the older logical sector and search there).
- If already one or more chunks of the block could be found, the Fee must determine the last chunk of the block.
- The Fee must check if the last chunk of the block has still one empty instance to write the new instance into this chunk.
- If there is space for a further instance, the Fee can now write the instance to the chunk, if not the Fee has to allocate a new chunk before writing the instance of the block.
To search for the last chunk of the block which shall be written and to test whether the chunk has still at least one free instance (steps 1-4), many read operations to the Fls driver are necessary before the new instance of the block can be written (step 5).
MICROSAR Ea and SmallSectorFee:
Microsar Ea and SmallSectorFee behave very similar - for this topic completely similar.
Ea and SmallSectorFee act according to the walking concept to increase the number of write cycles. That means if a block shall be written more often than the guaranteed write cycles by the semiconductor manufacturer, Ea/SmallSectorFee has to allocate more than one instance for this block. Writes are processed in a round-robin manner.
Example:
Guaranteed write cycles by the semiconductor manufacturer: 50000
Estimated write cycles for block during lifetime of ECU: 120000
Ea and SmallSectorFee allocate space for 3 instances of a block:
- First write is executed to instance 1
- Second write to instance 2
- Third write to instance 3
- Fourth write to instance 1 again and so on...
In case Ea or SmallSectorFee must read a block like in the example, Ea or SmallSectorFee first must determine the instance with last written data. Therefore, some read jobs are necessary to underlay driver.