你好,我使用CCS3.3和C6701。
由于程序比较大,IPRAM放不下,所以想在外部RAM中自定义段,存放剩余的程序。这就需要给自定义的段分配存储空间。但是DSP/BIOS自动生成的cmd文件又不允许修改。请问,自定义的cmd文件应该怎样编写才能解决我的问题呢?望赐教!谢谢!
Shine:
可以在自定义cmd文件中用-l cfg.cmd添加bios cmd文件,这两个cmd文件定义的段不要overlap。请看dsp/bios user guide.
5.1.3 Defining Segments in Your Own Linker Command File
www.ti.com/…/spru423i.pdf
user5846346:
回复 Shine:
谢谢回复!
我看了下那个文档,里面有个例子,将.text和.bss都分配到了SDRAM0,如下图:
我也想这么分配,但是DSP/BIOS中也有关于.text和.bss的相关分配选择框。
这种情况该怎么处理?
Shine:
回复 user5846346:
.text段不能同时分配到两个memory。
user5846346:
回复 Shine:
那像例子里的那种情况是怎么回事呢?
Shine:
回复 user5846346:
designcfg.cmd里也分配.text段了?
user5846346:
回复 Shine:
上面第二张图中是DSP/BIOS的配置工具,designcfg.cmd是由它自动生成的,.text段必须要在下拉框中选择一个存储空间。所以designcfg.cmd中肯定也会有.text段的分配。
Tony Tang:
回复 user5846346:
user5846346上面第二张图中是DSP/BIOS的配置工具,designcfg.cmd是由它自动生成的,.text段必须要在下拉框中选择一个存储空间。所以designcfg.cmd中肯定也会有.text段的分配。
你开始的问题是说要将部分自定义段分配到外部空间,现在的问题好像变了。是要把.text段放到片外?如果是,直接在BIOS下拉选择就好了。
如果不是要安排自定义段,在BIOS里都能解决而不需要加自定义的.cmd。
user5846346:
回复 Tony Tang:
可能是我对外部空间和片外的理解有误,这俩有区别吗?下图蓝框是内部程序存储器IPRAM,那红框中的CE0,CE1,CE2,CE3属于外部空间还是片外?
我将自定义的段.idram2指向CE0的存储空间,然后在部分程序前使用了#pragma CODE_SECTION (symbol ,.idram2)伪指令,这样是不是就把这些程序段放在了CE0中,而剩下的程序就默认放在.text段,如果在DSP/BIOS中将.text指向IPRAM,那么剩下的程序段就是放在IPRAM中的。你看我这样理解对吗?谢谢!
Shine:
回复 user5846346:
是这么理解,CODE_SECTION定义的段可以单独分配到指定的memory。
user5846346:
回复 Shine:
谢谢!那再请问两个问题:
1、IPRAM和CE0这些空间都是RAM,在功能上有什么区别呢?
2、指向CE0的程序是不是被存放在DSP外挂的RAM芯片了?