专家你们好:
最近我调试DSP6678时用CCS5.1开发环境,在C代码中用DATA SECTION伪指令,目的把一段buffer空间分配到指定的段中,但最后编译成功后,在符号表中却找不到buffer符号,不要DATA SECTION伪指令后在符号表中能够找到buffer符号。请问怎么解决该问题。
Allen35065:
你可以把相关代码贴出来看看
一般使用方式,
.cmd文件里
MEMORY
{
L2: o=0x10800000, l=0x00100000
}
SECTIONS
{
.myData > L2
}
C文件里
#pragma DATA_SECTIONS(nArray, ".myData")
int nArray[];
jun lu1:
回复 Allen35065:
我写的C代码肯cmd文件和你说的一样,我这些C代码和cmd文件在其他平台比如C6455、CCS4.1下面都是好的,就是弄到CCS5.1下面后就不行了。
striker Qian:
回复 jun lu1:
工程中含有cfg文件吗?不如你把相关代码简化一下和cmd文件一起贴上来看看。
jun lu1:
回复 striker Qian:
今天我又做实验,coff格式可以,用elf格式就不行,是不是elf格式存在编译器bug,或者是否还需设置编译选项,如果是设置哪些?
striker Qian:
回复 jun lu1:
这个问题应该跟coff还是elf格式没有关系,也不会是编译器选项的问题。不如你把你试验失败的elf工程贴上来看看。另外,ccs v5.1 好像不如ccs5.2或者ccs5.3好用,在win7下经常遇到意想不到的bug。建议你安装更高的ccs版本后再试一试。
jun lu1:
回复 striker Qian:
原因已查明,优化能力CCS4.1强,在未开启任何优化选项下未使用的全局变量被优化掉了,即使加上VOLATILE,或者CONST修饰.