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.

[参考译文] TMS320F28075:TMS320F28075

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1123137/tms320f28075-tms320f28075

器件型号:TMS320F28075

我使用的是 CCS 版本9.0.1、XDCtools 3.32.0.06_core、TI RTOS 2.16.1.14。

使用编译器 v18.12.1.LTS 时、更改内存时会遇到不同的运行时问题:

例如、

-当使用记录数量较少的 Logger Buffer 时,堆缓冲区在主启动时已进行负分配,但堆缓冲区失败。

-如果将默认堆缓冲区增加太多、则会导致代码在到达 main 之前卡住。

-将堆内存大小增加到超出特定级别会导致类似的问题。

显然、存储器空间没有问题、 我通过 CMD 文件分配、并具有足够的可用空间

使用编译器 v18.1.0.LTS 时、这些问题消失。

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

    您好、Dudi、

    感谢您的参与。 我已将此事指派给了我们的专家,专家将随后作出答复

    此致、

    Peter

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

    我认为我们需要进行一些调试、以尝试缩小正在发生的情况。 从您观察到的情况来看,在到达 main()之前,它是否看起来有问题? 比如、c_int00或某些 SYS/BIOS 启动函数出现问题?

    您是否尝试过22.6.0.LTS 等任何更新的编译器版本、以查看问题是否仍然存在?

    惠特尼

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

    我尝试过许多其他编译器、包括22.6.0.LTS。

    18.1.0.LTS 下的编译器工作正常、但其他编译器有问题。

    v22.6.0.LTS 需要更新的 XDCtools、但我不想进行许多更改。

    器件和编译器与 XDCtool 之间是否存在兼容性列表?

    下面是描述 XDCtools 与 CCS 兼容性的 html。

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

    使用编译器22.6.0.LTS 时:

    无法 使用 XDCtools 3.55.0.11进行编译、但可以 使用3.32.0.06进行编译。 (虽然我收到了要求使用大于3.50的 XDCtools 的错误消息:()

    2.当使用 XDC 3.32.0.06时、它运行正常、直到我将一个堆内存从128更改为512。

    这不是空间问题,我有足够的空间。

    为什么将堆内存从128增加到512会导致运行时失败、可能是堆出现故障  

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

    您能描述运行时失败吗? 它是在 BIOS_start()之后发生的,还是在读取 main()时遇到问题?

    您使用的是 COFF 还是 EABI?

    惠特尼

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

    故障发生在 main 之前、我在 ROV 下看到一些堆具有负值。 有时故障发生在 BIOS_start 之后。

    看起来它与编译器分支相关、它一直工作到编译器版本18.1.0.LTS、但从版本18.9.0.STS 开始、问题出现。

    我正在使用 COFF。

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="529718" url="~/support/microcontrollers/C2000-microcontrollers-group/C2000/f/C2000-microcontrollers-forum/1123137/tms320f28075-tms320f28075/4171816#4171816]\n 故障发生在 main 之前、我在 ROV 下看到一些堆具有负值。 有时故障发生在 BIOS_start 之后。

    意味着相同的.out 文件发生故障时、每次运行代码时、可能会在代码中的不同点失败? 或者,您是否对代码进行了一些更改,以确定代码是否将其转换为 main()?

    具有负值的堆意味着什么? 什么字段? 您是否介意共享 ROV 的屏幕截图?

    惠特尼

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

    很抱歉这么简约。

    更改代码会导致不同的故障、例如增大我使用的堆内存大小、导致卡在 main 之前。 日志缓冲区记录的不同值可能会导致 堆缓冲区的 ROV 负值中出现。 我确定10条20个字的记录,并在位于 main()的乞讨时看到-9。

    看起来与编译器版本 18.9.0.STS 不同、这会导致我的代码中出现不同的内存分配问题。

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

    您能否在 HeapMem_init()函数中放置一个断点、并尝试查看堆如何使用18.9.0.STS 和18.12.1.LTS 进行初始化之间是否存在差异? 我想知道对象初始化是否不正确、或者以后是否出现错误。

    您是否认为您可能能够创建重现此问题的测试项目? 比如、如果你导入 SYS/BIOS"内存"示例并使用相同的选项配置堆、你能不能让它们给出相同的错误行为?

    惠特尼