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.

[参考译文] TMS320F28388D:卡在 asm (" bkpt #0")

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1291452/tms320f28388d-stuck-at-asm-bkpt-0

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

大家好、

客户有问题需要您的帮助:

现在、我使用自构建项目在 CM 内核中实现 UDP 协议的 ENET 通信、触发 CPU1收集的数据通过 ibc3发送给 CM、然后将数据发送出中断代码中的数据。 发送周期是625us、可实现实时不间断收集。 不过、如果持续大约30秒的程序被中断、PC 指针将跳转至下图中位于 f2838xif.c 文件中的代码。

也就是说、调用 mem_malloc 函数时返回的地址为0。 我不知道它为什么返回0。 通常、它将在 malloc 空间后被释放。 应该不会缺少内存。

下图显示了我当前堆和堆栈设置的大小。

谢谢。此致、

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

    Ben、您好!

    你可以检查 程序正在使用的堆的数量吗? 他们是否有机会要求的金额超过这一数额? 我明白你说的内存不缺、我只是想再次检查一下。

    此外、如果可能的话、你能够单步执行 mem_malloc 函数来看看是什么 导致了它返回0? 是否有导致返回的特定条件?

    此致、

    阿米尔·奥马尔

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

    您好、Omer:

    您能检查 程序使用的堆数量吗? 他们是否有机会要求的金额超过这一数额? 我明白你说没有内存短缺,我只是想再次检查。[/报价]

    我需要更改多大的参数? 如何确定堆栈大小是否足够?

    此外,如果可能,您还可以逐步执行 mem_malloc 函数来查看 是什么导致它返回0?

    在 f2838xif.c 文件 mem_malloc 函数中、0返回了下图红色框中的此条件。

    我已检查从数组 ram_heap 分配的存储器。

    此致、

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

    您能否确认此 mem_malloc 的位置在文件层面吗? 一些编译器专家认为、这不是 RTS 编译器库的一部分、堆大小的链接器设置不会影响此函数的可用内存量。

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

    您好、Omer:

    由于我使用 LWIP 的 UDP 协议来实现通信、此  mem_malloc 的函数定义位于 mem.c 文件中、并且连接器的堆确实不会影响函数的内存量。 但是、影响内存的内存是 LWIP 协议实现的 ram_heap 的内存堆。

    此致、

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

    是否可以调试屏幕截图中的第886/887行、以查看条件中的值是如何设置的、以及按照您的理解哪一项不有意义呢? 也许有办法从那里进一步缩小问题的范围。

    由于我使用 LWIP 的 UDP 协议来实现通信,此  mem_malloc 的函数定义位于 mem.c 文件中,实际上连接器的堆不会影响函数的内存量, 但影响内存的内存是由 LWIP 协议实现的 ram_heap 的内存堆。

    我不熟悉 LWIP 协议、这是不是 用于此器件的以太网外设? mem.c 是 TI SDK 中提供的内容吗(如果您可以告诉我其来源、我可以找一位专家来更好地进行调试)?

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

    您好、Omer:

    是否可以在屏幕截图中调试第886/887行的步骤以查看条件中的值是如何设置的以及根据您的理解哪一项是没有意义的? 可能有一种方法可以从那里进一步缩小问题的范围。

    我对它进行了调试、这是因为使用了空间、即、mem->used 的值为1。

    是 TI SDK 中提供的 mem.c 文件(如果您能告诉我其来源、我或许能够找到一位可以更好地对此进行调试的专家)?

    mem.c 文件位于 C2000Ware 库中。 具体位置为:C2000Ware_4_03_00_00\libraries\communications\Ethernet\third_party\lwip\lwip-21.2\ctrad\mem.c src

    此致、

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

    Ben、您好!

    我会尝试让以太网软件所有者尝试帮助解决该问题、但他们目前不在办公室。 请在明天稍后时间回复。

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

    您好、Omer:

    有任何更新吗?

    此致、