Flash Emulated EEPROM: FEE001_JOB_INCONSISTENT

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
Hello,

I have a problem with the Flash Emulated EEPROM Programming. When I try to read the Flash content (Read Function FEE001_Read is automatically generated by DAVE) I get the error state: FEE001_JOB_INCONSISTENT. Inside the Read Function, the low level function


Fee_lLocalRead((uint32_t)FEE001_NORM_READ);


is called. And this function returns the error code mentioned above. I don't really know what the problem is and the comments from the DAVE developers in this routine are not really informative. Google also does not say many about this return value. Can you help me? Has anybody had this problem before?

Best regards and thanks for helping!
Sebastian
0 Likes
6 Replies
Not applicable
I tried out the example project EEPROM Emulation Example using FEE001 provided by Infineon. There it is working. But I don't see any difference between the project from Infineon and my project. Perhaps someone can explain the error message to me. I don't really know what the Status tries to tell me. 😞

Best regards,
Sebastian
0 Likes
Not applicable
Hello,

I made some success on my problem: with the help of the example provided by Infineon, I found out, that I have to write data before I read data from the memory. If I do a write and then a read, everything is ok. But this is not really what I wanna do in my application. The memory shall have initial values and with a command from the master (in my case a bigger Microcontroller), I wanna modify contents from this initial string programmed in our manufacture.
Therefore it is really important to me that I don't need to write first before I can read. It is a flash memory and the content remain constant during two power cycles. So the state shouldn't be inconsistent.

Another idea I had, is, that in fact it could work, but I don't see success because I'm in debug mode. So I describe my idea in more depth:

1) Program flash with an application that has the following feature: write flash content, read flash content
2) With debugger I see everything is ok
3) Modify application and delete the write command ( FEE001_Write )
4) Download new application and start
5) Read command ( FEE001_Read ) gives the known error

So I think I got the reason why: because with the download of the new application I destroy my previously written flash content and because of this I get the error again. Can anyone help me solving this problem?

Best regards
Sebastian
0 Likes
Travis
Employee
Employee
First solution authored Welcome! 500 replies posted
Hi Sebastian,

I had received some suggestions from the app developers which might address your issues.

Seems to us that your software might have actually overflow into the FEE memory area. This might explain why your previous content is erased after new application download.

To prevent this you have to limit the PFLASH accessible region which can be done by File >> Properties >> Memory Settings Page. If in doubt please refer to the documentation in the HELP for DAVE apps under the topic of FEE001 >> App configuration.


1437.attach

1438.attach
0 Likes
Travis
Employee
Employee
First solution authored Welcome! 500 replies posted
Hi Sebastian,

Some reason for your error status "Inconsistent".

1439.attach
0 Likes
Travis
Employee
Employee
First solution authored Welcome! 500 replies posted
Hi Sebastian,

Some reason for your error status "Inconsistent".

1439.attach
0 Likes
Not applicable
Hi Travis,

thank you very much for your help. I tried your suggestions and it worked (please see description below). I wanted to write that I tried out another solution which worked for me. I post here the source code:


/* ...... */

FEE001_StartGarbageCollection();

// Try to read the block VERSION_BLOCK, if fails then program with a global initial variable

if( FEE001_Read( VERSION_BLOCK, 0U, &VersionParameter, 1U ) != FEE001_COMPLETE )
{
// should only be visible the first time
UART0_puts("Programming Flash ...\n");
if (FEE001_Write(VERSION_BLOCK, "a") == FEE001_COMPLETE)
{
InternerStatus = STATUS_OK;
}
}


This is working too. But this cannot be a good solution because there can be instruction code for the XMC1100, I think so far it was luck that this was working. 🙂 So I had a look in the memory settings you described above. And in fact, the memory regions overlapped. So I changed the Memory Settings according to your suggestions above which is certainly the better solution!

Just one additional question:

When I start the debug session, I always get the message "Programming Flash..." (see code snippet above). So I made a second debug configuration with the following settings (I unchecked the boxes: "Initial download of program", "Verify download of program" and "Program flash when downloading"):

1442.attach

Then the UART message disappears. So I think the debug session with the programming of the flash programs all the flash. Is this possible? And can I change this in order just the code segment gets programmed?

And another very important question:
Is it possible somehow to initialize the FEE sections configured with the app with default values? I mean so on the first read there is already valid data in the sections without an initial write in the MC application itself. It would be great if this was possible.

Thanks for helping!
Sebastian
0 Likes