以下是我为调试arm裸机应用程序而编写的代码。
#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");
当我编译优化的代码并运行时,分配给" pktpts"指针它抛出一个异常。但是当我在没有优化的情况下编译代码时就不会发生这种情况。
我所做的是在该内存位置存储一个长的长值,并使用另一个处理器内核读取它。
谁能告诉我为什么会发生这种情况?我正在使用Xilinx SDK 2014.2
谢谢。