|
问题如下:
用并口仿真器仿真6711,用ccs2.2 现在程序load总是报错,"data verification failed at address 0x00" 不知道是什么原因,以下是程序的一些配置文件,大侠帮忙看看是不是有问题呢?
------- lnk.cmd ------- -l rts6700.lib MEMORY { vecs: o=00000000h l=00000200h IRAM: o=00000200h l=0000EE00h }
SECTIONS { "vectors" > vecs .cinit > IRAM .text > IRAM .stack > IRAM .bss > IRAM .const > IRAM .data > IRAM .far > IRAM .switch > IRAM .sysmem > IRAM .tables > IRAM .cio > IRAM }
------------ vector.asm ------------
.ref _c_int00 .ref _ExtInt4
.sect "vectors" RESET: b _c_int00 NOP NOP NOP NOP NOP NOP NOP
NMI: NOP NOP NOP NOP NOP NOP NOP NOP
RESV1: NOP NOP NOP NOP NOP NOP NOP NOP
RESV2: NOP NOP NOP NOP NOP NOP NOP NOP
INT4: b _ExtInt4 NOP NOP NOP NOP NOP NOP NOP
INT5: NOP NOP NOP NOP NOP NOP NOP NOP 略
---------------- DSP621x_671x.gel -----------------
StartUp() { emif_init(); }
OnReset(int nErrorCode) { GEL_BreakPtReset(); FlushCache(); emif_init(); }
OnPreFileLoaded() { FlushCache(); }
FlushCache() { *(int *)0x01840000 = (*(int *)0x01840000 | 0x00000300); }
emif_init() {
#define EMIF_GCTL 0x01800000 #define EMIF_CE1 0x01800004 #define EMIF_CE0 0x01800008 #define EMIF_CE2 0x01800010 #define EMIF_CE3 0x01800014 #define EMIF_SDRAMCTL 0x01800018 #define EMIF_SDRAMTIMING 0x0180001C #define EMIF_SDRAMEXT 0x01800020
*(int *)EMIF_GCTL = 0x00003040;/* EMIF global control register */ *(int *)EMIF_CE1 = 0xFFFFFF23; /* CE1 - 32-bit asynch access after boot*/ *(int *)EMIF_CE0 = 0xFFFFFF30; /* CE0 - SDRAM */ *(int *)EMIF_CE2 = 0xFFFFFF23; /* CE2 - 32-bit asynch on daughterboard */ *(int *)EMIF_CE3 = 0xFFFFFF23; /* CE3 - 32-bit asynch on daughterboard */ *(int *)EMIF_SDRAMCTL = 0x07117000; /* SDRAM control register (100 MHz)*/ *(int *)EMIF_SDRAMTIMING = 0x0000061A; /* SDRAM Timing register */ }
解答如下:
在CCS下,OUT文件加载时提示“Data verification failed...”的原因?
Link的CMD文件分配的地址同GEL或设置的有效地址空间不符。中断向量定位处或其它代码、数据段定位处,没有RAM,无法加载OUT文件。解决方法: 1)调整Link的CMD文件,使得定位段处有RAM。 2)调整存储器设置,使得RAM区有效。
如果是自己研发的板子,检查看看有没有引脚虚汗的
|