CMD程序如下:
MEMORY
{
PAGE 0: EPROG: origin = 0x4000, len = 0xb000
VECT: origin = 0xff80, len = 0x80
PAGE 1: USERREGS: origin = 0x60, len = 0x1c
BIOSREGS: origin = 0x7c, len = 0x4
IDATA: origin = 0x80, len = 0x3f80
EDATA: origin = 0x4000, len = 0x8000
EDATA1: origin = 0xc000, len = 0x3000
}
SECTIONS
{
.vectors: {} > VECT PAGE 0
.sysregs: {} > BIOSREGS PAGE 1
.trcinit: {} > EPROG PAGE 0
.gblinit: {} > EPROG PAGE 0
frt: {} > EPROG PAGE 0
.text: {} > EPROG PAGE 0
.cinit: {} > EPROG PAGE 0
.pinit: {} > EPROG PAGE 0
.sysinit: {} > EPROG PAGE 0
.bss: {} > IDATA PAGE 1
.far: {} > IDATA PAGE 1
.const: {} > IDATA PAGE 1
.switch: {} > IDATA PAGE 1
.sysmem: {} > IDATA PAGE 1
.cio: {} > IDATA PAGE 1
.MEM$obj: {} > IDATA PAGE 1
.sysheap: {} > IDATA PAGE 1
.stack: {} > IDATA PAGE 1
}
其实就是用的CCS里面的示例程序的CMD文件改了一下~ROM只对程序存储、DRAM只对数据存储,可以外接ROM和RAM的状态~
但是为什么一旦把程序存储4000~EFFF空间设置为外部ROM的状态,程序就无法LOAD呢?在CCS里面没有EPPROM的选项。但是只要把ROM改成RAM,程序就可以LOAD了。
在此还有几个小问题
1、C54X其他系列只要能够把ROM映射到数据空间的都是单独分出了一段ROM空间,不过好象5402能够映射到数据空间的ROM即程序空间的那个4K,请问是不是这种情况?
2、5402的那个4KROM空间是不是用户无法写入东东的?但是也只是高2K有东西,那么低2K怎么用,能够通过什么手段写入用户代码吗?(还是如书上讲的要交给TI写入)
3、单片机是编程时即分配了地址,DSP通过链接器来再分配地址。RESET矢量地址在片内ROM的FF80~FFFF空间里面,一般RESET地址存储的是RESET之后程序开始运行的跳转地址。请问对于DSP这种链接时才分配地址的情况是如何映射这类地址的(即如何跳转到程序运行空间的,因为RESET等中断字都在ROM里面,肯定是事先写好的,里面对应的跳转地址是不能改变的,但是对于不同的ROM\\RAM映射情况、外接或者不外接的情况,程序开始运行的地址肯定是不一样的。)
刚开始学习DSP,请知道的前辈帮忙解释一下!
你的CMD文件中,PAGE0与PAGE1中的起始0X4000不是重叠了吗?
好像是有问题的,我自己编个程序试过,是不行的,我也不知道为什么?在dsp中程序和数据是统一编址的!能告诉我这是那程序的CMD文件吗?