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

cross mob
User16898
Level 4
Level 4
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
0 Likes
2 Replies
cwunder
Employee
Employee
5 likes given 50 likes received 50 solutions authored
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();
}
0 Likes
User16898
Level 4
Level 4
hi,
Thanks for quick response.

what

__isync();
__dsync();

function does ?
0 Likes