Every modern automotive product needs a special kind of storage, which can keep the data even after a shutdown. These are called non-volatile memories, and they store for example diagnostic data and user-defined parameters. Flash type memories are often used for this purpose, but this kind of memory has some disadvantages: it can only be deleted in big blocks and it has a limited lifetime, so it can bear only a finite number of erase cycles. The first problem is solved by a software algorithm called EEPROM emulation, but the second problem has to be taken into consideration during the designing, as data loss is not permissible in automotive products. The number of the erase cycles depends on the amount of data written into the memory, so the preliminary estimate of this amount is very important.
In my thesis work, I examine the amount of data written to the flash memory of the inverter controller module of a car. The software of the tested controller, including memory handling, is based on AUTOSAR.
In the first part I introduce the basics of AUTOSAR and EEPROM emulation, then the AUTOSAR Memory Stack, which is resposible for data handling.
The second part is divided into 3 subparts. The first is about instrument automatization. Here I introduce the app I created to control a power supply unit remotely. The second subpart is about CAN communication and the CAPL language. Here I introduce the CAPL language, then I describe how I modified a CAPL script to manipulate the CAN communication. The third subpart is about real time data measurement through XCP protocol. First i write about the protocol itself, and then about the data description language named A2L. At the end of this section I show how I measured the flash erase counter through XCP using A2L.
The topic of the third part is the concrete implementation of storing non-volatile data. First I introduce the configuration of the non-volatile blocks, then I analyse the content of the memory. According to the gained information, I make an estimation about the memory usage, then I verify the results with testing.