This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TM4C123GH6PM:程序 don´t fit 到可用存储器中

Guru**** 2350610 points
Other Parts Discussed in Thread: TM4C123GH6PM, TMS570LC4357, RM57L843
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/607108/compiler-tm4c123gh6pm-program-don-t-fit-into-available-memory

器件型号:TM4C123GH6PM
主题中讨论的其他器件: TMS570LC4357RM57L843

工具/软件:TI C/C++编译器

我的´m 大小有问题、我收到一条错误消息:

说明   资源   路径   位置   类型
"="">processors.wiki.ti.com/.../10099"> 程序将不能放入可用的内存中。  对齐方式运行".bss"大小为0x656b8的定位失败。  可用存储器范围:   TM4C123GH6PM.cmd   /UDMA_SSI_Project_2   第55行   C/C++问题

说明   资源   路径   位置   类型
"="">processors.wiki.ti.com/.../10099"> 程序将不能放入可用的内存中。  对齐方式对".data"大小0x1f252运行定位失败。  可用存储器范围:   TM4C123GH6PM.cmd   /UDMA_SSI_Project_2   第54行   C/C++问题


内存
{
闪存(RX):origin = 0x00000000,length = 0x00040000
SRAM (rwx):origin = 0x20000000,length = 0x00008000
}//



段中的段分配
{
.text:> FLASH
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{} load=flash,run=sram,table (BINIT)
#endif
#endif
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH

.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
}

我该怎么做?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     TM4C123GH6PM 具有32KB 的 SRAM。  

    您的程序的.bss 和.data 段的总大小为530.3kB、超过了 SRAM 的大小、这意味着程序不能放入存储器。

    [引述 USER="Sadullah Zeyrek)]我能做些什么?[/引述]考虑如何减少程序使用的 SRAM 数量、以适应可用的 SRAM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在哪里知道它是530.3 KB? 以及如何减少程序使用的 SRAM 数量?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Spadullah Zeyrek">您知道它是530.3 KB?我在链接器错误消息中添加了.bss 和.data 段的大小;.bss 为 0x656b8字节、.data 为 0x1f252字节。

     530.3 KB 的大小不包括用于堆栈或堆的任何内存。

    [引用 user="Spadullah Zeyrek"]以及如何减少程序使用的 SRAM 数量?如果不看到代码、除了通过静态存储分配(全局变量)减小变量大小之外、无法提出任何特定的建议。

    如果无法减少程序使用的 SRAM 数量、则可能需要选择具有更多 SRAM 的不同微控制器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    除非海报的代码完全是、"已导入"(立即产生这些错误)不应在该计划创建过程中早出现此类"错误警报"? (随着大多数自开发的程序在某种常规的过程中"扩展"、确保"触发警报"、当它们" MCU 容量阈值交叉"时!)

    另一种方法是-可能有一些编程错误、"释放了(不需要的) SRAM 写入的洪流"-使海报陷入了这种困境?  链接器是否能够在程序"运行"之前检测到此条件?   (我对此有疑问-但引入这种可能性似乎是有益的...)

    Chester 写道:"通过静态存储分配来减小变量的"大小"可能是此类变量的"数量"?

    我无法想象任何"合理"的海报程序需要这种数量的 SRAM (~530KB)-因此"移动"到更大的 SRAM 部件可能会"屏蔽"-而不是"解决"-海报的问题...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答、Chester Gillon!

    [引用 user="Chester Gillon"]如果无法减少程序使用的 SRAM 数量,则可能需要选择具有更多 SRAM 的不同微控制器。

    我在某处读到、您可以将 SRAM 扩展到高达500 MB。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Spadullah Zeyrek">我在某处阅读、您可以将 SRAM 扩展到500 MB。 TMC123器件没有外部存储器接口、因此无法扩展 SRAM。

    TMC129器件具有允许使用外部存储器的 EPI 接口。 EPI 接口支持高达512 Mb 的 SDRAM。 TI 提供了连接512Mb SDRAM 的参考设计-请参阅 连接高性能微控制器上的 SDRAM 存储器。 不确定是否有任何配备512 Mbit SDRAM 的开发板。

    对于具有更多片上 SRAM 的微控制  器、Hercules ARM Cortex-R5 TMS570LC4357和 RM57L843器件具有512 KB 的 RAM、Launchpad 可用于此 RAM。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    至今仍未得到答复,而且可能对(其他)有更大的用处和兴趣,这种程序是如何开发的,当它超过 MCU 的 SRAM 容量16倍以上时?   (即542,968 / 32768)

    再次-除非"已导入"- MCU 容量错误应该已经标记为"500KB SRAM -更早!   (BTW -这2个十六进制值(0x656b8和0x1f252)之和 为"0x8490A"-十进制为542、986 -远远超过 SRAM 容量!)

    这里的东西"缺失"或被抑制了、令人惊讶的是(到目前为止)似乎"很少"兴趣...