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.

[参考译文] 编译器/TMS320C6747:声明大矩阵/阵列问题

Guru**** 2562120 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/595523/compiler-tms320c6747-declaring-big-matrix-array-problem

器件型号:TMS320C6747

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

您好!

我有几个大矩阵或数组、但我无法声明它们。 例如、当我只定义无符号短数组[2048]时、调试将被破坏 为"找不到源文件 a /tmp/TI_MKLOB429RQi/SRC/exit.c "。 我使用的是 CCS 5.5。

问题是什么?

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

    这是哪个 SDK?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CCS 版本:5.5.0.00077
    使用256 MBit SDRAM 调试 DSP 卡
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、这是裸机代码。
    请查看以下主题:
    e2e.ti.com/.../340008
    e2e.ti.com/.../247877
    希望这对您有所帮助。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为情况并非如此。 我有内存问题。 当我创建未单独的短数组[1024]时、调试将继续进行。 调试过程不会终止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在这种情况下、您最好提供一些有关存储器配置的信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在自动生成的 linker.cmd 中、内存配置如下:
    -args 0x0
    堆0x1000000
    -stack 0x1000000

    存储器

    irom (RX):org = 0x11700000,len = 0x100000
    IRAM (rwx):org = 0x1180000,len = 0x40000
    L3_CBA_RAM (RWX):org = 0x8000000,len = 0x20000
    SDRAM:org = 0xC0000000,len = 0x10000000


    --
    正如我之前提到的、DSP 卡具有256 MBit SDRAM。 即使是该规范、当我将堆栈大小设置为0x5000000调试时也不起作用。 当我减小为1000000后、它将起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好!
    乍一看、所有存储器看起来都足够大、可以处理2048个短路。 尽管我认为您的问题与内存有关、但我无法通过提供的信息看到它。 也许您有一些最小的测试案例可以分享、因此论坛人员可以仔细查看。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    假设 SDRAM 为256Mbit (如位所示)、即32MiB 或0x02000000字节。 然后、链接器命令将为:
    SDRAM:org = 0xC0000000,len = 0x02000000
    定义0x05000000堆栈比可用存储器大。 0x01000000的堆栈是可用存储器的一半。 我假设您需要一个巨大的堆栈来将您的数组声明为局部变量。 链接器将无法捕获分配问题。 我建议将您的数组声明为全局变量、以便链接器检查您的内存分配。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请注意、如果您添加编译器选项-m 编译二进制文件时、它将创建一个映射文件、指示每个存储器部分的确切使用量和未使用量。 您可以根据每个段中可用的内容修改代码、数据段和堆栈大小的放置方式。

    如果您需要建议、请生成地图文件并将其发布在此处、以便我们可以提供指导。

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

    e2e.ti.com/.../DSP.txtI假设、您提到的文件是.map 文件、如下所示: