我用的是F28335采用TI官方给的定点FFT库sprc081来计算128点FFT,h,C, ASM ,CMD文件都用的FFT库sprc081里面的文件,编译没问题,但是下载程序时出现load program时出错 显示data verification failed at address 0x3fffc0,please verify target memory and memary map.
请问是什么意思 怎么解决啊?
我怀疑是CMD文件配置的问题
我的源文件
#include "DSP2833x_Device.h"
#include "DSP2833x_examples.h"
#include "IQmathLib.h"
#include "math.h"
//#include <stb.h>
#include <fft.h>
/* Create an Instance of FFT module*/
#defineN128
#definepi 3.1415916
#defineTs 1.0/6400.0//采样周倜
#definef50//三相电压的频率
inti=0;
#pragma DATA_SECTION(ipcb, "FFTipcb");
#pragma DATA_SECTION(mag, "FFTmag");
RFFT32 fft=RFFT32_128P_DEFAULTS;
long Input[N];
long ipcb[N+2];
long mag[N/2+1];
/* Define window Co-efficient Array and place the
.constant section in ROM memory */
const long win[N/2]=HAMMING128;
void main()
{InitSysCtrl(); //初始化系统函数DINT;IER = 0x0000;//禁止CPU中断IFR = 0x0000;//清除CPU中断标志InitPieCtrl(); //初始化PIE控制寄存器InitPieVectTable(); //初始化PIE中断向量表
for (i=1;i<N;i++)
{Input[i] = _IQ30(1+2*sin(2*pi*f*i*Ts+pi/3)+0.1*sin(2*pi*3*f*i*Ts+pi/6));
}
/* Initialize FFT module*/fft.ipcbptr=ipcb;fft.magptr=mag;fft.winptr=(long *)win;fft.init(&fft);
/*---------------------------------------------------------------------------Nothing running in the background at present
----------------------------------------------------------------------------*/
//RFFT32_brev(ipcb,ipcb,N);RFFT32_brev(Input,ipcb,N); // Input samples in Real Part//fft.win(&fft);
//RFFT32_brev(Input,ipcb,N);
//RFFT32_brev(ipcb,ipcb,N); // Input after windowingfft.calc(&fft);fft.split(&fft);fft.mag(&fft);
} /* End: main() */
CMD文件
MEMORY
{
PAGE 0 : PROG(R): origin = 0x3D8000, length = 0x20000
PAGE 0 : BOOT(R): origin = 0x3FF000, length = 0xFC0
PAGE 0 : RESET(R): origin = 0x3FFFC0, length = 0x2
PAGE 0 : VECS(R): origin = 0x3FFFC2, length = 0x3E
PAGE 0 : PIEVECS(R) : origin = 0x000D00, length = 0xFF
PAGE 0 : H0RAM(RW): origin = 0x3F8000, length = 0x2000
PAGE 1 : M0RAM(RW): origin = 0x000000, length = 0x400
PAGE 1 : M1RAM(RW): origin = 0x000400, length = 0x400
PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000
}
SECTIONS
{/* 22-bit program sections */.reset: > RESET,PAGE = 0vectors : > VECS,PAGE = 0.pinit: > H0RAM,PAGE = 0.cinit: > H0RAM,PAGE = 0.text: > H0RAM,PAGE = 0SINTBL : > H0RAM,PAGE = 0FFTtf > H0RAM,PAGE = 0FFTmag>L0L1RAM PAGE 1/* 16-Bit data sections */.const: > L0L1RAM, PAGE = 1.bss: > L0L1RAM, PAGE = 1.stack: > M1RAM,PAGE = 1.sysmem : > M0RAM,PAGE = 1FFTipcb ALIGN(512) : { } >L0L1RAM PAGE 1DLOG : > L0L1RAM PAGE = 1/* 32-bit data sections */.ebss: > L0L1RAM, PAGE = 1.econst : > L0L1RAM, PAGE = 1.esysmem : > L0L1RAM, PAGE = 1
}
mangui zhang:
看看有没有在工程下多添加.asm相关文件 remove一下看看
如果没有 建议你将CMD中PAGE 0 : RESET(R) : origin = 0x3FFFC0, length = 0x2的起始地址
根据datasheet中的存储器地址映射改改看
我用的是F28335采用TI官方给的定点FFT库sprc081来计算128点FFT,h,C, ASM ,CMD文件都用的FFT库sprc081里面的文件,编译没问题,但是下载程序时出现load program时出错 显示data verification failed at address 0x3fffc0,please verify target memory and memary map.
请问是什么意思 怎么解决啊?
我怀疑是CMD文件配置的问题
我的源文件
#include "DSP2833x_Device.h"
#include "DSP2833x_examples.h"
#include "IQmathLib.h"
#include "math.h"
//#include <stb.h>
#include <fft.h>
/* Create an Instance of FFT module*/
#defineN128
#definepi 3.1415916
#defineTs 1.0/6400.0//采样周倜
#definef50//三相电压的频率
inti=0;
#pragma DATA_SECTION(ipcb, "FFTipcb");
#pragma DATA_SECTION(mag, "FFTmag");
RFFT32 fft=RFFT32_128P_DEFAULTS;
long Input[N];
long ipcb[N+2];
long mag[N/2+1];
/* Define window Co-efficient Array and place the
.constant section in ROM memory */
const long win[N/2]=HAMMING128;
void main()
{InitSysCtrl(); //初始化系统函数DINT;IER = 0x0000;//禁止CPU中断IFR = 0x0000;//清除CPU中断标志InitPieCtrl(); //初始化PIE控制寄存器InitPieVectTable(); //初始化PIE中断向量表
for (i=1;i<N;i++)
{Input[i] = _IQ30(1+2*sin(2*pi*f*i*Ts+pi/3)+0.1*sin(2*pi*3*f*i*Ts+pi/6));
}
/* Initialize FFT module*/fft.ipcbptr=ipcb;fft.magptr=mag;fft.winptr=(long *)win;fft.init(&fft);
/*---------------------------------------------------------------------------Nothing running in the background at present
----------------------------------------------------------------------------*/
//RFFT32_brev(ipcb,ipcb,N);RFFT32_brev(Input,ipcb,N); // Input samples in Real Part//fft.win(&fft);
//RFFT32_brev(Input,ipcb,N);
//RFFT32_brev(ipcb,ipcb,N); // Input after windowingfft.calc(&fft);fft.split(&fft);fft.mag(&fft);
} /* End: main() */
CMD文件
MEMORY
{
PAGE 0 : PROG(R): origin = 0x3D8000, length = 0x20000
PAGE 0 : BOOT(R): origin = 0x3FF000, length = 0xFC0
PAGE 0 : RESET(R): origin = 0x3FFFC0, length = 0x2
PAGE 0 : VECS(R): origin = 0x3FFFC2, length = 0x3E
PAGE 0 : PIEVECS(R) : origin = 0x000D00, length = 0xFF
PAGE 0 : H0RAM(RW): origin = 0x3F8000, length = 0x2000
PAGE 1 : M0RAM(RW): origin = 0x000000, length = 0x400
PAGE 1 : M1RAM(RW): origin = 0x000400, length = 0x400
PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000
}
SECTIONS
{/* 22-bit program sections */.reset: > RESET,PAGE = 0vectors : > VECS,PAGE = 0.pinit: > H0RAM,PAGE = 0.cinit: > H0RAM,PAGE = 0.text: > H0RAM,PAGE = 0SINTBL : > H0RAM,PAGE = 0FFTtf > H0RAM,PAGE = 0FFTmag>L0L1RAM PAGE 1/* 16-Bit data sections */.const: > L0L1RAM, PAGE = 1.bss: > L0L1RAM, PAGE = 1.stack: > M1RAM,PAGE = 1.sysmem : > M0RAM,PAGE = 1FFTipcb ALIGN(512) : { } >L0L1RAM PAGE 1DLOG : > L0L1RAM PAGE = 1/* 32-bit data sections */.ebss: > L0L1RAM, PAGE = 1.econst : > L0L1RAM, PAGE = 1.esysmem : > L0L1RAM, PAGE = 1
}
gang wang14:
回复 mangui zhang:
你好 我对地址不太清楚 你做过这方面的么?能不能发我一个可用的
TI中文支持网