Aug 21, 2019
04:13 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Aug 21, 2019
04:13 AM
Hi,
Ive got problem with copying redundancy data to standby RAM:
According to user manual reserved data is another address i should read value from the store it back to reserved_data, but it seems like this address is corrupted or not exist.
Every time I try to assign data from reserved_data address trap occur( for all reserved_data).
Trap details are class 4 and TIN 2 which mean data error(DSE, tc1.6 architecture datasheet), but I cannot figure out why it's happening.
reserved_data values are always the same so I assume they are correct addresses.
Endinit protection is also disabled.
How to solve this problem?
I work on Tc222L
RESERVED_DATA_ACCEPTANCE_VALUE_X are 0xFFFFFF and 0x0
Ive got problem with copying redundancy data to standby RAM:
According to user manual reserved data is another address i should read value from the store it back to reserved_data, but it seems like this address is corrupted or not exist.
Every time I try to assign data from reserved_data address trap occur( for all reserved_data).
Trap details are class 4 and TIN 2 which mean data error(DSE, tc1.6 architecture datasheet), but I cannot figure out why it's happening.
reserved_data values are always the same so I assume they are correct addresses.
Endinit protection is also disabled.
How to solve this problem?
I work on Tc222L
RESERVED_DATA_ACCEPTANCE_VALUE_X are 0xFFFFFF and 0x0
- Tags:
- IFX
- ram
- standby mode
2 Replies
Aug 21, 2019
09:23 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Aug 21, 2019
09:23 AM
Here is the code snippet that I used:
void CopyStandbyRedundancyData(void){
uint32_t *src = (uint32_t *)0xD0002000;
volatile uint32_t data;
/* Preparation before to enter Stand-by mode */
/* • read sequentially 16 words from the “reserved area” in CPU0_DSPR starting
* at address D000’2000H
* • for any word check either it equals FFFF FFFFH or zero.
* – if yes - skip it and go to the next reserved location
* – if no
* - use this word as 32-bit address, read the data from that address and
* store this data back into the same reserved location
* - go to the next reserved location
*/
for (uint32_t i = 0; i < 16; i++)
{
data = *src;
if ((0 == data) || (0xFFFFFFFF == data))
{
/*ignore and increment pointer */
src++;
}
else
{
/*need to move data*/
*src = *(uint32_t *) (data);
src++;
}
}
__isync();
__dsync();
}
Aug 21, 2019
11:46 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Aug 21, 2019
11:46 PM
hi,
Thanks for quick response.
what
__isync();
__dsync();
function does ?
Thanks for quick response.
what
__isync();
__dsync();
function does ?
This widget could not be displayed.