我的CE0上接了一片4M的sram,我在cmd文件中将程序段映射到了CE0上的地址空间,但是下载程序时提示了这一空间无效;
请问如果要将程序下载进去是否还需要在硬件上做什么改动呢?
noaming:
有没有使用GEL文件,对ram初始化操作?
hui hu2:
回复 noaming:
gel文件不是用于定义CCS的菜单命令的吗,我没有动过这个文件,您说的对RAM进行初始化操作是什么意思,我刚开始接触dsp,不是很明白您的意思
noaming:
回复 hui hu2:
GEL文件不是CCS的菜单命令,是一个用于连接CCS和板子的脚本。如果在CMD中把程序分配到外部ram,则需要在分配程序到外部ram之前,做外部ram初始化,内存映射等工作。
noaming:
回复 noaming:
可以参考一下这里面的资料:
Target Content v1DSK5509A target content built under bios 4.91. Contains Board Supprt Library, gel file and examples.
Downloadhttp://c5000.spectrumdigital.com/dsk5509a/
hui hu2:
回复 noaming:
您给我的例程有点复杂,看的不是很明白,下面这一个是我配置的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 }
noaming:
回复 hui hu2:
你好,外部RAM测试过了吗?只要测试过正常就可以了,不需要特别设置。load之前,GEL文件中要初始化以及配置外部RAM的内存映射。
hui hu2:
回复 noaming:
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文件中将程序段放置到片外,则下载时会提示这段地址无效。