我的CE0上接了一片4M的sram,我在cmd文件中将程序段映射到了CE0上的地址空间,但是下载程序时提示了这一空间无效;
请问如果要将程序下载进去是否还需要在硬件上做什么改动呢?
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.
您给我的例程有点复杂,看的不是很明白,下面这一个是我配置的cmd文件,程序放置在PROG0段中,定义在起始地址为40000h的片外空间,您帮我看下是否还缺少了什么东西,另外在Load之前是否需要将dsp或者是RAM芯片上的某些引脚接低电平用来选中呢?
MEMORY
{
PAGE 0:
PROG0(RWX) : origin = 40000h length = 200000h
P_VECT(RIX) : origin = 0FF80h length = 00080h
PAGE 1:
DATA0(RW) : origin = 0c000h length = 04000h
}
SECTIONS
{
.vectors : { } > P_VECT PAGE 0
.text : { } > PROG0 PAGE 0
.cinit : { } > PROG0 PAGE 0
.csldata : { } > DATA0 PAGE 1
.stack : { } > DATA0 PAGE 1
.sysstack : { } > DATA0 PAGE 1
.bss : { } > DATA0 PAGE 1
.cio : { } > DATA0 PAGE 1
.const : { } > DATA0 PAGE 1
.sysmem : { } > DATA0 PAGE 1
}
hotmenu C5509_Init()
{
/*GEL_Reset();*/
GEL_MapOn();
GEL_MapReset();
/* Program Space */
GEL_MapAdd(0x000100u,0,0x000100u,1,1); /* VECT */
GEL_MapAdd(0x000200u,0,0x00fe00u,1,1); /* DARAM */
GEL_MapAdd(0x010000u,0,0x030000u,1,1); /* SARAM */
GEL_MapAdd(0x040000u,0,0x3c0000u,1,1); /* External CE0 */
GEL_MapAdd(0x400000u,0,0x400000u,1,1); /* External CE1 */
GEL_MapAdd(0x800000u,0,0x400000u,1,1); /* External CE2 */
GEL_MapAdd(0xC00000u,0,0x400000u,1,1); /* External CE3 */
/* Data Space */
GEL_MapAdd(0x000000u,1,0x000050u,1,1); /* MMRs */
GEL_MapAdd(0x000060u,1,0x007FA0u,1,1); /* DARAM */
GEL_MapAdd(0x008000u,1,0x018000u,1,1); /* SARAM */
GEL_MapAdd(0x020000u,1,0x1fe000u,1,1); /* External CE0 */
GEL_MapAdd(0x200000u,1,0x200000u,1,1); /* External CE1 */
GEL_MapAdd(0x400000u,1,0x200000u,1,1); /* External CE2 */
GEL_MapAdd(0x600000u,1,0x200000u,1,1); /* External CE3 */
/* IO Space */
GEL_MapAdd(0x0000u,2,0x0400u,1,1); /* RHEA 1KW */
GEL_MapAdd(0x07fdu,2,0x01u,1,1); /* EMIF 1KW */
GEL_MapAdd(0x0800u,2,0x0400u,1,1); /* EMIF 1KW */
GEL_MapAdd(0x0C00u,2,0x0400u,1,1); /* DMA 1KW */
GEL_MapAdd(0x1000u,2,0x0400u,1,1); /* TIMER#0 1KW */
GEL_MapAdd(0x1400u,2,0x0400u,1,1); /* ICACHE 1KW */
GEL_MapAdd(0x1C00u,2,0x0400u,1,1); /* CLKGEN 1KW */
GEL_MapAdd(0x2000u,2,0x0400u,1,1); /* TRACE FIFO 1KW */
GEL_MapAdd(0x2400u,2,0x0400u,1,1); /* TIMER#1 1KW */
GEL_MapAdd(0x2800u,2,0x0400u,1,1); /* SERIAL PORT#0 1KW */
GEL_MapAdd(0x2C00u,2,0x0400u,1,1); /* SERIAL PORT#1 1KW */
GEL_MapAdd(0x3000u,2,0x0400u,1,1); /* SERIAL PORT#2 1KW */
GEL_MapAdd(0x3400u,2,0x0400u,1,1); /* GPIO 1KW */
GEL_MapAdd(0x3800u,2,0x0400u,1,1); /* ID 1KW */
GEL_MapAdd(0x3C00u,2,0x000cu,1,1); /* I2C 1KW */
GEL_MapAdd(0x4800u,2,0x0400u,1,1); /* MMC0 1KW */
GEL_MapAdd(0x4C00u,2,0x0400u,1,1); /* MMC1 1KW */
GEL_MapAdd(0x5000u,2,0x0400u,1,1); /* MS0 1KW */
GEL_MapAdd(0x5400u,2,0x0400u,1,1); /* MS1 1KW */
GEL_MapAdd(0x6800u,2,0x0400u,1,1); /* ADC 1KW */
GEL_MapAdd(0x6C00u,2,0x0400u,1,1); /* EXTBUS 1KW */
GEL_TextOut("C5509_Init Complete.\n");
}
这一个是系统自带的gel文件中的初始化函数,我看到他这里面已经做好了内存的映射,现在有一个问题是如果我将自己定义的数组放置到片外去,程序可以下载进去,而且也可以访问该数组,但如果我在cmd文件中将程序段放置到片外,则下载时会提示这段地址无效。