TI中文支持网
TI专业的中文技术问题咨询交流网站

28035cmd文件内存分配问题

目前我的项目用的是28035芯片,因开发需要增加功能,增加代码后发现.EBSS内存空间不够用了,更改前CMD文件和更改后CMD文件见附件,更改CMD文件后程序编译正常,但实际运行时程序中好多变量的值却不对了。请问Ti工程师帮忙分析一下。目前.EBSS段分配到两个RAM区,且这两个RAM地址不连续,不认怀疑是地址不连续造成的。

cmd.zip

naughty boy:

纠正:目前我的项目用的是28035芯片,因开发需要增加功能,增加代码后发现.EBSS内存空间不够用了,更改前CMD文件和更改后CMD文件见附件,更改CMD文件后程序编译正常,但实际运行时程序中好多变量的值却不对了。请问Ti工程师帮忙分析一下。目前.EBSS段分配到两个RAM区,且这两个RAM地址不连续,个人怀疑是地址不连续造成的

Susan Yang:

Contiguous SARAM memory blocks can be combined if required to create a larger memory block.

您现在的 dataRAM: origin = 0x008000, length = 0x001000/* data RAM (L0-L2) */dataRAM1: origin = 0x3F8000, length = 0x000800

是不连续的,所以下面的语句不能成功combine
.ebss: >> dataRAM1|dataRAM,PAGE = 1

在下面的帖子中提到了一种方法,您可以参考一下

e2e.ti.com/…/284770

naughty boy:

回复 Susan Yang:

那是否可以将FLASHH区作为RAM,将。ebss链接到H区

Susan Yang:

回复 naughty boy:

不可以的,需要在同一个page

naughty boy:

回复 Susan Yang:

我看了一下memory mapsL0 SARAM、L1DPSARAM、L2DPSARAM和L3DPSARAM的地址是连续,这就需要.ebss占用一部分L3 DPSARAM,但程序中使用CLA功能如果把CLAPROG起始指定为0x9000以外的地址是否可以,我试着将CLAPROG的起始地址改为0x9800,编译也没有错误,但CLA似乎不运行了,还有别的解决方法吗?

naughty boy:

回复 Susan Yang:

ti工程师我的问题还没有解决麻烦您回复一下

naughty boy:

回复 Susan Yang:

我按照链接上的方法试了一下,利用data_section将程序中大的数组指定到另一个ram区但运行时发现,程序中用到data_scetion指定的数据数组时,数据就会出错,请问是什么原因

Susan Yang:

回复 naughty boy:

很抱歉,漏掉了您的回复

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/284770?28035-linker-file-problem-no-sufficient-memory-space-for-ebss 

链接中提到了下面的方法

main.c:

volatile int x [64];volatile int y [64];void main(void){}

如果将y [64]的声明移动到另一个源文件(例如foo.c),则链接器将沿对象模块边界拆分.ebss节,并将其放入指定的内存中。生成的.map文件显示了拆分为两个不同的.ebss节

还有一种是使用#pragma DATA_SECTION

把变量放在一个特定的空间内,其中data_section是针对数据空间的,具体的使用办法是

#pragma DATA_SECTION(bufferB, ”my_sect”)char bufferB[512];

在.cmd文件中建立对应的section就可以使用了.

具体您可以看一下 6.10.7 The DATA_SECTION Pragma

https://www.ti.com/lit/ug/spru514t/spru514t.pdf 

能给出您是如何在c文件以及cmd文件定义的吗?

naughty boy:

回复 Susan Yang:

我将我的C文件部分代码和cmd文件传至附件,我发现每当数据错误时只要注释掉一个DATAsection语句就可以解决,我怀疑还是CMD文件RAM 内存分配问题,我的项目使用了CLA功能我将RANL3的一部分分配给了CLA的代码指令,另一部分分配给了.cio和.sysmem

.bss_cla     .scratchpadcmd文件.zip

赞(0)
未经允许不得转载:TI中文支持网 » 28035cmd文件内存分配问题
分享到: 更多 (0)