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.

[参考译文] TMS320F28035:添加 printf 语句后、程序将无法装入可用存储器错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/590815/tms320f28035-program-will-not-fit-into-available-memory-error-after-adding-printf-statement

器件型号:TMS320F28035

我正在尝试调试 LIN 通信、并希望查看函数内具有断点的值、并打印一些值。 但是、当我添加 printf 语句后、似乎就会耗尽内存。 我认为下面的图片解释了我在内存段上遇到的错误。 FLASHA 和.bss 已过载。 有人能帮我解决这个问题吗? 我可以扩展哪种内存以及多少内存? 这种 b原因 的永久解决方案是什么、因为我想添加5-6个 print 语句以检查控制台中的某些值。

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

    请查看此链接。 processors.wiki.ti.com/.../C28x_Compiler_-_Understanding_Linking
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Mark、我仍然遇到同样的问题。 我无法理解为什么 printf 语句会将其过度加载。 我解决了.bss 问题、但在 CMD 行中仍然存在该问题。

    .text :> FLASHA PAGE = 0

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

    您可以通过3种方式中的任何一种来增加.text 段的内存分配、如 Wiki 页面上所述:
    processors.wiki.ti.com/.../C28x_Compiler_-_Understanding_Linking

    1.您可以将连续存储器段组合成一个块:
    FLASHE_F:原点0x0310000、长度= 0x010000 /*合并的 FLASHE 和 FLASHF */

    2.将.text 段拆分为多个存储器段:
    .text:>> FLASHA | FLASHB | FLASHC、PAGE = 0

    3.将.text 作为一个整体分配到它完全适合的第一个存储器中:
    text :> FLASHA | FLASHB | FLASHC
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好!

    在28035上、标准 printf 需要太多的内存才能发挥作用。

    我建议使用监视窗口进行调试和/或尝试减小 printf 的大小、如 here.processors.wiki.ti.com/.../Tips_for_using_printf 所述

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Thomas。 我正在使用观察窗口、并且还增加了链接器中的存储器部分。