Not applicable
Jul 23, 2015
03:52 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 23, 2015
03:52 AM
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
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
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
6 Replies
Not applicable
Jul 23, 2015
07:46 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 23, 2015
07:46 AM
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
Best regards,
Sebastian
Not applicable
Jul 24, 2015
02:57 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 24, 2015
02:57 AM
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
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
Jul 27, 2015
12:07 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 27, 2015
12:07 AM
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.
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.
Jul 27, 2015
12:24 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 27, 2015
12:24 AM
Hi Sebastian,
Some reason for your error status "Inconsistent".
Some reason for your error status "Inconsistent".
Jul 27, 2015
12:25 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 27, 2015
12:25 AM
Hi Sebastian,
Some reason for your error status "Inconsistent".
Some reason for your error status "Inconsistent".
Not applicable
Jul 28, 2015
01:00 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Jul 28, 2015
01:00 AM
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:
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"):

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
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"):
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