由于在ram调试DSP程序比较方便,一直都在ram做调试.最近由于代码量比较大,尝试修改cmd文件,修改之后出现无法调试的问题,希望大神能给予指点.
主控:2808
CCS版本:CCS6.0
仿真器:XDS100V3
原CMD文件为官方例程文件 2808_RAM_lnk.cmd 配置如下:
MEMORY
{
PAGE 0 :
BEGIN : origin = 0x000000, length = 0x000002 RAMM0 : origin = 0x000002, length = 0x0003FE
RAML0 : origin = 0x008000, length = 0x001000 PRAMH0 : origin = 0x3FA000, length = 0x001000 RESET : origin = 0x3FFFC0, length = 0x000002
BOOTROM : origin = 0x3FF000, length = 0x000FC0
PAGE 1 :
BOOT_RSVD : origin = 0x000400, length = 0x000080
RAMM1 : origin = 0x000480, length = 0x000380
DRAMH0 : origin = 0x3FB000, length = 0x001000}
SECTIONS
{
/* Setup for "boot to SARAM" mode: The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */
codestart : > BEGIN, PAGE = 0
ramfuncs : > RAMM0 PAGE = 0
.text : > PRAMH0, PAGE = 0
.cinit : > RAMM0, PAGE = 0
.pinit : > RAMM0, PAGE = 0
.switch : > RAMM0, PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */
.stack : > RAMM1, PAGE = 1
.ebss : > DRAMH0, PAGE = 1
.econst : > DRAMH0, PAGE = 1 .esysmem : > RAMM1, PAGE = 1
IQmath : > PRAMH0, PAGE = 0
IQmathTables : > BOOTROM, type = NOLOAD, PAGE =
}
为了扩展空间,将红字部分改为
PRAMH0 : origin = 0x3F8000, length = 0x002000
DRAMH0 : origin = 0x3FA000, length = 0x002000
出现如下错误
C28xx: File Loader: Data verification failed at address 0x003F8000 Please verify target memory and memory map.
经查实3F8000–3FBFFF确实为2808有效内存空间,实在想不明白问题所在,望指点.
Hank Zhao:
0x008000和0x003F8000 地址指向的是同一块RAM区域,两者只能二选一,一块存储区域不能被分配两次。
由于在ram调试DSP程序比较方便,一直都在ram做调试.最近由于代码量比较大,尝试修改cmd文件,修改之后出现无法调试的问题,希望大神能给予指点.
主控:2808
CCS版本:CCS6.0
仿真器:XDS100V3
原CMD文件为官方例程文件 2808_RAM_lnk.cmd 配置如下:
MEMORY
{
PAGE 0 :
BEGIN : origin = 0x000000, length = 0x000002 RAMM0 : origin = 0x000002, length = 0x0003FE
RAML0 : origin = 0x008000, length = 0x001000 PRAMH0 : origin = 0x3FA000, length = 0x001000 RESET : origin = 0x3FFFC0, length = 0x000002
BOOTROM : origin = 0x3FF000, length = 0x000FC0
PAGE 1 :
BOOT_RSVD : origin = 0x000400, length = 0x000080
RAMM1 : origin = 0x000480, length = 0x000380
DRAMH0 : origin = 0x3FB000, length = 0x001000}
SECTIONS
{
/* Setup for "boot to SARAM" mode: The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */
codestart : > BEGIN, PAGE = 0
ramfuncs : > RAMM0 PAGE = 0
.text : > PRAMH0, PAGE = 0
.cinit : > RAMM0, PAGE = 0
.pinit : > RAMM0, PAGE = 0
.switch : > RAMM0, PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */
.stack : > RAMM1, PAGE = 1
.ebss : > DRAMH0, PAGE = 1
.econst : > DRAMH0, PAGE = 1 .esysmem : > RAMM1, PAGE = 1
IQmath : > PRAMH0, PAGE = 0
IQmathTables : > BOOTROM, type = NOLOAD, PAGE =
}
为了扩展空间,将红字部分改为
PRAMH0 : origin = 0x3F8000, length = 0x002000
DRAMH0 : origin = 0x3FA000, length = 0x002000
出现如下错误
C28xx: File Loader: Data verification failed at address 0x003F8000 Please verify target memory and memory map.
经查实3F8000–3FBFFF确实为2808有效内存空间,实在想不明白问题所在,望指点.
杨旭:
回复 Hank Zhao:
感谢您的回复,这么说2808数据手册中内存映射图中的"Dual-Mapped"是指0x008000-0x00CFFFF地址和0x3F8000-0x3FCFFFF地址指向的是同一块物理内存?
我现在在cmd文件中
将
RAML0 : origin = 0x008000, length = 0x001000 删除
将PRAMH0 : origin = 0x3FA000, length = 0x001000改为
PRAMH0 : origin = 0x3F8000, length = 0x001000
依然报错
C28xx: File Loader: Data verification failed at address 0x003F8000 Please verify target memory and memory map.