TI中文支持网
TI专业的中文技术问题搜集分享网站

MSPM0G3507: 内存分配问题

Part Number:MSPM0G3507

MEMORY
{FLASH(RX)  : origin = 0x00000000, length = 0x00008000SRAM(RWX) : origin = 0x20200000, length = 0x00004000BCR_CONFIG(R): origin = 0x41C00000, length = 0x000000FFBSL_CONFIG(R): origin = 0x41C00100, length = 0x00000080
}

SECTIONS
{.intvecs:> 0x00000000.text: palign(8) {} > FLASH.const  : palign(8) {} > FLASH.cinit  : palign(8) {} > FLASH.pinit  : palign(8) {} > FLASH.rodata : palign(8) {} > FLASH.ARM.exidx: palign(8) {} > FLASH.init_array: palign(8) {} > FLASH.binit: palign(8) {} > FLASH.TI.ramfunc: load = FLASH, palign(8), run=SRAM, table(BINIT).vtable :> SRAM.args:> SRAM.data:> SRAM.bss:> SRAM.sysmem :> SRAM.stack  :> SRAM (HIGH).BCRConfig  : {} > BCR_CONFIG.BSLConfig  : {} > BSL_CONFIG
}

这是device_link.cmd文件的内存分布,根据报错信息 #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section, or the section contains padded functions. run placement with alignment fails for section ".data" size 0xeaac.  Available memory ranges:。应该需要增大.data存储的空间,即SRAM,但是我在device_link.cmd文件中把length修改为0x00040000后,再次build发现文件恢复到了我修改前。请问应该如何解决呢

Eirwen:

已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

,

Daniel:

您好

根据您的报错您应该存放数据超过预定范围,在优化过程,请注意如下帖子说明的问题。

e2e.ti.com/…/5566697

,

Enqi Shi:

我可否将.data放在除了SRAM以外的空间呢,并且如果是显示.text超过预定范围了是不是可以通过调整内存地址来解决,直接修改device_link.cmd文件吗

,

Enqi Shi:

那我可以将.data同时放在其他位置吗。并且如果报错.text超过内存预定范围,是不是可以通过修改FLASH的地址范围来解决,直接在device_link.cmd文件修改吗

,

Daniel:

您好

如果您的数据超过相关内存范围,建议优化数据来解决问题,如果按照您的方式可能在编程过程中比较麻烦,且出现中断情况下可能造成数据丢失的后果。

,

Enqi Shi:

好的非常感谢您的解答,我先优化数据。我还想问一下如果.text报错,这个恐怕没法优化代码来解决,此时应该怎么办呢。是在device_link.cmd文件中将FLASH的地址范围增大吗

,

Daniel:

您好

之前的问题,是否已经厘清,如果厘清,那么新的问题请重新发帖。

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