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.

TMS320F28335如何在外扩SRAM上仿真

Other Parts Discussed in Thread: TMS320F28335, CONTROLSUITE

我最近在用TMS320F28335做一个实验,由于代码量较大,片上的34kSRAM显得过小,我的开发板上有一个外扩SRAM,大小为256k,可是我通过#pragma CODE_SECTION(func,"section name")函数把一个DMA中断函数复制到外扩的SRAM时,程序总是进入ILLEGAL_ISR中。

DMA中断函数中有FFT运算,在单步调试时发现是程序运行到math.h中的log()函数时就进入ILLEGAL_ISR中,而把这些函数放在片内运行时就不会进入ILLEGAL_ISR,网上关于CODE_SECTION的资料少之又少,大部分都是关于DATA_SECTION的,所以希望你们能给我提供一些帮助,谢谢!

1.主函数文件中的一些代码:

#pragma DATA_SECTION(ChannelsData,"DMARAML4");
#pragma DATA_SECTION(XW,"DMARAML5");
#pragma CODE_SECTION(dma_isr,"ZONE7A");

interrupt void dma_isr()
{
PieCtrlRegs.PIEACK.bit.ACK7=1;
int i=0;
for(i=0;i<ChannelSize;i++)
{
XW[i].real=((float)ChannelsData[0][i]-2300)/30;
XW[i].imag=0;
}
//
mcmpfft(XW, ChannelSize,-1);//程序运行到此行后,进入ILLEGAL_ISR
for(i=0;i<ChannelSize;i++)
{
y[i]=mabs(XW[i]);
//y[i]=sqrt((double)10.23);
}
asm(" ESTOP0");

}


2.cmd文件中的相关代码:

MEMORY
{
PAGE 0 :

。。。

ZONE7A      : origin = 0x200000, length = 0x30000    /* XINTF zone 7 - program space */

。。。

}