This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP L138 arm和dsp数据通信问题

Other Parts Discussed in Thread: SYSBIOS

我在shared ram区域定义了一个数据结构如下:

typedef struct{
volatile Bool HEARTBEAT;
volatile Bool DSP_FUNC1;
volatile Bool DSP_FUNC2;
volatile Bool DSP_FUNC3;
volatile Bool DSP_FUNC4;
} sharedCpuVars;

typedef volatile sharedCpuVars *sharedCpuVarsPtr;

sharedCpuVarsPtr sharedVars = (sharedCpuVarsPtr)(0x80000000);

然后分别在arm和dsp程序中进行中断映射,arm触发中断,dsp响应中断,在中断处理过程中去修改HEARTBEAT这个值,arm程序中去读HEARTBEAT这个值

dsp中修改变量:

void SYSCFG_chip3_isr (void)
{

    sharedVars->HEARTBEAT |= TRUE;

CSL_FINST(sysRegs->CHIPSIG_CLR, SYSCFG_CHIPSIG_CLR_CHIPSIG3, CLEAR);
}

arm中读变量:

while(sharedVars->HEARTBEAT == FALSE)
{

}

这样的过程如果不用sysbios(V6.33.1.25),一切运行很正常,但是一旦dsp程序中用了sysbios之后,我调试跟踪HEARTBEAT这个值已经被修改为1了,但在arm程序中调试跟踪HEARTBEAT这个值一直是0,不变化。

内存是EMIFA  SDRAM

这是为什么呢?