Following is a code I wrote for debugging an arm bare-metal application.
#define OCM2_START (0xffff0000)
#define AAC_QUE_SIZ 50
#define UINT_OFFSET (sizeof(unsigned int))
#define INT_OFFSET (sizeof(int ))
print("here...... 1\r\n");
volatile long long *pktpts =((volatile long long *) (OCM2_START + UINT_OFFSET * (AAC_QUE_SIZ + 3) + INT_OFFSET * 4));
volatile unsigned int* t1 = ((volatile unsigned int *) (OCM2_START + UINT_OFFSET * (AAC_QUE_SIZ + 3) + INT_OFFSET * 4));
*t1 = 10;
print("here ----\r\n");
*pktpts = pts;
print("here 555\r\n");
When I compile the code with optimization on and run, when assigning to "pktpts" pointer it throws an exception. But that does not happen when i compiled the code without optimizations.
What I do is store a certain long long value in that memory location and read it using another processor core.
Can anyone tell me why it is happening here? I am using Xilinx SDK 2014.2
Thank you.